Pfad: Home ==> Mikrobeginner ==> 1. ISP     This page in English (external): Flag EN
ATtiny13

Lektion 1: ISP-Programmier-Interface


1.0 Übersicht

  1. Einführung
  2. Hardware
  3. Bauteile und Aufbau
  4. Bedienung

1.1 Einführung

Um Mikroprozessoren in den Griff zu bekommen, braucht man eine Steuerungsmöglichkeit. Mit Hilfe dieser Steuerung kann man 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.

Programmieren
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.
Home Top Einführung Aufbau Bedienung

1.2 Hardware

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.

Ladegeräte 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.

Ladegerät mit Anzeige 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.

Entladeschaltung 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

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.
Home Top Einführung Hardware Bedienung

1.2.4 Bauteile

1.2.4.1 Der Akku

LEFT RIGHT

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.

ISP6-Stecker 2 ISP6-Stecker 3 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

Widerstand 10k 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

Keramikkondensator 100nF Das hier ist ein Keramik-Abblockkondensator mit 100 nF Kapazität.

1.2.4.5 Die 8-polige IC-Fassung

DIP8-Fassung In diese Fassung kommt der 8-polige Mikroprozessor.

1.2.4.6 Der ATtiny13

ATtiny13-20PU ATtiny13-20PU 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 Aufbau

1.3.1 Das Breadboard

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.

Breadboard-Verbindungen 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:
  1. ISP6-Adapter und IC-Fassung platzieren.
  2. Stromversorgungsleitungen und Direktverbindungen Verdrahten.
  3. Alle anderen Bauteile (Widerstand, Kondensator) platzieren und verdrahten.
  4. 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.
  5. Stromversorgung (Akkupack) mit den Stromversorgungsleitungen des Breadboards verbinden.
  6. 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.
  7. 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.

Bestückung 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.

Versorgung 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.

Adapter 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.
Home Top Einführung Hardware Aufbau

1.4 Bedienung

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.

Studio-Projekt 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.

Device-Auswahl Wir wählen als Plattform den Simulator und als Device den ATtiny13 aus.

Studio-Start Für unsere Erkundungen der Innereien ist das Tools-Menue entscheidend.

Tools-Autoconnect 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.

Das Tools-Fenster Hat er die USB-Schnittstelle erkannt, öffnet sich das Toolsfenster. In diesem Fenster schalten wir auf den Tab "Main" um.

Einstellungen 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.

Signatur 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.

Error 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.

Fuses 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).

Lockbits 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.
Home Top Einführung Hardware Aufbau Bedienung

©2016-2018 by http://www.gsc-elektronic.net