Atmel AVR Mikrocontroller mit OpenSuse: Die Hardware

Page content

Dieser Text ist von 2016 und wurde seitdem immer mal überarbeitet. Zum Teil wird daher manchmal ein Vorgehen beschrieben, wie man es heute so nicht mehr machen würde. Ich habe die historischen Dinge dennoch stehen lassen, weil sie auch einen Einblick in die Entwicklung von Hard- und Software geben.

Im folgenden sind diverse Boards beschrieben, die um 2015 herum verfügbar waren. Heute würde man meist ein Arduino Board als Startpunkt hernehmen.

Die benötigte Hardware für Experimente und Projekte mit AVR Microcontrollern ist ein AVR Controller mit etwas zusätzlicher Beschaltung. Die kann man mutig selbst erstellen oder fertig kaufen. In den folgenden Abbildungen dargestellt sind drei Boards, ein einfaches, bei eBay fertig für ca. 15€ erstanden und ein komplexeres, von www.pollin.de für ebenfalls ca. 15€, zum Selbstaufbauen und schließlich ein fertig aufgebautes Board für ca. 50 Euro.

Der AVR Controller kommt mit einigen Milliampere Strom aus, so dass ein einfaches Steckernetzteil mit 9V Gleichspannung ausreicht. Ein komplettes einfaches AVR Board braucht auch nur einige Dutzend mA. Manchmal kann man auch Wechselspannung einspeisen, denn viele Boards besitzen eine eigene Gleichrichtung und Stabilisierung. Vorübergehend langt sogar eine 9V-Batterie.

Einfaches AVR Board

Einfaches AVR-Board mit ATmega8. 4 Schalter und 8 Dioden dienen als Input- und Output-“Geräte”. Oben links wird die Stromversorgung angeschlossen, in der Mitte oben erkennt man den RESET-Taster. Das ISP-Programmierkabel ist oben rechts angeschlossen. Auf der mittleren braunen Buchsenleiste sind die IO-Pins des Controllers nach außen geführt.

Pollin AVR Board

Das Pollin Board ( http://www.pollin.de). On-Board sind die RS232-Umsetzung für die ISP-Programmierung, so dass oben links direkt der Computer angeschlossen werden kann. Unten links ist ein eigenständiger RS232-Anschluss vorhanden. Das Board erlaubt, diverse Typen der AVR-Controller (ATMega, ATtiny) in die Fassungen einzusetzen. Drei Taster und zwei LEDs sind die On-board I/O-Geräte. Ein Steckplatz für ein EEPROM 24Cxx ist vorhanden, desweiteren zwei Steckplätze für ISP und JTAG Programmierung und auf der 40-poligen Steckerleiste sind zahlreiche Pins der Controller herausgeführt. 2 Jumperleisten erlauben die flexible Anpassung des Boards. Dieses Board gibt es in mehreren Varianten und es gibt auch Erweiterungsboards dazu.

Das LAB-MEGA Board von Rakers

(http://www.rakers.de) Dieses Board ist mit SMD-Elementen aufgebaut und besitzt daher geringe Abmessungen. Es nutzt den ATmega128, der satte 53 I/O Pins und 128KB Flash Speicher bietet. Auf der Karte findet sich neben den “üblichen” Dingen wie Spannungsversorgung, ISP/JTAG Interfaces auch eine USB Schnittstelle, ein I2C Expander, eine Echtzeituhr (PCF8583) sowie 2 RS232 Interfaces. Zahlreiche Pins sind auf einer 64-poligen Messerleiste VC64 herausgeführt. Die SMD Bauweise erschwert (ohne geeignetes Werkzeug) leider das Auswechseln defekter Bauteile und auch die Fehlersuche. Zu diesem Board gibt es Erweiterungsboards von Rakers.

Kein serieller Port mehr am PC?

Die Nutzung der seriellen Schnittstelle für ISP-Programmierung ist ein sehr simpler Ansatz. RS232 kann auch zur bequemen Ausgabe z.B. von Fehlermeldungen, verwendet werden.

Leider haben viele neuere PCs keine serielle Schnittstelle mehr. Manche Motherboards haben noch einen “seriellen Header”, der eine serielle Schnittstelle darstellt. Wenn man so etwas auf dem Motherboard hat, kann man sich einen Slot-Adapter kaufen und die Schnittstelle nutzen.

Wenn man nicht mal einen seriellen Header auf dem Mainboard hat, kann man einen USB<->Seriell-Adapter nutzen. Es gibt für unter 10 Euro Kabel, die als Adapter zwischen RS232 und USB dienen können. Unter Linux klinkt sich ein solches Kabel in den Gerätebaum z.B. als “/dev/ttyUSB0” ein und kann dann genauso wie eine “echte” serielle Schnittstelle genutzt werden.

Bei meinem OpenSuse 11.2 sieht die Einbindung (mittels dmesg ausgegeben) wie folgt aus:

... 
[3529.694778] usbserial: USB Serial Driver core 
[3529.705376] USB Serial support registered for ch341-uart 
[3529.705409] ch341 6-1:1.0: ch341-uart converter detected 
[3529.718371] usb 6-1: ch341-uart converter now attached to ttyUSB0 
[3529.718650] usbcore: registered new interface driver ch341

RS232 und serielle Adapter an USB

RS232 definiert einen bestimmten Signalpegel. Dieser wird von vielen USB<->Seriell Adaptern nicht eingehalten. Fehlfunktionen sind die Folge.

Das bedeutet im Detail, die RS232 Signalpegel (die bei +-12 Volt auf den Signalleitungen liegen) müssen für bestimmte Endgeräte gegeben sein. Viele USB< ->Seriell-Adapter erfüllen diese Forderung nicht. Mein oben gezeigter blauer Adapter beispielsweise bringt nur 0-5 Volt Pegel, damit kann der serielle Adapter für die ISP-Programmierung nicht angesteuert werden.

Ich habe einen anderen Adapter, der diese Anforderungen erfüllt. Dies ist der Digitus USB To Serial Adapter DA-70158 Rev.2. Er verwendet den sehr gut unterstützten Chip Satz FTDI FT2232RL und bietet zwei serielle Anschlüsse an einem USB-Anschuß.

(click to view larger version)  

(click to view larger version)  

Viele Geräte kommen heutzutage mit den eigentlich falschen Pegeln (0/5V) zurecht. Das muss man im Einzelnen ausprobieren. Der oben gezeigt serielle ISP-Programmer funktioniert nur mit einem Adapter der auch die vollen +-12Volt bringt.