Einzige wichtige Aktion im Hauptprogramm ist der Aufruf des Unterprogramms
(
usb_init_device
Im Hauptprogramm wird ebenfalls der ADWandler initialisiert. Im Assembler muss auch
die Vektortabelle im Hauptprogramm initialisiert werden.
In der USBBibliothek werden die Interrupts abgefangen und behandelt, die
Basisinitialisierungen des USBTeils im ATmega vorgenommen (Treiberfunktionen) , die
Enumeration wird durchgef hrt und die die Endpunkte werden behandelt
(Anwenderkommunikation).
Die Interrupt-Service-Routinen
In der USBBibliothek befinden sich
252ff).
Einmal wird der
Vektor kann von 21 verschiedenen Interrupts (General, Device und Host)
angesprungen werden. Uns interessiert allerdings nur der
(EORSTI), welcher das Ende des vom PC auslösten Reset
Gerätes anzeigt (das Gerät hat den Reset Zustand wieder verlassen).
Die zweite ISR behandelt den
Vektor (USB COM Interrupt)
die Endpunkte betreffen
(RXSTPI), f r den bzw. die
4 Der PC zieht dazu beide Datenleitungen gleichzeitig auf Null.
5 Da jeder dieser Interrupts an allen sieben Endpunkten auftreten kann ist es wichtig, vor der Behandlung
den richtigen Endpunkt mit dem ENUM Register auszuwählen.
6
Mikrocontrollertechnik
), das sich in sr_usb.asm (usb_srs.c) befindet.
Die USB-Bibliothek
(SR_USB.asm, usb_srs.c)
zwei Interrupt-Service-Routinen
USB GENeral Interrupt Vektor
USB Endpoint/Pipe COMmunication Interrupt
5
. F r
Endpunkt 0
OUT-Endpunkte
. Hier interessieren uns nur drei Interrupts, welche
ist das der
der
(Datenblatt S
behandelt. Dieser Interrupt
E
nd
O
f
R
e
S
e
T
4
nach dem Anstecken des
R
eceived
S
E
T
U
P
R
eceived
OUT
Data
Firmware AT90USBKEY
2010
INIDEV
I
nterrupt
I
nterrupt
I
nterrupt