Mikroprozessoren sind im Prinzip kleine Computer. Bloß dass sie nur aus einem einzigen Chip bestehen. Dieser enthält dafür alles, was man zum Steuern von irgendwelchen Sachen braucht. Ich habe mich für den Atmel ATMega8 Chip entschlossen, weil er sehr leicht programmierbar ist (sogar ohne ihn später aus dem System auszubauen), und trotzdem relativ leistungsfähig. Er wird mit bis zu 16MHz getaktet, womit er mehr leistet als ein 286 *g*. Ausserdem ist Speicher, ein Flash, Aus- und Eingänge und vieles mehr bereits eingebaut.
Obwohl es unter Windows haufenweise Programme gibt, mit denen man die Prozessoren programmieren kann, ist die Menge der brauchbaren Programme unter Linux eher eingeschränkt. Deshalb wollte ich kurz erklären, wie ich es mache.
Programmierer: Ich benütze den Ponyprog2000 von hier. Dieser ist einerseits recht flexibel durch die graphische Oberfläche (gut zum setzen der Fuses), bietet aber auch die Möglichkeit über Skripte ihn von der Kommandozeile zu steuern. Auf der Homepage von lancos ist auch die Anleitung, sich einen Programmieradapter zu bauen. Ich benütze den an der parallelen Schnittstelle, da dieser am einfachsten ist. Vermutlich würde die Lösung mit den drei Widerständen auch funktionieren, aber ich hatte bereits den mit dem IC gebaut, als ich feststellte, dass meine Schnittstelle kaputt war :( .
Da ich keine vernünftige IDE für ASM gefunden habe, habe ich Quanta genommen, und mir eine schöne Syntax-Hervorhebungsdatei gebaut. (Hier zu haben)
Quanta bietet auch die Möglichkeit Skripte zu definieren (Einstellungen/Aktionen festlegen). Dort kann man als Eingabe die aktuelle Datei angeben. Ich habe mir solch ein Skript gebastelt, und kann nun mittels einen Knopfdruck das Programm kompilieren und hochladen.
Das Skript:
cd output cat - >output.asm rm output.hex wine -- ../AVRStudio/avrasm32.exe -fI output.asm ponyprog2000 script.e2s
Wie man sehen kann, habe ich mir ein "output" Verzeichnis eingerichtet, in dem die Datei erst erstellt wird, dann mittels avrasm32.exe (von ATMEL) kompiliert und von ponyprog2000 hochgeladen.
Der Vollständigkeit halber hier auch noch die Skriptdatei script.e2s
SELECTDEVICE ATMEGA8 CLEARBUFFER LOAD-PROG output.hex #LOAD-DATA output.rom WRITE&VERIFY-ALL
Für C Code benütze ich mittlerweile doch KDevelop, welches einige nette Features hat. Auch ist die Bedienung über Makefiles für mehrere Units einfach Pflicht. Was mich einige Zeit und Mühe gekostet hat, war das einrichten eines Debuggers für KDevelop. Man kann natürlich gdb nehmen, welcher aber ein bisserl altmodisch aussieht (obwohl er natürlich viel leistungsfähiger ist), aber KDevelop ist eben hübscher. Hier ein kurzer Ablauf, wie es bei mir funktioniert hat:
shell sleep 3 target remote localhost:1212 load break main continue
Trenntrafo
Ich habe zwei kaputte USV's im Zimmer rumstehen. Daraus soll mal ein Trenntrafo werden. Scheinbar ist die Steuerung der Leistungs-Wechselrichter kaputt. Diese wird mit einem ATMega8 nachgebildet. Das Programm läuft schon, aber die Hardware macht mir im Moment noch Sorge...
Wer will sowas nicht haben...
Nachdem ich mir soviel Arbeit gemacht habe, diese Prozessoren zu programmieren, muss schon noch was vernünftiges damit gemacht werden. Mehr dazu auf meiner Roboterseite.