Habe folgenden Link gefunden: http://cesko.host.sk/ Mit Atmel emuliertes USB Nun stellt sich mir die Frage, ob es so etwas auch PIC basierend gibt (Software emuliert, nicht hardwarebasierend). Google spuckt nichts aus Im Dankeschön voraus
Wie wäre es, den Quellcode runterzuladen und auf PIC zu portieren? Oder suchst Du mehr die fertige Lösung? Wirst wohl in dem Fall nicht ums selbermachen rumkommen.
Habe noch nie mit einem Atmel gearbeitet. Nur auf PICS. Gibt es ein Program, um den Code zu konvertieren? Bin nur durch Zufall auf die Seite gelangt Würde aber mehr die fertige Lösung bevorzugen
Ich kenne mich mit PICs nicht aus, aber da ganze USB Timing ist sehr kritisch. Ich denke nicht, dass PICs schnell genug sind. Wenn ich mich recht erinnere, laufen die PICs mit 1/3 oder 1/4 des Quarztaktes. Der Takt müsste dann etwa 20MHz aufwärts betragen
OK, dann wird es kein Problem sein. Allerdings wird das Umschreiben nicht einfach, da die Befehle warscheinlich Timing relevant sind und beim PIC die Befehle andere Ausführungszeiten haben...
Auf der Seite wird auch ein USB STICK beschriebn Woher bekomme ich so einen Stecker????? Bei RS und CONRAD gibts ihn nicht
USB Stecker und Buchsen sollte man problemlos bei Segor bekommen. Notfalls muss man halt ein Kabel recyceln ... Der "Igor Plug" ist kein "USB Stick", sondern ein Infrarot-Empfänger.
@Benedikt: Manche PICs gibts auch mit 40MHz, also 10MIPS. Die 10MIPS müssen aber nicht einfach nur reichen, sondern auch ein Vielfaches von 1,5MHz sein (USB Lowspeed = 1,5MBit/s). Also entweder 9MIPS oder 10,5MHz (leicht übertakten). Ob man die PICs auch mit 48MHz übertakten weiß ich nicht. @Fred51: Was meinst Du mit "USB-Stick"? USB Buchsen und Stecker gibts auch bei Conrad. Markus
Hallo, zusammen. Das mit den MIPS ist eine werbeträchtige Sache. Was bedeutet MIPS eigentlich? Million Instructions Per Second. Also, wieviele Millionen INSTRUKTIONEN pro Sekunde durch den Core durchgeschleust werden. Nun, bei einer RISC-Architektur müssen um Einiges mehr an Instruktionen durchgeschleust werden, um zu demselben Ergebnis zu gelangen, als bei einer (z. B.) CISC-Architektur. Somit ist die blosse Betrachtung der MIPS reine Augenwischerei. Mittlerweile haben einige Hersteller das erkannt, und bieten uCs an, welche auf einer Mischung aus RISC und CISC basieren. Die sind wirklich schnell. Nur so ein Gedanke. Jörg.
@Fred51 Wenn du die Stecker meinst, die an jedem gängigen USB Stick dran sind, dann hat Reichelt die mittlerweile ins Programm aufgenommen: http://www.reichelt.de/inhalt.html?SID=14QWrdG9S4AQ4AAE0GfvU84e88764b691c35f6c3f427ffdab7e05;ACTION=3;LASTACTION=2;SORT=artikel.artnr;GRUPPE=C126;GRUPPEA=C12;WG=0;ARTIKEL=USB%2520AGF;START=0;END=16;STATIC=0;FC=6;PROVID=0;TITEL=0 http://www.reichelt.de/inhalt.html?SID=14QWrdG9S4AQ4AAE0GfvU84e88764b691c35f6c3f427ffdab7e05;ACTION=3;LASTACTION=2;SORT=artikel.artnr;GRUPPE=C126;GRUPPEA=C12;WG=0;ARTIKEL=USB%2520AWF;START=0;END=16;STATIC=0;FC=6;PROVID=0;TITEL=0 Gruß und Frohe Weihnachten Thorsten
@Markus: Wer sagt denn, dass dein USB die vollen 1,5 Mbit/s ausnutzen muss ? du kannst ihn auch mit 700kb betreiben. (denk ich mal) wiso musses denn umbedingt softwaremässig sein ? schau dir mal den chip an: FT8U245BM (http://www.myplace.nu/mp3/files/ds245b10.pdf) Der hat nen kompletten USB Stack, und ist superleicht paralell anzusteuern !
@Axos: Nein, man kann USB nicht mit weniger als 1,5MBit/s betreiben. Die Nettodatenrate kann natürlich kleiner sein, aber die Bruttorate muß 1,5MBit/s (oder 12 oder 480MBit/s) betragen. Markus
@Jörg: MIPS bedeutet bekanntlich Meaningless Indication of Processor Speed. Aber es geht hier garnicht so wirklich um hohe Geschwindigkeit, sondern darum, daß man a) die Befehlsdauer sehr genau vorhersagen kann und b) genügend Zeit für die Ein-/Ausgabe der einzelnen Bits bleibt. Ersteres ist bei einem AVR (und wahrscheinlich auch bei einem PIC) relativ einfach, bei einer modernen CPU mit Cache und Branch Prediction aber eher aussichtslos. Natürlich sind MIPS-Werte mit Vorsicht zu genießen, aber ich denke nicht, daß sich AVR und PIC hier so grundlegend unterscheiden sollten. Igor schreibt selbst, daß ein PIC mit 6MIPS dafür zu langsam ist. Markus
Ein nur 6MIPS PIC hat wohl kaum eine Chance. Für den USB wird ja der AT90S2313 schon mit 12MHz übertaktet (10MHz erlaubt), damits gerade so klappt. Dagegen dürfte es ein 8051 mit Sicherheit schaffen, z.B. der C8051F300. Mit einem 24MHz Quarz hat der dann 24MIPS und ist noch nicht mal übertaktet. Peter
Ein 2313 ist hier eigentlich auch nicht die CPU der Wahl, sondern eher der Mega8. Der ist bei 12MHz auch nicht übertaktet. Die Fragen hier wären aber eher: - Gibt es eine CPU, die das mit 6MIPS (4 Takte pro Bit) schaffen kann? CPUs mit eingebautem USB gelten dabei natürlich nicht. - Kann man die 24MIPS des C8051F300 sinnvoll ausnutzen? Vermutlich nicht, das Timing muß ja trotzdem noch stimmen und seinen eigenen Code in den bestehenden Code "einzuweben" ist wohl nicht nur ein bischen häßlich. Markus
@peter dannegger : "Dagegen dürfte es ein 8051 mit Sicherheit schaffen, z.B. der C8051F300. Mit einem 24MHz Quarz hat der dann 24MIPS und ist noch nicht mal übertaktet." Wird bei den xx51'ern nicht der Takt vorher heruntergeteilt?
Nö, nicht bei allen. Moderne Hersteller wie AD oder Cylabs haben 1-Takt-8051er im Programm mit bis zu 100 Mips. Da kommt kein AVR oder PIC mit.
wegen den mistverständnissen, ein pic läuft nicht mit 1/4 des quartztakts, unglückliche übersetzungen der struktur haben dieses mysterium heraufbeschworen. zwar ist es richtig das ein single instruction befehl bis zu 4 takte dauern kann, aber es wird geschwindigkeitsfördernderweise trotzdem brav mit jedem takt ein befehl abgearbeitet. d.h. in 4 taktzyklen auch 4 befehle. auf der microchip seite hab ich mal ein superprima gemachtes animiertes tutorial gesehn, das die vorteile der verschiedenen strukturen hervorhebt. und damits nicht ganz OT is, es kommt in den nächsten wochen eine 18Fxxxx generation, die USB hardwaremäßig unterstützt.(gabs bisher nur bei den nonflash 18Cxxxx-typen) grüße, & ein schönes fest für alle die sich ein solches wünschen :-)
Die "instruction cycle time" bei einem PIC16F84 ist 4/Fosc, somit benötigt ein Befehl auf diesem z. B. mit 4 MHz getakteten PIC 1µs.
also der PIC brauch für den ersten Befehl 4 cycle (bei den meisten befehlen) aber für den nächsten brauch er noch einen cycle mehr. Dh brauch der PIC 3+N cyclen für N Befehle, aber dabei ausgenommen sind Sprungbefehle, bei diesen wird erst die Pipeline gelehrt dh gewartet das alle befehle fertigabgearbeitet sind und beginnt dann nach dem Sprung wieder neu. mfg und schöne feiertage Matthes
@Andi, das C8051F300 auf DIL-14 Teil ist ja echt geil. Weißt Du, was sowas kostet ? Peter
Der PIC16F628-20a kann ja mit 20Mhz getaktet werden Das ganze durch 4 sind dann etwa 5 MIPS also für lowspeed vollkommen ausreichend. Also mit der Hardware müsste es funktionieren, bleibt nur mehr die Software. Gibt es Programme um den AVR Quelltext in "PIC" zu übersetzen???
@Fred51 Liest du eigentlich auch was man dir schreibt ? Das ganze ist Timing kritsch, der Takt muss ein Vielfaches der 1,5MBit sein (1,5->5 ist nicht gerade ein Vielfaches....) Außerdem kan man es nicht 1:1 übersetzen, denn die PIC Befehle haben andere Ausführungszeiten als die AVR Befehle. Und das mit dem Übersetzen haut deshalb nicht hin. Für sowas gibt es deshalb C, das kann man mehr oder weniger gut für jeden Controller kompliieren.
@Fred51: Ein 16F84 mit 6MIPS ist dafür zu langsam. Da kann ich mir nicht vorstellen, daß ein 16F628 mit 5MIPS schnell genug sein soll. Markus
Welchen Sinn soll es eigentlich machen, das USB-Protokol in SW nachzubilden? Wenn die Komunikation dann den Prozessor zu 100% beansprucht, läuft doch nicht mehr. Bei kommerziellen Projekten mag die Ersparniss beim ein oder anderen Projekt vernünfig erscheinen, aber im privaten bereicht kann man es sich doch leichter machen. Zumal das notwendige Know-How nicht vorhanden ist. Die Implementierung einer fertigen Lösung kostet nur ein paar Euro, und spart Stunden, Tage, Wochen an Entwicklungszeit.
Für viele Anwendungen (etwa Fernbedienungsempfänger) braucht man nicht viel Rechenzeit. So ein AVR Mega8 kostet um die 3, für einen extra FT245 zahlt man 6 - und den Microcontroller braucht man trotzdem. Die Igor-Lösung kann man mal geschwind auf eine Lochrasterplatine aufbauen, die meisten USB-Chips gibts dagegen nur im SMD-Gehäuse. Natürlich ist das Igor-USB nicht die Lösung für alle USB-Probleme dieser Welt, aber man kann damit schon einige typische Anwendungsfälle lösen. Markus
?? in welcher Prog Sprache ist das Prog. "AVR to USB Tester" geschrieben ( PC- Programmiersprache ) kann das jemand aufgrund der Oberfläche erkennen ?? Michael
Normaler weise verwenden Programme die mit 1,5MBit (Low-Speed) arbeiten die HID (Human Interface Device) Treiber, die schon in Windows enthalten sind. Soweit ich mal gelesen haben, kann man die in jeder Programmiersprache ansprechen. Sogar von Visual Basic aus.
@Michael: Die Oberfläche ist wohl in Pascal geschrieben, der Treiber in C und das AVR-Programm in Assembler. Igor beschreibt aber, wie man auf die DLLs zugreift, also kann man das praktisch in jeder Sprache ansprechen. Markus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.