Pfad:
Home ==>
Mikrobeginner ==> 1. ISP
This page in English (external):
Lektion 1: ISP-Programmier-Interface
1.0 Übersicht
- Einführung
- Hardware
- Bauteile und Aufbau
- Bedienung
Um Mikroprozessoren in den Griff zu bekommen, braucht man eine Steuerungsmöglichkeit.
Mit Hilfe dieser Steuerung kann man
- Programmcode in den Prozessor schleusen, oder
- diesen auch wieder löschen,
- die Taktquelle für die Taktung des Prozessors auswählen,
- das EEPROM im Prozessor mit Inhalten befüllen,
- Inhalte des Programmspeichers und des EEPROMs auslesen, und
- den Chip gegen das Auslesen von Inhalten schützen.
Ohne diese Steuerungsmöglichkeit geht gar nix und der Prozessor schläft nur vor
sich hin und tut rein gar nix.
In diesem Kurs greifen wir zum Programmieren direkt auf den Prozessor in der fertig
aufgebauten Schaltung zu. Das bezeichnet man als "In-System Programming",
kurz ISP.

Das hat immense Vorteile: Die fertige Schaltung funktioniert wie programmiert,
es werden keine weiteren und überflüssigen Zusatzschaltungen benötigt (wie
beim Arduino oder beim STK500). Nicht nur sind komplizierte Verkabelungen unnötig,
auch der Strombedarf der fertigen Schaltung wird nicht unnötig erhöht.
Die ISP-Schnittstelle funktioniert bei allen AVR in gleicher Weise. Wenn also für
eine Anwendung weitere Pins benötigt, nimmt man einfach den
nächstgrößeren AVR-Typ, schreibt das Programm ein wenig um und programmiert
diesen über die ISP-Schnittstelle in der fertig aufgebauten Schaltung.
Baut man das Programmierinterface, eine sechspolige Steckverbindung, in die fertige Schaltung
ein, kann das Programm nachträglich verändert werden. Weder ist dazu das Ausbauen des
Prozessors noch sind irgendwelche Lötarbeiten notwendig.
In diesem Kapitel lernen wir, den Prozessor in der Schaltung anzusprechen und seine Typkennung
auszulesen. Die anderen Möglichkeiten zur Chipsteuerung werden kurz aufgezeigt.
1.2.1 Das Programmiergerät
Als Programmiergerät kommen viele in Frage. Ich verwende den AVR-ISPmkII von ATMEL, der
am wenigsten Ärger macht und vom AVR Studio ideal unterstützt wird. Da es das
aber nicht mehr zu kaufen gibt, muss man sich ein anderes ausdenken. Es funktionieren
prinzipiell alle Adapter, die eine sechspolige ISP-Schnittstelle zur Verfügung
stellen, die vom Studio und vom Betriebssystem unterstützt werden (Achtung! Nicht
alle käuflichen Adapter funktionieren unter jedem Windows!).
Die meisten Adapter sind solche, die so tun als ob sie ein STK500 board wären, z. B.
der Diamex-AVR oder Usbasp. Da das STK500 mit dem ATMEL®-Studio über eine serielle
RS232-Schnittstelle kommunizierten, installieren die Treiber für solche
Programmiergeräte eine serielle USB-zu-RS232-Schnittstelle. Da das Studio aber nur
die Schnittstellenadressen COM1 bis COM4 abfragt, muss man darauf achten, dass die
Schnittstelle in diesem Adressbereich liegt.
Die Beispiele sind alle mit dem AVR-ISPmkII erstellt. Seit das kaputt ist, programmiere
ich mit dem Diamex-AVR. Allerdings arbeite ich noch mit Windows®7. Wie sich neuere
Windows-Versionen verhalten, kann ich leider nicht testen.
1.2.2 Stromversorgung
AVRs benötigen zum Funktionieren eine Betriebsspannung. Dazu reichen beim ATtiny13A
und beim ATtiny13V 1,8 V, beim ATtin13 2,7 V aus. Maximal darf bei allen
Typen 5,5 V an die positive Stromversorgung VCC, darüber gehen sie kaputt.
Wir arbeiten hier mit vier AAA-NiMH-Akkuzellen zu je 1,2 V, macht 4,8 V. Die
können entweder in einem Batteriehalter zusammengeschaltet werden oder als Akkupack
fertig verschweist sein. Aus dieser Quelle kann auch das Programmiergerät mit
versorgt werden (über die GND/VTG-Anschlüsse am ISP6), wenn das keine eigene
Versorgung aus der USB-Buchse mitbringt.
Wer Akkupacks nicht mag, kann jede andere beliebige Gleichspannungsquelle mit 4,5 bis
5,5 Volt verwenden. Sie kann auch weniger haben, bei den Experimenten ab Lektion
10 kommt aber eine LCD zum Einsatz, und die gibt es nur für 3,3 und 5 V
Betriebsspannung.
Wer solche Akkupacks nur deswegen nicht mag, weil er dafür kein passendes
Ladegerät nicht hat: dem kann abgeholfen werden. Das Schaltbild zeigt im linken
Teil das einfachste Ladegerät: ein Festspannungsnetzteil mit einem Widerstand.
Rechts die gehobene Variante mit einer Konstantstromquelle für 80 mA
Ladestrom. Das heisst ein völlig leerer Akkupack mit 800 mAh Kapazität
sollte über Nacht für 10 Stunden lang an die Lademimik. Nicht länger,
sonst geht er kaputt.
Wer vier Einzelakkus in ein gemeinsames Gehäuse stecken will oder wessen Akkupack
andere Kapazitäten aufweist, kriegt hier noch ein Ladegerät mit einer
Ladeanzeige mit Hinweisen auf die Dimensionierung. Das hat auch noch eine Ladeanzeige,
die an den laufenden Ladevorgang erinnert. Auch hier sollte nach 10 Stunden
Schluss sein, um den Akku nicht zu überladen.
Auf jeden Fall sollte das Laden getrennt vom Prozessor erfolgen, da die Spannung eines
vollgeladenen Akkupacks beim weiteren Laden locker die maximal 5,5 V Betriebsspannung
des Prozessors überschreiten kann.
Der Transistor braucht bei 12 V ab ca. 150 mA, bei 15 V ab ca. 100 mA
einen kleinen Kühlkörper.
Wer seinen Akkupack vor dem Laden kontrolliert entladen möchte, kann diese Schaltung
benutzen. Sie entlädt den Akkupack mit 150 mA. Sinkt seine Spannung unter
4,7 V, geht die LED aus.
1.2.3 Programmieradapter
Die nötige Hardware für den Zugriff auf den AVR ist hier gezeigt.
Bei der ISP-Schnittstelle erfolgt die Kommunikation zwischen dem Programmiergerät
und dem AVR-Chip über die drei Anschlüsse MOSI, MISO und SCK. Der AVR-Chip geht
in den Programmiermodus, wenn der RESET-Pin 1 auf niedrigem Potential liegt. Dieser Pin
wird durch den Widerstand von 10k auf Plus gezogen und vom Programmiergerät über
die Leitung RST auf Null gezogen. Ist die Programmierung beendet, lässt das
Programmiergerät diese Leitung wieder los, der 10k-Widerstand zieht RESET auf Plus
und das im Professor abgelegte Programm legt los.
Zwischen der positiven und negativen Betriebsspannung liegt noch ein Keramikkondensator mit
100 nF. Dieser blockt Spannungsschwankungen ab, die von den Schaltvorgängen im
Prozessor herrühren können. Der Kondensator ist so nahe als möglich an die
Betriebsspannungs-Pins 4 (GND) und 8 (VCC) zu montieren.
Die Pins des Prozessors sind mit denjenigen Signalnamen bezeichnet, die hier praktisch
zum Einsatz kommen. In anderen Anwendungen haben viele der Pins andere Funktionen bzw.
wechseln ihre Funktion nur im Programmiermodus (MOSI, MISO, SCK).
Mit dieser einfachen Hardware können wir schon mit dem AVR kommunizieren und in seine
Innereien eingreifen.
1.2.4 Bauteile
1.2.4.1 Der Akku
Das hier ist der verwendete Akkupack. Wir müssen den nicht unbedingt haben, verwendbar
ist alles was zwischen vier und fünf Volt abgibt und stabilisiert ist.
1.2.4.2 Der ISP6-Stecker
Der ISP-Stecker ist eine zweireihige dreipolige Stiftleiste. Für fliegenden Aufbau
und gedruckte Platinen reicht der Einbau einer solchen Stiftleiste aus. Bei Aufbau auf
dem Breadboard muss ein Adapter gebastelt werden.
Dieser ISP-Steckverbinder muss selbst gebaut werden. Dazu wird ein 3 * 4 Augen großes
Stück einer Lochrasterplatine abgesägt und auf der Lötseite eine 2 * 3-polige
Stiftleiste mittig aufgelötet (Stiftleiste nur bis Lochtiefe einstecken und mit
Lötauge verlöten). Danach zwei 3-polige einreihige Stiftleisten auf der
Bestückungsseite einlöten und mit den benachbarten Lötaugen der zweireihigen
Stiftleiste verbinden.
1.2.4.3 Der 10k-Widerstand
Das hier sind zwei Bauformen von Widerständen mit 10k. Oben ist ein
Kohleschicht-Widerstand, unten ein Metallfilm-Widerstand abgebildet. Die Kodierung des
Widerstandswerts ist angegeben.
1.2.4.4 Der 100 nF-Keramikkondensator
Das hier ist ein Keramik-Abblockkondensator mit 100 nF Kapazität.
1.2.4.5 Die 8-polige IC-Fassung
In diese Fassung kommt der 8-polige Mikroprozessor.
1.2.4.6 Der ATtiny13
Das hier ist der Mikroprofessor. Er hat in seinem Innern ganz viel Hardware, die wir noch
kennenlernen werden, angeschlossen an acht äußere Beine, die etwas eigenwillig
durchnummeriert sind (linkes Bild). Immerhin ist Pin 1 mehrfach gekennzeichnet. Zum
Einen ist an der Eins ein Dreieck aufgedruckt. Zum anderen ist eine Kuhle eingeprägt.
Zum Dritten besitzt der Chip mittig eine Einbuchtung an der Seite, auf der die Eins liegt.
Mit diesen Merkmalen ist es möglich, den Chip richtig herum in die Fassung zu stecken.
Er passt natürlich nicht in die zugehörige Fassung. Das liegt daran, dass
seine Beine nicht ganz rechtwinklig nach unten ragen sondern etwas nach außen gerichtet
sind. Also biegen wir die vier Beine jeder Seite vorsichtig etwas einwärts, indem wir
die jeweils vier Beine jeder Seite auf einer festen Oberfläche etwas eindrücken bis sie
rechtwinklig vom Plastikgehäuse abstehen. Warum das nötig ist, erschließt
sich nicht ganz. Wenn man das nicht macht, besteht die Gefahr, dass beim Eindrücken
des Chips in die Fassung Beine ganz arg verbogen werden. Dann besteht Lebensgefahr für
den Professor und man hat einen Heidenspaß damit, die verbogenen Beine wieder zu
begradigen, ohne dass diese abbrechen und damit die €0,90 in die Tonne getreten werden
können.
Es ist übrigens egal, ob wir den ATtiny13 oder den ATtiny13A verwenden. Der A ist
neuer und billiger als der ohne A, hat einen etwas geringeren Strombedarf und ist ansonsten
vom Programmieren her völlig identisch.
1.3.1 Das Breadboard
Das hier ist ein Ausschnitt aus dem Breadboard. Breadboard bedeutet "Brütbrett",
also ein Experimentier- oder Entwicklersystem. Mit dem Board kann man Schaltungen und Programme
ausprobieren, bevor diese in eine gedruckte Schaltung und in die
"Großproduktion" gehen.
Die grünen Linien zeigen, welche Löcher mit welchen intern verbunden sind (im unteren
Bereich sind nur fünf Verbindungen gezeigt). Die oberen beiden Reihen sind für die
Stromversorgung, die unteren Spalten für die Bauteile. Daraus wird jetzt auch klar, weshalb
der ISP6-Adapter so eigenartig aufgebaut werden muss: die Trennung in der Mitte ist nun mal
zwei Punkte auseinander, eine doppelreihige Stiftleiste würde kurzgeschlossen.
1.3.2 Der Aufbau
Der Aufbau geht in folgender Reihenfolge vonstatten:
- ISP6-Adapter und IC-Fassung platzieren.
- Stromversorgungsleitungen und Direktverbindungen Verdrahten.
- Alle anderen Bauteile (Widerstand, Kondensator) platzieren und verdrahten.
- Alle Verbindungen zwischen ISP6-Adapter und IC-Fassung "durchklingeln", das
heißt mit dem Durchgangsprüfer oder einem Ohmmeter auf Übereinstimmung
mit dem Schaltbild überprüfen.
- Stromversorgung (Akkupack) mit den Stromversorgungsleitungen des Breadboards verbinden.
- Mit einem Voltmeter an Pin 4 (GND, Minus) und 8 (VCC, Plus) sowie am ISP6-Stecker an
den Pins 6 (GND, Minus) und 2 (VTG, Plus) überprüfen, ob die Betriebsspannung
dort in Höhe und Polarität richtig anliegt.
- Den ATtiny13 in die Fassung drücken und das Programmiergerät an den
ISP6-Adapter anschließen. Die Kontrolllampe am Programmiergerät, falls es eine
solche hat, sollte jetzt grün leuchten.
Das Auslassen einzelner Schritte bei dieser Aufbaureihenfolge (besonders der Schritte 4 und 6)
wird garantiert mit Fehlermeldungen quittiert. Und für die Fehlersuche sind genau diese
beiden Schritte auszuführen, also warum nicht gleich so.
Die folgenden Bilder zeigen die Stadien des Aufbaus.
So sieht die Bestückung mit allen Bauteilen aus. Der Akku und der ATtiny sind noch nicht
angeschlossen, um die Prüfung der Verbindungen ungestört durchführen zu
können.
Der Akkupack setzt das Ganze unter Spannung, noch ohne den Tiny. Jetzt mit dem Voltmeter auf
richtige Polaritäten prüfen, um den Tiny nicht den Polaritätstod erleiden zu
lassen.
Hier ist jetzt alles komplett und der AVR-ISPmkII-Adapter angeschlossen. Der signalisiert nun
mit einem grünen Licht, falls er ein solches hat, dass er korrekt aus der
USB-Schnittstelle und mit einem weiteren Lämpchen, dass er korrekt aus der Zielschaltung
versorgt wird. Rote Lampen würden sagen, dass wir irgendetwas falsch gebaut haben.
Damit kann es jetzt losgehen mit den Experimenten und dem Zugriff auf die Innereien des Herrn
Professors.
Um an die Innereien des Professors heranzukommen, brauchen wir Software. Die kriegen wir
von ATMEL kostenlos, wenn wir
dort im AVR-8Bit-Teil nach dem Studio suchen. Allerdings nur für Windoof.
Die folgenden Beispiele sind mit dem ATMEL Studio in der Version 4 erstellt. Das ist eine
ältere Version der Studio-Software, die es bei ATMEL® auch noch zum Download
gibt. Die hat zwar noch erhebliche Fehler, die bis zum Absturz der Software führen
können. Aber immer noch besser als die späteren Versionen 5, 6 und 7. Die
arbeiten grundsätzlich genauso, sehen nur ein wenig anders aus und brauchen unangenehm
viel Zeit und Speicher, bis sie das tun, was sie sollen, weil sie völlig überladen
sind (Elefanten-Software). Wichtig: gleich zu Beginn "Assembler" auswählen.
So sieht das Studio nach dem Start aus: es fordert uns auf, ein neues Projekt anzulegen. Dazu
wählen wir ein Assemblerprojekt, geben dem Projekt einen aussagekräftigen Namen,
lassen das Studio eine entsprechende Quelldatei gleichen Namens in einem von uns eingestellten
Ordner des Dateisystems anlegen und gehen auf Next.
Wir wählen als Plattform den Simulator und als Device den ATtiny13 aus.
Für unsere Erkundungen der Innereien ist das Tools-Menue entscheidend.
Nachdem wir das Programmiergerät der USB-Buchse nähergebracht haben, wählen
wir im Tools-Menue "Program AVR" und "Auto Connect" in der Hoffnung, es
möge erraten, was wir tun möchten.
Hat er die USB-Schnittstelle erkannt, öffnet sich das Toolsfenster. In diesem Fenster
schalten wir auf den Tab "Main" um.
Hier gibt es nun einiges einzustellen. Im Feld "Device and Signature Bytes"
wählen wir schon mal den ATtiny13 aus, drücken aber noch nicht den Button
"Read Signature". Zuerst lesen wir im unteren Feld, was uns die Software mitteilt.
Dann vergewissern wir uns, dass in den "Programming Mode and Target Settings" der
ISP-Mode und dass die ISP-Frequenz unter 300 kHz liegt (wenn nicht: Button
"Settings" betätigen und die Frequenz neu einstellen. Erst dann können
wir die Signatur lesen.
Das ist der Bericht des Programmiergeräts. Es hat die Signatur gelesen, mit dem
Sollwert des ATtiny13 verglichen und festgestellt, dass sie korrekt ist. Alles ist prima,
unser Gerät funktioniert.
Wäre dem nicht so, dann käme jetzt diese oder eine ähnliche Fehlermeldung.
Dann ist Fehlersuche angesagt. Also brav Spannungen messen und Schaltung durchklingeln, wie
oben beschrieben.
Um noch einen Blick auf die Fuses des Herrn Professors zu werfen, wird der Tab
"Fuses" betätigt. Hier sollte erst mal gar nix geändert werden, weil
unkoordinierte Verstellungen schnell zu einem unbrauchbaren und nicht mehr ansprechbaren Chip
führen können. Wer hier schon verstehen möchte, was die einzelnen Fuses so
bewirken, wirft einen oder mehrere Blicke in das Device Databook des ATtiny13 (zu kriegen
unter dieser Adresse,
176 Seiten).
Das hier versteckt sich unter dem Tab "Lockbits": die Schalter zum Abstellen des
Auslesens. Sie können nur überschrieben werden, wenn man den gesamten Speicher
löscht (mit dem Button im Tab "Main"). Perfekter Softwareschutz.
Soweit die Innereien des Herrn Professors. Mehr kommt später.
©2016-2018 by http://www.gsc-elektronic.net