Herunterladen Inhalt Inhalt Diese Seite drucken

Werbung

Mikrocontrollertechnik
2010
Firmware AT90USBKEY
Kurze Beschreibung der Firmware
1
Der   AT90USBKEY   ist   eine   billige   kleine   Entwicklungsplatine   von   ATMEL   mit   einem 
AT90USB1287­Controller.
Die Firmware besteht aus 2 Dateien (Hauptprogramm, USB­Bibliothek).
Es   wird   nur   eine   Konfiguration   und   ein   Interface   verwendet.   Es   stehen   neben   dem 
zwingend   vorgeschriebenem   Endpunkt   Null   (EP0)   noch   zwei   weitere   Endpunkte   zur 
Verf gung. Ein OUT­Endpunkt (EP1) erlaubt dem PC Daten zum Gerät zu senden. Ein IN­
Endpunkt (EP2) ermöglicht es dem PC Daten vom Gerät zu lesen.
Hauptprogramm
:
Eine   blinkende   LED   zeigt,   dass   die   Firmware   läuft.   Mit   einem   Flag   kann   das   Blinken 
abgestellt werden.
USB-Bibliothek
Treiberfunktionen:
Nach dem Anstecken f hrt der PC (Host) ein Reset das Gerät (device) aus. Der USB­Teil 
und die interne PLL des AT90USB1287 werden eingeschaltet und initialisiert. Tritt dann ein 
End   of   Reset   Interrupt   (EORSTI)   auf,   so   kann   der   bei   jedem   USB­Gerät   vorhandene 
bidirektionelle Control Endpunkt 0 (EP0) initialisiert und aktiviert werden.
Als nächstes sendet der PC ein SETUP­Paket an Endpunkt 0, das durch ein Received SETUP 
Interrupt (RXSTPI) erkannt wird. 
Enumeration:
Standard Requests werden vom PC mittels SETUP­Paketen erfragt.
Get_Deskriptor
Das erste SETUP­Paket (
) des PC erfragt (Adresse Null, Endpunkt 0) 64 
Byte   des   Geräte­Deskriptor   um  die   maximale   Paketgröße   von  Endpunkt  0   zu  ermitteln. 
Nach 8 Byte (hier befindet sich die bMaxPacketSize) bricht der PC ab und f hrt ein neues 
Reset des Gerätes aus.
Set_Adress
Mit dem folgenden SETUP­Paket (
) sendet der PC eine Geräte­Adresse. Diese 
wird von der Firmware dem Gerät zugewiesen. Das dritte SETUP­Paket erfragt die 18 Byte 
des   Geräte­Deskriptors.   Dann   werden   mit   einem   vierten   SETUP­Paket   die   9   Byte   des 
Konfigurations­Deskriptors erfragt. Dieses vermittelt die Gesamtlänge des Konfigurations­, 
Interface­   und   aller   Endpunkt­Deskriptoren.   Ein   f nftes   SETUP­Paket   erfragt   all   diese 
Deskriptoren (hier 5) in einer Aktion. Weitere SETUP­Pakete erfragen erfragen die 4 String­
Deskriptoren.
Der   PC   kann   jetzt   anhand   von   Vendor­ID   und   Product­ID   und   der   ".INF"   Datei   den 
1 Siehe auch „usb_einfuehrung.pdf"
Firmware AT90USBKEY
1

Werbung

Inhaltsverzeichnis
loading

Inhaltszusammenfassung für Atmel AT90USBKEY

  • Seite 1 2010 Firmware AT90USBKEY Kurze Beschreibung der Firmware Der   AT90USBKEY   ist   eine   billige   kleine   Entwicklungsplatine   von   ATMEL   mit   einem  AT90USB1287­Controller. Die Firmware besteht aus 2 Dateien (Hauptprogramm, USB­Bibliothek). Es   wird   nur   eine   Konfiguration   und   ein   Interface   verwendet.   Es   stehen   neben   dem ...
  • Seite 2: Zur Kommunikation Mit Den Endpunkten

        Data  nterrupt). Das Flag teilt mit, wann das Zero­Length­Paket 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 SF­Register UEINTX. cbi uns sbi (setze Bit) existieren so nur f r die untersten 32 SF­Register. Alle USB Register befinden sich im  erweiterten   Bereich   und   m ssen   mittels   direkter   SRAM   Adressierung   und   Maskierung   angesprochen  werden. Firmware AT90USBKEY...
  • Seite 3: Data Out Und Status-Abschnitt

      Dieses   wird   von   der   Hardware   bestätigt.   Gleichzeitig   setzt   die   Hardware   das  FIFOCON­Flag (FIFO CONtrol Bit). In der Firmware wird ein RXOUT-Interrupt ausgelöst.  In   der   Interruptroutine   wird   ein   Unterprogramm   zur   Behandlung   des   OUT­Pakets  aufgerufen. In diesem Unterprogrsamm löscht die Firmware mit   CBI( UEINTX RXOUTI das Flag um das Interrupt zu bestätigen. Das RWAL­Flag im gleichen SF­Register zeigt den  Zustand des FIFO.  RWAL = 1 bedeutet, dass Daten im FIFO vorhanden sind. Sind keine  Daten vorhanden, so löscht die Hardware das Flag. Die Firmware  berpr ft RWAL und liest  Firmware AT90USBKEY...
  • Seite 4 Das TXINI­Flag (Transmitter Ready Interrupt­Flag) zeigt, dass der FIFO­Puffer frei ist und  vom Controller gef llt werden kann. Gleichzeitig wird das  FIFOCON­Flag (FIFO CONtrol  Bit) von der Hardware gesetzt. Nachdem dies geschehen ist wird mit   sofort gelöscht. Der Controller  CBI( UEINTX TXINI f llt   dann   den   FIFO   und   erlaubt   mit   dem   Löschen   des  FIFOCON­Flag  ) dem Controller die Daten abzuschicken. Besteht der Endpunkt  CBI( UEINTX FIFOCON aus einer Dobbelspeicherbank, so wird automatisch auf die nächste Bank umgeschaltet. (Das RWAL­Flag zeigt auch hier den Zustand des FIFO. RWAL = 1 bedeutet, dass der FIFO  voll ist.) Firmware AT90USBKEY...
  • Seite 5: Übersicht Zur Firmware

    Mikrocontrollertechnik 2010 Quelle: Datenblatt AT90USB128 Übersicht zur Firmware Das Hauptprogramm (at90usbkey_firmware...) Im Hauptprogramm zeigt eine LED ( ) durch Blinken mit 1 Hz, dass dieses arbeitet. Ein  Flag ( ) ermöglicht es das Blinken abzuschalten. Dieses Flag kann später  ber  BLINKFLAG den Endpunkt 1 mit   ab. bzw. eingeschaltet werden. Firmware AT90USBKEY...
  • Seite 6: Die Interrupt-Service-Routinen

      nterrupt  (EORSTI), welcher das Ende des vom PC auslösten Reset  nach dem Anstecken des  Gerätes anzeigt (das Gerät hat den Reset Zustand wieder verlassen). Die zweite ISR behandelt den  USB Endpoint/Pipe COMmunication Interrupt  Vektor (USB COM Interrupt) . Hier interessieren uns nur drei Interrupts, welche  die Endpunkte betreffen . F r  Endpunkt 0  ist das der  eceived    nterrupt  (RXSTPI), f r den bzw. die  OUT-Endpunkte  der  eceived   Data  nterrupt  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. Firmware AT90USBKEY...
  • Seite 7   f r   Endpunkt   2   bewirkt   den   Aufruf   des   Unterprogramms 6 cbi (UDINT,EORSTI) steht f r lösche Bit EORSTI im SF­Register UDINT. cbi uns sbi (setze Bit) existieren so nur f r die untersten 32 SF­Register. Alle USB Register befinden sich im  erweiterten   Bereich   und   m ssen   mittels   direkter   SRAM   Adressierung   und   Maskierung   angesprochen  werden. Firmware AT90USBKEY...
  • Seite 8: Die Unterprogramme

    Als   nächstes   muss   die   PLL   gestartet   werden.   Die   PLL   Frequenz   wird   aus   einem   2 MHz  Signal   durch   Multiplikation   mit   24   erzeugt.   Die   2 MHz   werden   durch   Teilen   der  Firmware AT90USBKEY...
  • Seite 9 Nach   der   Auswahl   des   Endpunkts   mit  UENUM  wird   dieser   aktiviert  ).Über die jeweiligen Bits in  UECFG0X  und  UECFG1X  werden Typ,  SBI( UECONX EPEN Richtung, FIFO­Größe und die Art des FIFO­Puffers (einzeln oder doppelt) festgelegt. Mit  dem ALLOC­Bit wird der Speicher dem Puffer zugewiesen ( SBI( UECFG1X ALLOC 7 Wie aus dem Flussdiagramm zur Aktivierung eines Endpunkt S269 im Datenblatt ersichtlich kann mit dem  Bit  CFGOK  im Register  UECFG0X  dann noch  berpr ft ob die Zuweisung erfolgreich war. Dies wird hier  nicht unterst tzt. Firmware AT90USBKEY...
  • Seite 10: Die Enumeration Mit Setup

    Gerätedeskriptor,   ein   Konfigurationsdeskriptor,   ein   Interfacedeskriptor   und   mehrere  Endpunktdeskriptoren erfragt.  Zusätzlich  können  noch  Stringdeskriptoren Auskunft  ber  das Gerät oder den Hersteller liefern. SETUP (usb_ep0_setup) Dieses Unterprogramm beantworte SETUP­Pakete an Endpunkt 0 f r die Enumeration. Das  8 Byte große SETUP­Paket wird eingelesen, im SRAM abgespeichert und mit ACK bestätigt  (RXSTPI löschen). Liegt ein Standard Request vor, so wird es sich um einen von den vier in  unserer   Firmware   unterst tzten   Anfragen   handelt.   Falls   nicht   antwortet   das   Gerät   mit  STALL. Firmware AT90USBKEY...
  • Seite 11 String­Deskriptor   handelt.   Die   zu   bermittelnden   Deskriptoren  befinden   sich   im   Flash.   Ein   Unterprogramm   SNDDES )   k mmert   sich   um   das   Versenden   der  usb_send_descriptor Firmware AT90USBKEY...
  • Seite 12 SNDDES (usb_send_descriptor) In einer Schleife wird der FIFO (Endpunkt 0) mit dem Deskriptor gef llt. Tritt dabei eine  Unterbrechung durch den PC (RXOUT Interrupt) auf, so wird abgebrochen. Im Assembler  befindet sich die Anzahl der zu schreibenden Bytes in r18, der Zeiger auf den Deskriptor in  Da der FIFO 8 Byte groß ist, wird er mit jeweils 8 Byte gef llt. Dann wird die Anfrage des  PC  mit  einem  ZLP  bestätigt und   darauf  gewartet,  dass  die  Speicherbank  wieder   frei   ist  (TXIN Interrupt Flag) oder die Daten erfolgreich beim PC angekommen sind (ZLP vom  PC, RXOUT Interrupt Flag), bevor die nächsten 8 Byte gef llt werden. Sind alle angefragten Bytes im FIFO gelandet, so werden die restlichen Bytes abgeschickt,  außer es war ein Vielfaches von 8 Byte angefragt worden. Es wird dann das ZLP vom PC  gewartet und dieses dann mit einem ACK bestätigt. 8 Wird von Hardware gesetzt wenn OUT Daten vorhanden sind. 9 Wird von Hardware gesetzt wenn IN Anfrage von PC mit NAK beantwortet wurde. Firmware AT90USBKEY...
  • Seite 13 Die   folgenden   zwei   Unterprogramme   dienen   der   Anwenderkommunikation.   UP   EP1_SP und   werden vom COM Interrupt aus aufgerufen. EP2_AD Folgende Aktionen werden dabei ausgelöst: Ein­ und Ausschalten einzelner Bits (4 LEDs an PD4­PD7 und das Blink­Flag EP1_SP: PD0) eines Ports (1 Byte)  ber Endpunkt 1 (OUT­Aktion (PC  Gerät)). Analoge   Daten   (Analog­Digitalwandler)   ber   den   FIFO   des   Endpunkt 2 EP2_AD: einlesen (IN­Aktion (Gerät  PC)). EP1_SP (usb_ep1_setpd4_7) Lese Portbyte von PC und schalte Portbits ein bzw. aus. Falls der PC Daten f r Endpunkt 1 gesendet hat, so wird in der Interruptroutine dieses  Firmware AT90USBKEY...
  • Seite 14   Polling   auf   das   Ende   der   Wandlung   gewartet.   Das   Interruptflag   (NAKINI)   wird  dann   gelöscht   und   es   wird   berpr ft   ob   die   Speicherbank   frei   ist.   Zwei   Byte   (10   Bit­ Wandlung) werden ins Fifo geschrieben. Das Abschicken der Daten wird durch Löschen des  FIFO CONtrol Bit erlaubt. Firmware AT90USBKEY...
  • Seite 15 Mikrocontrollertechnik 2010...

Inhaltsverzeichnis