Programmieren mit dem MC-AVR8 und avrdude

From ConeleK Electronic Wiki
Jump to: navigation, search

Einleitung

Inhalt

Dieser Artikel beschreibt, wie man mit Hilfe des Mikrocontroller Modul ATmega8 MC-AVR8 und dem Kommandozeilenprogramm avrdude [2] ein eigenes Programm auf den Mikrocontroller übertragen kann.

Als Programmiergerät wird hier beispielhaft der AVRISPmkII verwendet.

Hinweis: Die nun folgenden Schritte wurden auf einem frischen Kubuntu Maverick Meercat (10.10) und Kubuntu Oneiric Ocelot (11.10) getestet. Prinzipiell sollte sich der Ablauf für andere Unices nicht unterscheiden, wobei "sollte" bekanntlich ein sträfliches Wort ist, wenn man etwas nicht tatsächlich ausprobiert hat. :-)

Für Windows wurde dieses Vorgehen noch nicht getestet, aber es sollte... Sie wissen schon.

Mikrocontroller Modul ATmega8 MC-AVR8 [1]
MC-AVR8 P1010620 module gesetzt 1000s.JPG
MC-AVR8 P1010627 versuchsaufbau 1000s.JPG
P1000925 übersicht 1000s.jpg
P1000938 avr isp mk2 1000s.JPG
P1000937 avr isp stk500 1000s.JPG
103359 p1020851 img 00.jpg


Inhalt


Ziel

Inhalt

Das Ziel im Folgenden ist es, zunächst ein in Assembler geschriebenes Programm (in Form einer ASM-Datei) in Intel Hexcode zu übersetzen und diesen anschließend mittels AVRISP mkII auf den Mikrocontroller zu übertragen. Später folgt ein Abschnitt über das Compilieren und hoch laden von C-Programmen.

Dieses Vorgehen mag einem angesichts toller Entwicklungsumgebungen wie AVRStudio oder Eclipse als sehr rustikal und umständlich erscheinen, aber es ist der sicherste Weg, festzustellen, dass Sie über die richtige Basisinstallation für weitere Schritte verfügen.

Möchten Sie direkt in die Programmierung mit AVR Studio oder AVR Eclipse einsteigen, so verweisen wir auf die einschlägigen Artikel:

Die Anleitung wird immer (unrealistischer weise) von einem reibungslosen Ablauf der Installation ausgehen. Im Abschnitt Troubleshooting haben wir einige Fehler zusammengetragen, die uns begegnet sind. Zögern Sie bitte nicht, uns diese mitzuteilen [3]!

Anleitung/Tutorial für Assembler-Programme

Inhalt

Der folgende Ablauf besteht grob aus den folgenden Schritten:

  1. Benötigte Programme (Tools) installieren
  2. Quelltext verfassen
  3. Assemblieren
  4. Mikrocontroller aufbauen und anschließen
  5. Programm in den Mikrocontroller laden

Schritt 1: Die Software

Inhalt

Sie werden die folgende Software benötigen, die Sie mittels Paketmanagement direkt herunterladen und installieren können:

  • avra #Assembler für AVR Mikrocontroller
    
  • avrdude #Software zur Programmierung von Mikrocontrollern
    

Für Debian/Ubuntu/Kubuntu:

 sudo apt-get install avra avrdude

Anschließend testen Sie, ob sich die Programme aus der Konsole heraus ansprechen lassen. avra:

ruediger@comp1lx:~$ avra --version
AVRA: advanced AVR macro assembler Version 1.2.3 Build 1 (15. November 2007)
Copyright (C) 1998-2007. Check out README file for more info
[...]

Für avrdude:

ruediger@comp1lx:~$ avrdude -?
[...]
avrdude version 5.10, URL: <http://savannah.nongnu.org/projects/avrdude/>

Beides Mal sollte eine Meldung wie oben in der Konsole erscheinen.

Sie sind jetzt im Besitz aller Software, die für diese Anwendung notwendig ist!

Schritt 2: Das Programm

Inhalt

Natürlich brauchen Sie noch ein Programm, welches Sie auf den Mikrocontroller laden können. Dazu empfiehlt sich das kleine Programm "Ledblink.asm", welches im Artikel AVR Assembler: LED blinkt näher vorgestellt wird.

Laden Sie sich den Quelltext und die Hilfsdatei herunter! (Wählen Sie Rechte Maustaste -> Ziel speichern unter..., um die Dateien herunterzuladen.)

Benennen Sie die Datei 'M8def.txt' in 'm8def.inc' (Exakte Schreibweise!) um - dies hat technische Gründe.

Schritt 3: Das Assemblieren

Inhalt

Wir werden in diesem Schritt aus dem Assembler-Quelltext das Intel Hexcode-Format erstellen, welches avrdude nutzen kann, um den Mikrocontroller zu programmieren.

Sie befinden sich in einem Konsolenfenster und das aktuelle Verzeichnis enthält die Dateien Ledblink.hex und m8def.inc.

Nun kommt der Moment der Wahrheit:

avra Ledblink.asm

Die Ausgabe dieses Befehls sollte in den letzten vier Zeilen etwa so aussehen:

....
....
Used memory blocks:
   Code      :  Start = 0x0000, End = 0x0015, Length = 0x0016

Assembly complete with no errors.
Segment usage:
  Code      :        22 words (44 bytes)
  Data      :         0 bytes
  EEPROM    :         0 bytes

und im Verzeichnis sollten jetzt die Dateien Ledblink.hex (Flash-Abbild) und Ledblink.eep.hex (EEPROM-Abbild) liegen.

Mit diesen Dateien wird nun im nächsten Schritt der Mikrocontroller programmiert!

Anmerkung: Es existiert auch eine bereits assemblierte Fassung im Intel Hexcode-Format (Wählen Sie Rechte Maustaste -> Ziel speichern unter..., um die Dateien herunterzuladen). Hiermit kann gleich das Programm über den ISP-Programmer in den Mikrocontroller geladen werden.

Schritt 4: Mikrocontroller aufbauen

Inhalt
Der komplette Versuchsaufbau
Mikrocontroller Minimalsystem mit ISP Interface

Bauen Sie nun den Mikrocontroller auf wie es in der Anleitung dafür beschrieben ist.

Der Mikrocontroller sollte mit Strom versorgt werden und das Programmiergerät muss sowohl am PC als auch am Mikrocontroller angeschlossen sein.

Anders als in den Anleitung beschrieben wird die LED nicht blinken, denn das Programm dazu wollen wir ja im nächsten Schritt erst selber hochladen!

Anmerkung: wenn Sie nicht das CEK-Modul mit dem ATmega8 verwenden wollen, können Sie sich auch selbst ein einfaches Minimalsystem wie im 2.Bild rechts aufbauen. Dies wird in diesem Artikel beschrieben.



Schritt 5: Programm hineinladen

Inhalt

Zunächst wechseln Sie in der Konsole in das Verzeichnis, in dem sie das Programm assembliert haben, in diesem Beispiel ~/downloads$. Diese solle folgenden Inhalt haben:

ruediger@comp1lx:~$ cd downloads/
ruediger@comp1lx:~/downloads$ ls -1
Ledblink.asm
Ledblink.cof
Ledblink.eep.hex
Ledblink.hex
Ledblink.obj
m8def.inc

Sie starten die Übertragung vom PC zum Programmer / Mikrocontroller mit dem Befehl:

avrdude -c avrispmkII -P usb -p m8 -Uflash:w:Ledblink.hex:a -Ueeprom:w:Ledblink.eep.hex:a -Ulfuse:w:0xe1:m -Uhfuse:w:0xd9:m

Das Erste, was nun erscheint, sieht etwa so aus:

ruediger@comp1lx:~$ cd downloads/
ruediger@comp1lx:~/downloads$ avrdude -c avrispmkII -P usb -p m8 -Uflash:w:Ledblink.hex:a -Ueeprom:w:Ledblink.eep.hex:a -Ulfuse:w:0xe1:m -Uhfuse:w:0xd9:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9307
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "Ledblink.hex"
avrdude: input file Ledblink.hex auto detected as Intel Hex
avrdude: writing flash (44 bytes):
...
...

daraufhin wird Sie das Programm informieren, dass nacheinander flash, eeprom, lfuse und hfuse geschrieben ('write') und überprüft ('verify') werden.

Die LED sollte nun blinken.

Herzlichen Glückwunsch! Sie haben den ATmega8 programmiert! :) :)

Wenn dies nicht der Fall ist und die Ausgabe der Konsole folgendes enhält, ist etwas schief gelaufen:

ruediger@comp1lx:~$ avrdude -c avrisp2 -P usb -p m8 -Uflash:w:Ledblink.hex:a -Ueeprom:w:Ledblink.eep.hex:a -Ulfuse:w:0xe1:m -Uhfuse:w:0xd9:m
avrdude: usb_open(): cannot read serial number "error sending control message: Operation not permitted"
avrdude: usb_open(): cannot read product name "error sending control message: Operation not permitted"
avrdude: usbdev_open(): error setting configuration 1: could not set config 1: Operation not permitted
avrdude: usbdev_open(): did not find any USB device "usb"

Ein einfacher Test ist es, den obigen Befehl als root bzw. mit sudo auszuführen:

sudo avrdude -c avrisp2 -P usb -p m8 -Uflash:w:Ledblink.hex:a -Ueeprom:w:Ledblink.eep.hex:a -Ulfuse:w:0xe1:m -Uhfuse:w:0xd9:m

Wenn dies nicht zum Erfolg führt, gehen Sie zu Punkt Troubleshooting

Zusammenfassung

Inhalt

Hier ist nochmals der ganze Ablauf in wenigen Zeilen:

  • avra und avrdude installieren
  • Ledblink.asm und m8def.txt herunterladen und 'M8def.txt' in 'm8def.inc' umbenennen
  • Assemblieren:
    avra Ledblink.asm
    
  • Mikrocontroller aufbauen und Programmiergerät (z.B. AVR ISP mkII) anschließen
  • Hochladen:
    avrdude -c avrisp2 -P usb -p m8 -Uflash:w:Ledblink.hex:a -Ueeprom:w:Ledblink.eep.hex:a -Ulfuse:w:0xe1:m -Uhfuse:w:0xd9:m
    



Anleitung/Tutorial für C-Programme

Inhalt
  1. Benötigte Programme (Tools) installieren
  2. Quelltext verfassen
  3. Compilieren
  4. Mikrocontroller aufbauen und anschließen
  5. Programm in den Mikrocontroller laden

Schritt 1: Die Software

Inhalt

Sie werden die folgende Software benötigen, die Sie mittels Paketmanagement direkt herunterladen können:

  • avr-gcc
    
  • avrdude
    
  • avr-objcopy (im Paket binutils-avr)
    

Für Debian/Ubuntu/Kubuntu:

sudo apt-get install avr-gcc avrdude binutils-avr

Anschließend testen Sie, ob sich die Programme aus der Konsole heraus ansprechen lassen:

avr-gcc --version
ruediger@comp1lx:~$ avr-gcc --version
avr-gcc (GCC) 4.5.3
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
avr-objcopy --version
ruediger@comp1lx:~$  avr-objcopy --version
GNU objcopy (GNU Binutils) 2.20.1.20100303
Copyright 2009 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
 
avrdude -?
ruediger@comp1lx:~$ avrdude -?
Usage: avrdude [options]
Options:
  -p <partno>                Required. Specify AVR device.
  -b <baudrate>              Override RS-232 baud rate.
  -B <bitclock>              Specify JTAG/STK500v2 bit clock period (us).
   ...
   ...

Die einzelnen Befehle sollten Ausgaben wie in den Beispielen oben ergeben. Wenn ja, ist die erforderliche Software nun installiert.

Schritt 2: Das Programm

Inhalt

Natürlich brauchen Sie noch ein Programm, welches Sie auf den Mikrocontroller laden können. Dazu empfiehlt sich das kleine Programm "Ledblinkc.c", welches im Artikel AVR C: LED blinkt näher vorgestellt wird.

Laden Sie sich den Quelltext herunter! (Wählen Sie Rechte Maustaste -> Ziel speichern unter..., um die Datei herunterzuladen.)

Schritt 3: Das Compilieren

Inhalt

Wir werden in diesem Schritt aus dem C-Quelltext zunächst eine sogenannte ELF-Datei (Executable and Linkable File) erstellen. Daraus lässt sich dann eine Datei im Intel Hexcode-Format gewinnten, welches avrdude nutzen kann, um den Mikrocontroller zu programmieren.

Sie befinden sich in einem Konsolenfenster und das aktuelle Verzeichnis enthält die Datei Ledblinkc.c.

Nun kommt der Moment der Wahrheit - kann man das Programm compilieren?


avr-gcc -O3 -Os -mmcu=atmega8 -o Ledblinkc.elf Ledblinkc.c


Es sollen nun keine Fehlermeldungen erscheinen und Ergebnis befindet sich nun die Datei Ledblinkc.elf im aktuellen Verzeichnis.

Als nächstes müssen wir das Programm noch in das richtige Format für das Programmiergerät bringen:


avr-objcopy -j .text -j .data -O ihex Ledblinkc.elf Ledblinkc.hex


Im Ordner liegt jetzt die Datei Ledblinkc.hex (Flash-Abbild). Diese kann man sich mit einem Texteditor anschauen:

:1000000012C024C023C022C021C020C01FC01EC0F7
:100010001DC01CC01BC01AC019C018C017C016C014
:1000200015C014C013C011241FBECFE5D4E0DEBF3D
:10003000CDBF10E0A0E6B0E0E4E7F0E002C005903C
:100040000D92A436B107D9F70CD012C0D9CF8FEFDB
:1000500005C000009150E9F7815011F09FEFF9CFF2
:10006000089581E087BBC09AF2DFC098F0DFFBCF34
:04007000F894FFCF32
:04007400FFFF010089
:00000001FF

Mit diesen Dateien wird nun im nächsten Schritt der Mikrocontroller programmiert!

Anmerkung: Es existiert auch eine bereits kompilierte Fassung im Intel Hexcode-Format (Wählen Sie Rechte Maustaste -> Ziel speichern unter..., um die Dateien herunterzuladen.). Damit kann der Mikrocontroller programmiert werden, ohne dass man zuvor kompilieren muss.

Schritt 4: Mikrocontroller aufbauen

Inhalt
Der komplette Versuchsaufbau

Bauen Sie nun den Mikrocontroller auf wie es in der Anleitung dafür beschrieben ist.

Der Mikrocontroller sollte mit Strom versorgt werden und das Programmiergerät muss sowohl am PC als auch am Mikrocontroller angeschlossen sein.

Anders als in den Anleitung beschrieben wird die LED nicht blinken, denn das Programm dazu wollen wir ja im nächsten Schritt erst selber hochladen!

Alternativ können Sie auch ein Mikrocontroller Minimalsystem mit ISP-Interface aufbauen.



Schritt 5: Programm hineinladen

Inhalt

In diesem Beispiel wird der ISP-Programmer AVRISPmkII verwendet. Sie starten die Übertragung vom Computer über den ISP-Prorammer mit dem Befehl:

avrdude -c avrispmkII -P usb -p m8 -Uflash:w:Ledblinkc.hex:a -Ulfuse:w:0xe1:m -Uhfuse:w:0xd9:m

Nun erscheint in der Konsole eine Ausgabe, wie folgende:

ruediger@comp1lx:~$ cd downloads/
ruediger@comp1lx:~/downloads$ avrdude -c avrispmkII -P usb -p m8 -Uflash:w:Ledblinkc.hex:a -Ulfuse:w:0xe1:m -Uhfuse:w:0xd9:m

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9307
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "Ledblinkc.hex"
avrdude: input file Ledblinkc.hex auto detected as Intel Hex
avrdude: writing flash (120 bytes):
.....
.....

daraufhin wird Sie das Programm informieren, dass nacheinander flash, lfuse und hfuse geschrieben ('write') und überprüft ('verify') werden.

Die LED sollte nun blinken.

Herzlichen Glückwunsch! Sie haben den ATmega8 programmiert! :):)d

Wenn es Fehlermeldungen gibt, gehen Sie zum Punkt Troubleshooting.

Zusammenfassung

Inhalt

Hier ist nochmals der ganze Ablauf in wenigen Zeilen:

  • avr-gcc
    
    ,
    avrdude
    
    und
    avr-objcopy
    
    installieren
  • Ledblinkc.c herunterladen
  • Assemblieren:
    avr-gcc -O3 -Os -mmcu=atmega8 -o Ledblinkc.elf Ledblinkc.c
    
  • Umwandeln in Intel Hexcode:
    avr-objcopy -j .text -j .data -O ihex Ledblinkc.elf Ledblinkc.hex
    
  • Mikrocontroller aufbauen und Programmiergerät (z.B. AVR ISP mkII) anschließen
  • Hochladen:
    avrdude -c avrisp2 -P usb -p m8 -Uflash:w:Ledblinkc.hex:a -Ulfuse:w:0xe1:m -Uhfuse:w:0xd9:m
    

Tipps

Inhalt
  • Wenn Sie gerne mit dem Quelltext "spielen", kann es lästig sein, die gesamte Befehlssequenz immer wieder einzutippen. Sie können hiefür das Linux-Skript nutzen, welches den gesamten Vorgang beinhaltet. Einfach mit dem Interpreter Ihrer Wahl (BASH, CSH,...) aufrufen:
    bash Ledblinkc_create.sh
    
  • Sie können das Skript auch für Ihre eigenen Programme verwenden: Ersetzen Sie in der Zeile program="Ledblinkc" einfach ledblinkc durch den Basisnamen (Dateinamen ohne Erweiterung) ihrer C-Datei.

Troubleshooting

Inhalt

Paket avra kann nicht gefunden werden

Inhalt

oder auch: "Paket avrdude kann nicht gefunden werden"

Die Programme liegen nicht in den registrierten Paketquellen ihrer Distribution. Im Allgemeinen sollte eine kurze Suche mit den Schlagwörtern "avra packet <distribution>" dazu führen, dass Sie erfahren, wo man die Programme erhält.

Kubuntu/Ubuntu

Inhalt

Ersetzen Sie in folgendem Befehl "maverick" durch den Codenamen ihres (K)Ubuntus:

sudo apt-add-repository "deb http://de.archive.ubuntu.com/ubuntu/ maverick universe"

Sie erhalten den Namen mittels:

cat /etc/lsb-release

Ledblink.asm(24) : Error  : Cannot find include file: m8def.inc

Inhalt

Sie müssen zusätzlich zum eigentlichen Assemblerquelltext auch die Hilfsdatei herunterladen und in 'm8def.inc' (Exakte Schreibweise!) umbenennen.

avrdude: stk500v2_command(): command failed, unknown status 0xc9

Dieser Fehler kann unter anderem in folgenden Fällen auftreten:

  1. Sie haben die sogenannten Fusebits falsch konfiguriert. Mehr dazu im Aritkel Fuses ATmega8.
  2. Das Programmiergerät hat keinen Kontakt zum Mikrocontroller, da dieser bspw. nicht mit Strom versorgt wird.

avrdude: usbdev_open(): did not find any USB device "usb"

Inhalt

Dieser Fehler kann unter anderem in folgenden Fällen auftreten:

  1. Das Programmiergerät ist nicht an ihrem PC angeschlossen. Überprüfen Sie die USB-Stecker.
  2. Sie haben den falschen Gerätetyp ausgewählt. Die Liste der verfügbaren Gerätetypen erhalten sie mit
    avrdude -c ?
    
  3. Ihr Programmiergerät ist nicht an den USB-Bus, sondern an eine andere Schnittstelle angebunden. In diesem Fall müssen Sie zunächst herausfinden, wie diese bezeichnet wird (üblicherweise sind alle verfügbaren seriellen Schnittstellen im Verzeichnis /dev/ zu finden). Danach muss die -P-Option entsprechend angepasst werden.
  4. Es kann unter Umständen sein, dass Sie keine Berechtigung besitzen, den Programmierer über USB anzusprechen. Dies kann auf älteren Linux-Systemen der Fall sein.

Überprüfen Sie zunächst mittels des Befehls

 lsusb

welche Geräte vom PC erkannt wurden. Die Ausgabe müsste eine Zeile der folgenden Form enthalten:

Bus 007 Device 005: ID 03eb:2104 Atmel Corp. AVR ISP mkII

Ist dies der Fall und können Sie trotzdem nicht auf das Gerät zugreifen, dann hilft es in manchen Fällen wie folgt vorzugehen:

udev-Rechteproblem

Inhalt

Ein Grund für Ihr Problem kann sein, dass Linux Ihnen keine Berechtigung gibt, auf den USB-Bus zuzugreifen. Der Verantwortliche hierfür nennt sich udev - ein Dienst, der dafür zuständig ist, eingesteckte Geräte im laufenden Betrieb zu erkennen. Dies lässt sich beheben, indem sie wie folgt vorgehen:

  1. Erzeugen Sie eine neue(!) Datei /etc/udev/rules.d/90-atmega.rules.
  2. Fügen Sie die folgende Zeile in die Datei ein, wenn Sie als Benutzer zur Gruppe plugdev gehören:
    SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2104", MODE="0660" , GROUP="plugdev"
  3. Eine weitere Möglichkeit ist es, den Eintrag MODE="0660" durch den Eintrag GROUP=<eine-gruppe-in-der-Sie-Mitglied-sind> zu ersetzen oder ihn damit zu kombinieren:
     SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2104", MODE="0660", GROUP="group"
    oder
    SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2104", GROUP="group"
  4. Nun müssen Sie noch den udev-Service neustarten. Unter neueren Ubuntu-Versionen geht dies wie folgt:
    sudo service udev restart
    
    . Bei anderen Varianten auch mittels
    sudo /etc/init.d/udev restart
    
  5. Ziehen Sie das USB-Kabel vom Programmierer ab und stecken Sie es erneut in den PC.

Wichtig ist dabei, dass sie eventuell die hexadezimalen Zahlen 03eb bzw. 2104 durch die entsprechenden Werte aus dem lsusb-Befehl ersetzen.


AVRdude Kommandozeilen-Befehle

Inhalt

Die Konfigrurationsdatei für AVRdude : /etc/avrdude.conf

Erläuterung der Kommandozeilen-Befehle

Inhalt

Hier wird nun erklärt, wie sich die Befehle zum Programmieren des Mikrocontrollers zusammensetzten. ToDo


Beispiele Kommandozeilen-Befehle

In den Beispielen wird folgende HW verwendet:

  • Programmer: AVRISP mkII
  • Mikrocontroller ATmega8
  • Betriebsystem Linux Kubuntu 11.10

Beispiele:

Aktion Befehl
Programmiergeräte unterstützte avrdude -c?
unterstützte Mikrocontroller avrdude -p?
löschen Mikrocontroller avrdude -p m8 -c avrispmkII -P usb -e
auslesen Mikrocontroller avrdude -p m8 -c avrispmkII -P usb -v
Programm laden avrdude -c avrispmkII -P usb -p m8 -U flash:w:Ledblinkc.hex:a -U lfuse:w:0xe1:m -U hfuse:w:0xd9:m

Filename: Ledblinkc.hex
Fuse Byte Low: 0xe1
Fuse Byte High: 0xd9

Anmerkung: avrispmkII = avrisp2



Bezugsquellen

Inhalt
  • CEK-Mikrocontroller-Modul MC-AVR8 [4]
  • Alles weitere, was man für eine komfortable Experimentierschaltung benötigt ist aufgelistet im Hauptartikel zum MC-AVR8

Weitere Artikel im Wiki

Inhalt

Links extern

Inhalt
  • avrdude [5]
  • WinAVR (enthält auch avrdude für Windows) [6]
  • AVRISP mkII [7]

Categorie:AVR Assembler Categorie:AVR C Categorie:CEK_Module_Anwendungen