Forum: Mikrocontroller und Digitale Elektronik Atmel goes USB


von Fred51 (Gast)


Lesenswert?

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

von sparks (Gast)


Lesenswert?

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.

von Fred51 (Gast)


Lesenswert?

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

von Benedikt (Gast)


Lesenswert?

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

von Bernd (Gast)


Lesenswert?

10MIPS schaffen die PIC18 aber auch.

von Benedikt (Gast)


Lesenswert?

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...

von Fred51 (Gast)


Lesenswert?

Auf der Seite wird auch ein USB STICK beschriebn
Woher bekomme ich so einen Stecker????? Bei RS und CONRAD gibts ihn
nicht

von Rufus T. Firefly (Gast)


Lesenswert?

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.

von Markus (Gast)


Lesenswert?

@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

von Jörg (Gast)


Lesenswert?

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.

von Thorsten (Gast)


Lesenswert?


von Axos (Gast)


Lesenswert?

@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 !

von Markus (Gast)


Lesenswert?

@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

von Markus (Gast)


Lesenswert?

@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

von Peter D. (peda)


Lesenswert?

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

von Markus (Gast)


Lesenswert?

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

von Bernd (Gast)


Lesenswert?

@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?

von Andi (Gast)


Lesenswert?

@Bernd: Das dürfte Deine Frage beantworten:
http://www.zft.de/cygnal1.htm

Gruß
Andi

von Johannes (Gast)


Lesenswert?

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.

von martin m. (Gast)


Lesenswert?

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 :-)

von Thorsten (Gast)


Lesenswert?

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.

von Matthes (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

@Andi,

das C8051F300 auf DIL-14 Teil ist ja echt geil.

Weißt Du, was sowas kostet ?


Peter

von Benedikt (Gast)


Lesenswert?

ca. 5€ bei Digikey

von Fred51 (Gast)


Lesenswert?

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???

von Benedikt (Gast)


Lesenswert?

@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.

von Markus (Gast)


Lesenswert?

@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

von Bernd (Gast)


Lesenswert?

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.

von Markus (Gast)


Lesenswert?

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

von Michael (Gast)


Lesenswert?

?? in welcher Prog Sprache ist das Prog. "AVR to USB Tester"
geschrieben ( PC- Programmiersprache )
kann das jemand aufgrund der Oberfläche erkennen ??

Michael

von Bernd (Gast)


Lesenswert?

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.

von Markus (Gast)


Lesenswert?

@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
Noch kein Account? Hier anmelden.