Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
/ HomePage / Computerthemen / Hardware / Microcontroller / Tutorial ATTINY 2313 Programmierung
Dies ist eine Schritt für Schritt-Anleitung wie man mit dem Microcontroller ATTINY 2313 eine LED zum blinken bekommt. Dabei geht es natürlich nicht um die blinkende LED, das bekäme man deutlich preiswerter und einfacher hin, es geht darum wie man den ATTINY 2313 anschließt und ihn programmiert. Wer verstanden hat wie es funktioniert, kann dann seiner Kreativität freien Lauf lassen. Als Programmiergerät wird der preiswerte USBTinyISP verwendet, der an vielen Stellen im Internet zu bekommen ist.
Für ca. 20 Euro bekommt man die Grundausstattung:
Einen neuen (=unprogrammierten) ATTINY 2313 (1,95€ Pollin) |
Ein Steckbrett (Steckboard, Breadboard) (2,95€ Pollin) und ein paar Steckbrücken, die man sich aus starrer Litze (z.B. Telefondraht) leicht selbst machen kann. |
Eine 6-Polige Stiftleiste mit langen Stiften. Ich habe genau so eine wie auf dem Bild dargestellt verwendet, und ein 6-poliges Stück abgebrochen. Das klappt gut, denn diese Stiftleisten haben Sollbruchstellen. (Pollin 0,27€) Die Stiftleiste biegt man sich mit einer Flachzange so zurecht, dass sie auf das Steckbrett passt. Die einzelnen Stifte muss man vorher etwas weiter durch die schwarze Plastikhalterung drücken, so dass die Stifte ungefähr in der Mitte zusammengehalten werden. Das Ergebnis sieht dann so aus: Die Stiftleiste ist der Anschluß (genannt ISP) für das Programmiergerät, in unserem einfachen Beispiel wird der Microcontroller auch darüber mit Strom versorgt. |
Eine beliebige Leuchtdiode |
einen Widerstand zwischen 30 Ohm und 5 KiloOhm. (ich habe nur kein gutes Bild gefunden wo nur einer drauf ist ) |
Einen AVR-ISP-Programmer und ein passendes USB-Kabel. Ich habe den UsbTinyISP, den man überall im Netz zwischen 10€ und 20€ kaufen kann. Meiner kam für 12,50€ incl. Versand direkt aus Hong Kong (per ebay) hat aber eine halbe Ewigkeit gedauert (jaja, der deutsche Zoll...). |
Die folgende Software benötigt man unter Windows 7:
Diese einfache Schaltung wird auf dem Steckbrett aufgebaut. Über den 6-Polige Stecker wird das Programmiergerät angeschlossen, gleichzeitig erfolgt darüber die Stromversorgung. Hier muss genau drauf geachtet werden wie herum der Stacker nachher aufgesteckt wird. Die eine Ader des Anschlusskabels (Flachband) ist rot markiert, das ist der Pluspol. Dieser kommt an die rot dargestellte Leitung, die zu VCC am Controller führt
Die LED wird an Pin4 (PA1) angeschlossen. Hier muss man aur richtige Polung achten, das längere Beinchen der LED wird über den Widerstand mit dem Pin4 des Controllers verbunden, das kürzere (Eselsbrücke: Kathode/kurz/Minus) mit Minus/Masse/GND (wie man es auch immer nennt). Hat man die LED falsch herum eingebaut kann aber nichts kaputt gehen, sie leuchtet dann nur nicht.
Der Pin PA1 kann (wie fast alle Pins des Controllers) verschiedene Aufgaben übernehmen, je nach Programmierung. In unserem Beispiel wird er als Ausgang programmiert, d.h. man kann ihn per Programm auf High (=+5V, LED leuchtet) oder Low (0V, LED aus) setzen.
Die LED muss immer über einen Widerstand angeschlossen werden, denn sonst würde ein hoher Strom fließen, der die LED und wenn man Pech hat auch den Controller zerstören würde.
Wenn das Programm fehlerfrei kompiliert werden konnte sieht die Ausgabe bei Avr-Studio 4 im unteren Fenster in etwa so aus. Bei AVR-Studio 6 ähnlich, zumindest sollte es keine Fehlermeldungen geben.
Wir haben jetzt ein kompiliertes Programm mit sage und schreibe 98 Bytes länge. Doch wie kriegen wir es in den Controller? Weiterlesen...
Zum Programmieren verwenden wir das Programm avrdude
das Bestandteil von WinAvr
, also dem C-Compiler ist, welcher am Anfang installiert wurde. Theoretisch kann man den Controller auch direkt aus Avr Studio programmieren, jedoch funktioniert das nur mit den Programmiergeräten von Atmel, und die sind teuer.
Der Compiler hat unter anderem eine Datei blinkled.hex
erzeugt. Darin befindet sich das binäre Programm welches in den Controller übertragen wird. blinkled.hex
liegtin einem Unterverzeichnis des Projektverzeichnisses.
In Windows 7 findet man die Datei einfach über die Suche im Startmenü, dann mit der rechten Maustaste das Suchergebnis anklicken und Dateipfad öffnen wählen, schon ist man im richitgen Verzeichnis.
Jetzt öffnet man mit eine Kommando-Shell (cmd), und begibt sich in das Verzeichnis wo sich blinkled.hex
befindet (am besten Pfad kopieren).
Spätestens jetzt sollte der USBTinyISP-Programmierer an USB und die Schaltung auf dem Steckbrett angeschlossen werden. Nochmal: Stecker RICHTIG HERUM aufstecken, lieber einmal zu oft prüfen als irgendwas zu verheizen.
Dann kommt der spannende Moment, das Übertragen des Programmes mit avrdude:
Erläuterung der verwendeten Parameter:
-c usbtiny
: Legt fest, dass wir einen USBTinyISP als Programmiergerät verwenden. avrdude unterstützt diverse Programmiergeräte.
-p attiny231
: Wir wollen einen attiny2313 programmieren
-U flash:w:blinkled.hex
: Wir wollen die Datei blinkled.hex
in den flash Speicher schreiben (w)
Wenn alles glatt läuft sieht die Ausgabe von avrdurde ungefähr so aus:
Nun sollte die LED blinken!!!
Bei Version 6 kann man sich ein post-Build-Event einrichten (rechte Maustaste auf das Projekt, dann Properties). Das ist ein Kommando, was nach erfolgreichem Compilieren automatisch ausgeführt wird. Dies ist z.B. bestens geeignet um das Kompilat in den Microcontroller zu übertragen.
Hier ein recht universelles Post-Bild Kommando, das so für alle Projekte mit allen Controllertypen funktionieren sollte, sofern sie mit dem UsbTinyISP programmiert werden:
/Elsni