Grundsätzliche Schaltung zur Programmierung von Mikrocontrollern und erste Kommunikation

In diesem Teil des Tutorials zeige ich, wie der Mikrocontroller in eine Schaltung integriert werden muss, damit er über ISP programmierbar ist. Danach werden wir die Verbindung testen, in dem wir den Speicher des Controllers auslesen.

Die Schaltung

Die Schaltung besteht aus zwei Komponenten. Auf der einen Seite steht die Stromversorgung des Mikrocontrollers, denn ohne Strom lässt sich der Mikrocontroller auch nicht programmieren. Auf der anderen Seite steht der tatsächliche Anschluss des ISP Adapters an den Mikrocontroller. Über diese Verbindung wird dann das Programm übertragen.

Stromversorgung

Die Stromversorgung ist essentiell, um den Mikrocontroller zu programmieren. Wir werden die Schaltung jedoch gleich so aufbauen, dass wir dieselbe Stromversorgung sowohl zum Programmieren als auch schlussendlich zum Betrieb des Controllers verwenden können.

Der ATTINY13 benötigt, laut Datenblatt eine Spannung von 5V. Aus unserem 9V Block kommen aber, wie ersichtlich, 9V Spannung. Würden wir diese direkt an den Controller anschließen, so würden wir ihn vermutlich rösten. Um die 9V auf 5V zu „transformieren“ verwenden wir den Linearregler. Der Linearregler hat 3 Anschlüsse. IN, GND und OUT. An IN schließen wir den Pluspol unseres 9V Blocks an. GND wird mit dem Minuspol (also Ground, bzw Masse/Erde) der Stromquelle verbunden. An OUT liegen nun +5V an.

Allerdings neigen solche Linearregler dazu, auch mal zu „schwingen“. D.h. die Ausgangsspannung beginnt mal größer, mal kleiner als 5V zu werden. Ein solches Verhalten wäre für den Mikrocontroller ungesund (vor allem Werte über 5V sind nicht gut .. ), deshalb müssen Schwingungen unterdrückt werden. Dies geschieht über die Kondensatoren. Einer der beiden wird zwischen GND und OUT geschalten, der andere zwischen GND und IN.

Zusätzlich wird noch eine Diode parallel zum Linearregler geschalten, um zu verhindern, dass der Linearregler kaputt geht, wenn die Batterie falsch herum angeschlossen wird oder der Kondensator sich bei Stromverlust der Schaltung über OUT des Linearreglers entlädt. Dabei ist besonders darauf zu achten, dass die Diode nicht verkehrt herum eingebaut wird! Die „blockierende“ Seite (die mit der - meist schwarzen - Markierung) muss dabei an IN angeschlossen sein.

Schaltplan für die Stromversorgung

Der Anschluss an den OUT Pin des Linearreglers wird im Weiteren als VCC bezeichnet, der andere Anschluss (auf dem Bild) der 5V Versorgung als GND.

Taktquelle

Der Controller benötigt eine Taktquelle, die ihm sozusagen die Geschwindigkeit vorgibt, mit der er Berechnungen ausführt. In diesem Tutorial werden wir die interne Taktquelle des ATTINY13 verwenden, es sei an dieser Stelle aber auch angemerkt, dass externe Taktquellen auch möglich (und teilweise sogar notwendig) sind.

Anschluss des Adapters

Der Anschluss des Adapters ist nun auch keine große Sache mehr. Der Adapter stellt folgende Anschlüsse zur Verfügung: MOSI, MISO, SCK, RESET und GND. MOSI wird dabei an den MOSI Pin des ATTINY13 gehängt (Pin 5). MISO kommt an Pin 6. SCK an Pin 7. RESET wird an Pin 1 angeschlossen. GND wird an GND des Mikrocontrollers angeschlossen (Pin 4).

Wichtig und nützlich dabei ist das Datenblatt. Allerlei Datenblätter bekommt man über http://datasheetarchive.com/

Schaltungen verbinden

Um beide Schaltungen zu verbinden reicht es, VCC aus unserer Stromversorgung an Pin 8 des ATTINY13 anzuschließen. Außerdem muss GND unserer Stromversorgung noch mit GND (Pin 4) des Controllers (und damit auch mit GND des Adapters) verbunden werden.

Herzlichen Glückwunsch! :) Wenn das angeschlossen ist läuft der Controller bereits. Da aber noch kein Programm auf den Controller geladen ist, tut dieser nichts weiter als Strom zu verbrauchen. Um die Schaltung zu testen (wir sehen ja nicht, ob der Controller läuft oder nicht) werden wir nun Kontakt zu ihm über den Programmieradapter aufnehmen.

Erster Kontakt

Damit wir bei unserem ersten Kontakt nicht gleich etwas kaputt machen, werden wir uns darauf beschränken, den FLASH Speicher des Controllers auszulesen. Dazu muss der Controller wie oben beschrieben an der Stromversorgung und am Adapter angeschlossen sein. Der Adapter sollte außerdem natürlich mit dem Computer (auf dem Programmiert wird) verbunden sein.

Um den FLASH Speicher auszulesen genügt nun folgender Aufruf von avrdude (hier gezeigt und Linux/Ubuntu, unter Windows bei korrekter Installation ähnlich, nur mit „avrdude.exe“ statt „avrdude“ )

 avrdude -pt13 -cstk500 -P/dev/ttyUSB0 -U flash:r:test.hex:i

Eine kurze Erklärung der Kommandozeilenargumente:

 "-pt13"

Wir benutzen einen ATTINY13. Dafür steht das „t13“.

 "-cstk500"

Wir benutzen einen ISP Adapter. Meiner ist dabei kompatibel mit STK500. Das sollten die meisten anderen auch sein.

 "-P/dev/ttyUSB0"

Der Anschluss, an dem der Adapter am Computer hängt. Bei mir ist das USB.

 "-U flash:r:test.hex:i"

Was gemacht werden soll. Wir geben an, dass der FLASH Speicher gelesen werden soll und in eine Datei „test.hex“ im Intel-Hexformat gespeichert werden soll.

Bei Problemen bitte einfach im Forum unter Software melden!

Nun sollte avrdude den FLASH Speicher das Controllers auslesen. Wenn alles richtig angeschlossen wurde, dann sollte das auch funktionieren. Eine Fehlermeldung deutet darauf hin, dass die Verkabelung irgendwo nicht stimmen kann. Deshalb in diesem Fall Verbindungen überprüfen! Im Zweifelsfall meldet euch im Forum im Bereich Hardware!