Alternative | Full Speed (12 Mbit/s) | High Speed (480 Mbit/s) |
---|---|---|
0, EP2: | Bulk, 64-Byte-Pakete | Bulk, 512-Byte-Pakete |
1, EP2: | Isochron, 1020 Byte pro Rahmen | Isochron, 512 Byte pro Mikrorahmen |
2, EP2: | nicht verfĂĽgbar | Interrupt, 512 Byte pro Mikrorahmen |
Abtastrate | 250 kSa/s (USB-Maximum) | 1 MSa/s (etwa ADU-Maximum) |
Nettodatenrate | 1000 kByte/s (1000 Byte pro Rahmen) | 4000 kByte/s (500 Byte pro Mikrorahmen) |
Nach üblicher Manier gibt es eine LED, welche permanent leuchtet, sobald der USB-Baustein "konfiguriert" ist, also vom System aktiviert wurde - und nicht schläft. Sie blinkt langsam bei EP0-Transfers und schnell bei eigentlicher Datenübertragung. Eine zusätzliche (blaue) Leuchtdiode zeigt den aktivierten High-Speed-Modus an und blinkt bei USB-Fehler (habe ich noch nicht blinken sehen).
Beim Betrachten des
Quelltextes werden Sie sich ĂĽber die fehlende
USB-Interruptserviceroutine wundern. Das ist Absicht und letztlich
genau so wie es Cypress vorgemacht hat.
Die dortigen Interruptroutinen setzen einfach ein Bit, das im
Hauptprogramm (siehe main, mainloop
) zyklisch abgefragt wird.
So wie in diesem Quelltext dargestellt geht es aber noch einfacher.
Die simplen Makros LD
und ST
,
definiert in
MAKROS.I51 ersparen Schreibarbeit beim Zugriff auf's XRAM.
Dabei wird das Register R0 (und nicht DPTR) zur Adressierung benutzt;
MPAGE ist auf 7Eh fixiert, wo fast alles adressierbar ist.
Die symbolischen Parameter NEXT
(=nächste) und PREV
(=vorherige) verkörpern den Zugriff auf das nachfolgende bzw.
vorherige Byte mit etwas kĂĽrzerem und schnelleren Code.