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...
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.
@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?
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 :-)
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
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.
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