Wie programmiert man Mikrocontroller
Für die Programmierung von Mikrocontrollern stehen unterschiedliche Entwicklungsumgebungen (Software) für verschiedene Sprachen (Assembler, BASCOM, C/C++ usw.) zur Verfügung. Diese weisen eine Reihe gemeinsamer Merkmale auf.
Der wichtigste Aspekt, der hier angesprochen werden muss ist, dass im Gegensatz zur Programmierung eines PC-Programms das fertige Programm nicht auf der Entwicklungsplattform, also unserem PC-Arbeitsplatz gestartet, ausgeführt und getestet werden kann. Für das Ausführen der entwickelten Controllersoftware ist es notwendig, das ausführbare Programm in geeigneter Weise auf den Controller und diesen in das Zielsystem zu bringen.
Neben dem üblichen Ãœbersetzungslauf des Quellcodes ist ein weiterer Arbeitsschritt notwendig.
Dabei wird das übersetzte Controllerprogramm in den Programmspeicher (FLASH) des Mikrocontrollers übertragen. Dieser Vorgang wird „Programmieren“ oder „Brennen“ genannt und erfordert eine spezielle Schnittstelle für das Programmieren des Controllers. Diese zusätzliche Hardware wird “Programmer” genannt.
Programmiersprachen
Die am weitesten verbreiteten Sprachen für die Programmierung von AVR-Mikrocontrollern sind:
Assembler
C/C++
BASIC (BASCOM)
Entwicklungsumgebung
Eine Entwicklungsumgebung enthält typischerweise folgende Komponenten:
Quellcode-Editor
Ãœbersetzungsprogramm (Assembler, Compiler)
Programmier- /Brennprogramm
Testwerkzeuge (Terminal, Simulator, Debugger)
Dateitypen
Folgende Dateitypen finden Verwendung bei der Programmierung von Mikrocontrollern:
*.ASM; *.S; *.C; *.CC; *.BAS ⇒ Quellcode, wird im Editor erstellt und übersetzt (mittels Compiler, Assembler) zu
*.O; *.OBJ ⇒ Objektdateien, entstehen beim Ãœbersetzen, werden zu ausführbaren Dateien gebunden (mittels Linker) zu
*.HEX; *.BIN ⇒ Binärdateien, entstehen beim Linken, werden beim Brennen in den Programmspeicher des Controllers übertragen.
Brennen des Mikrocontrollers
Für das Brennen des fertigen Mikrocontrollerprogramms (*.HEX oder *.BIN) gibt es grundsätzlich zwei Möglichkeiten:
1. Möglichkeit:
Man kann ein Programmiergerät verwenden, in das man den Chip einsetzt und programmiert. Dazu muss das Programmiergerät zum Beispiel über die serielle Schnittstelle oder USB an den PC angeschlossen werden.
Der Mikrocontroller ist aus dem Zielsystem zu entfernen und auf den entsprechenden Sockel des Programmiergerätes zu stecken. Dann kann das Programm in den FLASH- Speicher des Controllers übertragen werden.
War dieser Vorgang erfolgreich, kann der Controller aus dem Programmiergerät entnommen und wieder in das Zielsystem eingebaut werden. Ein häufig verwendetes Programmiergerät ist das STK500 von Atmel.
2. Möglichkeit:
Eine elegante Lösung für die Programmierung des Mikrocontrollers ist das sogenannte “In System Programming” (ISP). Dabei muss der Controller nicht aus dem Zielsystem ausgebaut werden, sondern kann direkt im System programmiert werden. Das Zielsystem muss dafür eine ISP-Schnittstelle bereitstellen.
Mit einer recht einfachen Hardware, dem sogenannten ISP-Programmer, der an die COM-Schnittstelle oder den USB-Port angeschlossen wird, kann aus der Entwicklungsumgebung heraus das Programm direkt in das Zielsystem übertragen werden. Mögliche Schnittstellen für diese Art der Programmierung sind ISP, JTAG und I²C. Dieser ISP-Anschluss am Zielgerät muss an den PC des Entwicklers oder Servicetechnikers mit einem der besagten ISP-Programmer angeschlossen werden. Auf dem myAVR Board ist ein SP12 kompatibler Programmer voll integriert.