1. Vorbereitung

1.1 Was kann der Mega8, was kostet der und wo bekomme ich ihn?
1.2 Welche Hardware brauche ich um AVRs wie den Mega8 zu programmieren?
1.3 Welche Software brauche ich?


1.1 Was kann der Mega8, was kostet der und wo bekomme ich ihn?

Der ATmega8 verträgt Taktfrequenzen bis zu 16MHz (eine Operation wird in ca. 0,06 µs ausgeführt), besitzt 6 analoge Eingänge die ein Sensorsignal von z.B. 0 - 5V noch mit einer Genauigkeit von ca. 5mV auflösen können, 2 pulsbreitenmodulierte Ausgänge (PWM) mit der sich z.B. die Helligkeit einer LED in über 1000 Zwischenabstufungen steuern lässt, insgesamt 23 digitale Anschlüsse, über die man z.B . Schaltersignale einlesen oder Relais steuern kann, eine serielle Schnittstelle, mit der man ohne großen Programmieraufwand Daten vom PC oder Handy empfangen oder auf einem Bildschirm ausgeben kann und festen Speicher (EEprom) in dem man Werte so speichern kann, daß sie nicht verloren gehen, auch wenn die Betriebsspannung abgeschalten wird.

Dabei ist der Mega8 recht klein und besitzt die übliche Bauform einfacher Schaltkreise (DIL), die es auch Laien ohne Probleme möglich macht Schaltungen zu löten. Er hat sich mittlerweile quasi als ein Standard durchgesetzt und man kann ihn fast in jedem vernünftigen Elektronikgeschäft für 2 bis 3 Euro kaufen. (bei Conrad zahlt man natürlich das 3fache)

(nach oben)


1.2 Welche Hardware brauche ich um AVRs wie den Mega8 zu programmieren?

Nicht viel. Der Mega8 lässt sich fertig in eine Schaltung eingebaut programmieren - ohne teures Programmiergerät, ohne den Chip jedes mal umstecken zu müssen. Also erst die Schaltung aufbauen und einfach später am "lebenden" Objekt jeden einzelnen Befehl sofort ausprobieren!

Grundsätzlich genügt es 5V Betriebsspannung anzuschließen und ein 5-adriges Kabel zu löten, das am Parallelport des PCs angeschlossen wird. Sicherheitshalber baut man in einige Leitungen Widerstände ein um sowohl den Parallelport als auch den Chip selbst vor Schäden zu schützen.

Es sei darauf hingewiesen, daß es zu Störungen kommen kann, wenn die Programmieranschlüsse des Mega8 in einer Schaltung zusätzlich für andere Funktionen vorgesehen sind. D.h. ist z.B. an einem der für die Programmierung benötigten Pins schon ein Relais angeschlossen, dann kann dieses während des Programmierens anziehen oder die Programmierung schlägt fehl. Soweit möglich ist es günstig die Programmieranschlüsse also unbeschaltet zu lassen. Benötigt man alle Anschlüsse für die Schaltung ist es das Sicherste sich eine Extra-Platine zu löten und den Chip zum Programmieren umzustecken. Ein Programmierboard sieht am einfachsten so aus:



Diese Schaltung kann als Grundlage genommen werden um Schaltungen für den Maga8 zu entwerfen, die man jederzeit nachträglich umprogrammieren kann. Dazu empfiehlt es sich noch einen beliebigen 5poligen Zwischenstecker auf der Platine vorzusehen, um das Programmierkabel abzeihen zu können.
Bei anderen AVR-Typen finden sich die Signale MOSI, MISO, SCK und /Reset ebenfalls und hier sind lediglich die Pinnummern anzupassen.
Den Quarz und die beiden zugehörigen Kondensatoren können für einfache Anwendungen auch weggelassen werden, da der Mega 8 einen internen Oszillator besitzt. Allerdings empfehle ich zumindestens eine Schaltung zu besitzen, in der der Quarz oder ein Keramikoszillator enthalten sind. Wird der interne Oszillator einmal ausgeschaltet und auf extern eingestellt lässt sich der Mega8 erst wieder ansprechen und auch erst wieder zurück-umstellen, wenn auch wirklich ein externer Oszillator angeschlossen ist.

(nach oben)


1.3 Welche Software brauche ich?

Die Software "BASCOM" ist ein beliebter und sehr einfacher Basic-Compiler für die Programmierung des Mega8 und anderer AVRs. Er stellt einem sehr viele komplexe Funktionen zur Verfügung um z.B. die Ansteuerung von Modellbau-Servos oder die Ausgabe von Text auf LCD-Anzeigen mit einem einzigen Befehl zu erledigen. Um z.B. den Wert einer Variablen X über die serielle Schnittstelle auf den PC-Bildschirm zu senden genügt der Befehl: "Print X" - fertig!

Selbstverständlich gibt es auch sehr gute und großteils völlig kostenlose Compiler für C sowie Pascal und natürlich kann man auch direkt in Assembler programmieren - worauf ich hier jedoch nicht weiter eingehen will.

BASCOM ist nicht kostenlos - die Demo ist aber zeitlich und in den verfügbaren Funktionen nicht eingeschränkt. Lediglich die Programmgröße - also quasi die Länge und Komplexität des Programmes sind eingeschränkt. Zum Erlernen und für viele praktische Schaltungen ist diese Limitierung aber noch nicht störend. Wenn man BASCOM kennen und meist auch schätzen gelernt hat kann man sich entscheiden ob es einem die gerade mal 80,-Euro für die Vollversion wert sind oder ob man umsteigt. Der Support bei registrierter Vollversion funktioniert reibungslos (wenn auch in Englisch) und meist befinden sich im Anhang einer Email der Support-Mitarbeiter gleich die gewünschten Updates oder Dokumente.

Die BASCOM-Demo kann man sich
hier von meiner Seite oder direkt vom Anbieter MCS-electronics herunterladen. Man achte darauf, daß vor der Installation irgendein Drucker installiert wurde - BASCOM verweigert sonst beim ersten Starten den Dienst mit entsprechender Fehlermeldung. Und es sollte ein beliebiger Parallelport-Drucker(-treiber) sein - BASCOM akzeptiert USB-Drucker nicht! (Bug)

Da BASCOM Microcontroller direkt über unterschiedlichste Programmiergeräte beschreiben kann ist es wichtig sorgfältig darauf zu achten, daß die folgenden Einstellungen korrekt vorgenommen werden:

Options -> Programmer



Bei Programmer "Universal MCS Interface" und "WinAVR and SP12" auf der Lasche "Universal"



Das sollte alles sein. Sofern noch nicht geschehen schließt man einfach das Parallelportkabel und die 5V-Betriebsspannung an den Mega8 an und es kann los gehen. Man schreibt ein Programm (nächstes Kapitel) - drückt die Taste F7 um das Programm zu compilieren (in Chip-Sprache zu übersetzen) und ist dies ohne Fehlermeldung geschehen drückt man F4 um das Programmerfenster zu öffnen.

Öffnet sich sofort das folgende Fenster genügt ein Klick auf "Autoprogram chip" und man kann zusehen wie der Chip beschrieben wird - fertig!



Bei den meisten erscheint in diesem Moment aber statt des Programmers erstmal diese Fehlermeldung:



Das bedeutet, daß die Verbindung zum Chip nicht hergestellt werden konnte. In 90% aller Fälle (meine Erfahrung) liegt das an fehlerhaft gelöteten Kabeln, falscher Betriebsspannung und Kurzschlüssen auf Leiterplatten. Also lieber 8mal hingucken, die 5V Betriebsspannung im angeschlossenen Zustand nachmessen und jede einzelne Verbindung durchklingeln bevor man einen Hilferuf in die Welt schickt! Gegen falsches Löten kann euch im Internet keiner helfen!

Ist da 200%ig sicher alles einwandfrei und erscheint trotzdem immer wieder diese Fehlermeldung, dann kommuniziert BASCOM nicht korrekt mit dem Parallelport, entweder weil dieser eine andere Adresse als $378 hat (in der Systemsteuerung überprüfen) - oder (meistens) weil z.B. WinXP /2k / NT den Direktzugriff auf den Port verweigert.

In diesem Falle ladet euch die Datei "giveio.sys" und speichert sie im Ordner "../Windows/System32/drivers"

Ist das erledigt habt Ihr 2 Möglichkeiten:
- Ihr ladet euch die Datei "LoadDrv.exe" und könnt/müsst den Treiber jedes mal manuell starten und ggF. abschalten
- Ihr installiert den Treiber permanent indem Ihr die Datei "giveio.inf" ladet und ausführt.

Erklärungen, wie dieser Treiber und die Portfreigabe funktioniert findet Ihr reichlich im Netz. Ich habe den Treiber aus einer mMn seriösen Quelle - übernehme aber selbstverständlich keinerlei Garantie das er virenfrei ist und natürlich auch keine Gewährleistung für mögliche Schäden, die aus der Installation entstehen können.
Informiert euch selbst und wenn Ihr Zweifel habt, dann lasst die Finger davon und kauft euch einen USB-Programmer. Ich nutze diesen Treiber jedenfalls auch und hatte bislang keinerlei Probleme damit.

Dieses Low-Cost-Programmer-Kabel lässt sich nach meiner Erfahrung bis WinXP wirklich an jedem Rechner zum Laufen bewegen - Erfahrungen, ob das unter Vista auch noch geht habe ich einstweilen nicht - falls es jemandem von euch gelingt würde mich eine eine kleine Info freuen. Auf alle möglichen Fehlervarianten einzugehen würde den Rahmen dieses Scripts deutlich sprengen - helfen alle o.a. Maßnahmen nicht weiter, dann fragt bitte einfach in einem entsprechenden Forum.

(nach oben)

Und jetzt zum nächsten Kapitel - was macht bei BASCOM welcher Programm-Befehl. ->