entsprechenden Gerätetreiber laden.
Ein letztes SETUPPaket der Emuneration (
und Aktivieren der zwei UserEndpunkte.
Die Firmware antwortet auch noch auf Statusanfragen (
Firmware nicht unterst tzte Anfragen des PC mittels SETUPPaket werden mit STALL
abgewiesen.
Anwendungskommunikation :
Folgende Aktionen können nun von der PCSoftware gestartet werden:
a)
Ein und Ausschalten einzelner Bits (4 LEDs an PD4PD7 und das BlinkFlag
PD0) eines Ports (1 Byte) ber Endpunkt 1 (OUTAktion (PC Gerät)).
b)
Analoge Daten (AnalogDigitalwandler) ber den FIFO des Endpunkt 2 einlesen (IN
Aktion (Gerät PC)).
Zur Kommunikation mit den Endpunkten:
Control Endpunkt 0
SETUP-Abschnitt:
R
S
T
Das
eceived
E
U
(SETUPAbschnitt). In der Firmware wird ein Interrupt ausgelöst. In der Interruptroutine
wird ein Unterprogramm zur Behandlung des SETUPPakets aufgerufen. In diesem
Unterprogrsamm löscht die Firmware mit
das SETUPPaket zu bestätigen (ACK) und den FIFOPuffer des Endpunktes zu löschen.
DATA IN und STATUS-Abschnitt:
Das TXINIFlag (Transmitter Ready InterruptFlag) zeigt, dass der FIFOPuffer frei ist und
vom Controller gef llt werden kann. Nachdem dies geschehen ist wird mit
CBI(
,
UEINTX
TXINI
der FIFO wird wieder gelöscht, so dass er neue Daten aufnehmen kann. Wurden mehr als 8
Byte angefragt, so können mehrere Pakete vor dem StatusAbschnitt gesendet werden.
Dazu muss jedes Mal berpr ft werden ob der FIFOSpeicher leer ist (TXINI = 1).
Das erste OUTPaket vom PC wird von der Hardware automatisch mit NAK (PC soll warten)
beantwortet. Das nächste OUTPaket setzt das RXOUTIFlag (
I
nterrupt). Das Flag teilt mit, wann das ZeroLengthPaket vom PC angekommen ist. Per
2 Das Behandeln dieser Anfrage besteht nur um unschöne Fehlermeldungen bei lsusb -v unter Linux zu
vermeiden (kann bei Bedarf gelöscht werden).
3 cbi (UEINTX,RXSTPI) steht f r lösche Bit RXSTPI im SFRegister UEINTX.
cbi uns sbi (setze Bit) existieren so nur f r die untersten 32 SFRegister. Alle USB Register befinden sich im
erweiterten Bereich und m ssen mittels direkter SRAM Adressierung und Maskierung angesprochen
werden.
2
Mikrocontrollertechnik
P
I
nterrupt (RXSTPI) Flag wird gesetzt wenn ein SETUPPaket eintrifft
das bis zu 8 Byte große Paket (FIFOGröße EP0) abgeschickt und
)
Set_Configuration
Get_Status
CBI(
,
UEINTX
RXSTPI
) bewirkt das Initialisieren
).
2
Andere, von dieser
3
das InterruptFlag um
)
R
eceived
OUT
Firmware AT90USBKEY
2010
Data