Atmel Mikrocontroller - Boards und Bibliotheken
1 Atmel Stuff
1.1 Programmiergeräte / Starterkits
Originale Geräte haben zwar meist eine höhere Qualität und lassen sich im Betrieb meist problemlos nutzen, haben meiner Meinung nach aber einen großen Nachteil was die ISP-Schnittstelle angeht. Denn Leider ist bei den meisten ATMEL Boards der VCC Pin spannungslos und wird vom Programmierer stets genutzt um die Versorgungsspannung des Targets einzulesen. Das heißt also, das eine externe Spannungsquelle von Nöten ist. Beim STK600 ist es allerdings möglich die Spannung via AVRStudio zu regeln. Unter Linux hat man bekanntlich kein AVRStudio/ ATMEL Studio, aber die Onlinehilfe gibt Infos bzgl der Connection-Sheets usw..
1.1.1 AVR-Dragon
Sehr preisgünstiger Original-Programmiergerät, welches JTAG, PDI (bei einigen Modellen), ISP und HVPP unterstützt. Leider kommt das Gerät völlig nackt ohne Kabel, Sockel oder Gehäuse daher. Darüber hinaus ist das AVR-Dragon sehr anfällig was statische Aufladungen angeht. Abhilfe was die ESD-Schwäche betrifft kann und soll das Dragon Lair schaffen.
Auf der gleichen Seite findet man auch eine Anleitung wie man eventuell beschädigte Spannungswandler austauscht, da bei einigen Versionen zu kleine Exemplare verbaut wurden. Auskunft bzgl. Pinbelegungen der Programmierschnittstellen, Prototyping-Area etc gibt es in der AVRStudio-Onlinehilfe. Aus eigener Erfahrung kann ich sagen, dass das Gerät trotz der Schwächen zu empfehlen ist.
1.1.2 AVR-MKII
Der wohl beliebteste und weit verbreitetste Programmierer den es zu kaufen gibt. Relativ günstig in der Anschaffung, verfügt er jedoch nur über ISP und PDI als Programmierschnittstellen. Ich besitze privat keinen mkII, aber programmiere damit auf der Arbeit meine Targets.
1.1.3 Starterkit (STK) 600
Der STK500-Nachfolger, scheinbar nicht so angesagt und verbreitet wie das Vorbild. Angesichts des Preises aber auch nicht weiter verwunderlich. Bekommt man das STK500 für knapp 80 € muss man beim STK600 (ohne Daughterboards) mit 300 € schon etwas tiefer in die Tasche fassen. Vorteil gegenüber dem STK500 ist, dass das Starterkit über eine USB-Schnittstelle (STK500 serielle Schnittstelle mit Problemen bei USB-RS232-Wandler, soweit mit bekannt ist) verfügt und sogar bis 300 mA ohne Netzteil betrieben werden kann. Im Lieferumfang sind enthalten :
- STK600
- Netzstrippe ohne Wandwarze ( kann man für 300 € nicht verlangen}
- Flachbandkabel ( zum programmieren )
- USB-B-Kabel
- Daughter-Board mit ATMega2560
- zweipolige Verbindungskabel ( für UART, CAN, TWI denke ich )
Komisch finde ich, dass das Board über eine JTAG-Programmierschnittstelle verfügt, aber das Debugging über jene nicht im Funktionsumfang ist. Nicht umsonst liest man von verdutzten Käufern, dass sie Hilfe beim JTAG-Debugging brauchen und man ihnen meist nur sagen kann : „Es geht nicht!“. Weiterhin ist das sog. DIP-Package sehr interessant, wohinter sich eine Sammlung von Adapter-Boards und ein Daughter-Board mit Testsockel verbirgt um Controller im Dual-Inline-Package flashen zu können.
1.1.4 usbPROG
Die eierlegende Wollmilchsau von Benedikt Sauter Projektseite, die mittels Firmwarepool alles geben kann was man in einen ATMega32 bekommt. Mit der Firmware für den mkII-Klon verwandelt sich das USB-Gerät in einen vollwertigen AVR-Programmer und lässt sich wie das Original via AVRStudio oder avrdude nutzen. Vor kurzem wurde die Firmware aktualisiert, so das man den mkII-Klon auch mit AVRStudio 5 nutzen kann.
1.1.5 mySmartUSB MK2
Das war es auch schon mit dem kurzem Überblick. Sollte jemand noch andere spannende Bibliotheken (außer Arduino-Kram), dann kann er diese ja in einem kurzem Kommentar vorstellen.
1.2 Atmel Softwarebibliotheken
Ein wirklich schöner und auf das Wesentliche beschränkter Programmer ist der mySmartUSB MK2 von myAVR. Er bietet neben einem AVR911-Programmer auch noch über die Möglichkeiten einen USB-RS232-Wandler (CP2102) zu nutzen und lässt sich im Betrieb umschalten. Ich besitze ihn zwar immer noch, aber er kommt nicht mehr zum Einsatz.
So nun zum zweiten Teil der (hoffentlich mehrteiligen) Serie. In diesem Beitrag solle es jedoch mehr um die Software-Ebene bzw. genauer um Bibliotheken handeln. Es ist natürlich auch klar, dass ich nicht alle Bibliotheken auflisten kann. Daher beschränke ich mich im Wesentlichen auf die, die ich schon benutzt habe bzw. mit denen ich schon etwas herumgespielt habe. Klassiker wie die TWI-Master- oder die UART-Bibliothek von Peter Fleury lasse ich mal außen vor, möchte sie jedoch wenigstens erwähnt haben. Grund dafür ist, dass man dafür genügend Artikel bei mikrocontroller.net oder ähnlichen Seiten findet.
1.2.1 Software USB 1.1 mit VUSB für Atmel Controller
Unter VUSB (Projekt-Homepage) verbirgt sich eine Softwareimplementierung des USB 1.1 Standards für Atmel Mikrocontroller und stellt eine kostengünstige Alternative zu den USB/RS232-Wandlern der Firma FTDI da. In der gängigsten Variante sind nur 3 Widerstände und zwei Zener-Dioden notwendig um die Hardwareseite zu erfüllen. Ein stark abgespeckter Softcore ist sogar auf einem Atmel ATTiny45 mit internem Oszillator und PLL lauffähig. Vorteil dieser Variante ist, dass der Mikrocontroller weiterhin mit +5V betrieben werden kann.
Kleines Beispiel für eine HID-Schnittstelle:
1.2.2 Hardware USB für Atmel Controller mit USB-Interface
Eine wahre Fundgrube an Beispielen und verschiedenen Implementierungen der USB-Schnittstelle für neuere Controller mit Hardware-Schnittstelle ist die LUFA-Biliothek. Dabei stehen dem geneigten Entwickler eigentlich alle Türen und Tore offen. Ob es nun HI-Devices (Mäuse, Tastaturen oder ähnliches Gerät) oder eine Kommunikationsgerät (bspw. CDC) ist, es ist realisierbar. Nicht umsonst haben die Entwickler der Arduino-Plattform im letzen Hardware-Rework den FT232 von ihren Boards geputzt und ihn gegen einen USB-fähigen Controller ersetzt. Unter den Beispielen der LUFA-Bibliothek sind daher nicht umsonst ein Arduino Programmer (Duce) und ein AVRISP-MK2 Clone vertreten. 😉 Letzterer bildet dabei die Protokolle ISP, PDI und TPI ab und wird vom ATMEL Studio als Original erkannt.
1.2.3 USI TWI-Slave für die kleinen ATTiny-µCs
Martin Junghans stellt auf seiner Projektseite eine Bibliothek samt Beispielimplementierung zur Ansteuerung der USI (Universal Serial Interface)-Schnittstelle als TWI-Interface bereit. Das US-Interface findet besonders bei den kleinen Controllern von Atmel Verwendung. Bisher noch nicht getestet, aber einige Ideen zur Verwendung gäbe es da schon. Die Bibliothek konnte ich erfolgreich einsetzen um bei einem Roboter die Motorsteuerung durch einen ATTiny2313 zu realisieren.