Home ==> Mikroprozessorkurs
ATtiny13

Kurs zum Erlernen von Mikroprozessorentechniken

Diese Webseite stellt anhand von Lektionen die Hard- und Software von AVR-Mikroprozessoren vor. Anhand von Experimenten auf einem Breadboard werden wichtige Techniken erläutert und praktisch erprobt. Die nötige selbstgebaute Assembler-Software zeigt, wie die Hardware entsprechend den eigenen Zwecken und Aufgabenstellungen nutzbar ist.

Hinweis

Auf der Webseite werden vielfach Auszüge aus den Device-Handbüchern verwendet. Das Copyright für diese Auszüge liegt bei ATMEL.

Lernkonzept und Assembler

Das Programmieren wird hier nicht auf "Vorrat" erlernt, sondern in engem Zusammenspiel mit der Hardware der Prozessoren und anhand von geeigneten praktischen Experimenten. Wer das systematische Erlernen bevorzugt, kann sich unter dieser Adresse ein Tutorial reinziehen oder dort auch bei Bedarf nachschlagen.

Das Konzept, Hardware und Programmieren gemeinsam zu lernen, geht vernünftig nur in Assemblersprache. Wer wissen will, wie der Chip wirklich arbeitet und was geht und warum anderes nicht geht, sollte sich mit Assembler befassen. Es ist nun mal die einzige Sprache, die der Prozessor versteht und selber spricht (nach Übersetzung in Nullen und Einsen, natürlich, genannt Assemblieren).

Wer hingegen mit Hochsprachen anfängt, befasst sich überwiegend mit den Eigenheiten dieser Sprache ("Wie geht hexadezimal in C?") und mit den von anderen in Assembler geschriebenen Bibliotheken, lernt aber leider rein gar nix über den Prozessor selbst. Schon die einfachsten Hardware-Aufgaben bleiben dann unlösbar und es bleibt nur die Suche im Internet, ob es vielleicht schon ein anderer gelöst hat. Falsch herum gelernt: gar nicht erst mit den Basics von Hard- und Software des Prozessors angefangen und, selbst daran natürlich völlig unschuldig, auf ewig Gefangener der eigenen Unkenntnis geblieben.

Lektionen - und was hier im Einzelnen an Beispielen gelernt werden soll

Die 14 Beispiele wurden so ausgewählt, dass möglichst Wer also die eine oder andere ausgewählte Anwendung so gar nicht praktisch gebrauchen kann, kann vielleicht trotzdem aus dem Beispiel lernen, wie man ein Problem löst und kann die demonstrierten Prinzipien auf die eigene Anwendung übertragen und an die jeweils eigenen Bedürfnisse anpassen.
Nr.Beschreibung, LinkInterne HardwareExterne Hardware Programmierkünste
1Programmier-Interface
Der PC spricht mit dem Microcontroller
ISP-Interface der AVRs, Fuses ISP6-Schnittstelle zum Programmiergerät (Noch keine)
2Eine LED einschalten
Eine LED am Controller ein- und ausschalten
I/O-Port, Portausgang und -richtung LEDs, Ansteuerung Quellcode schreiben, assemblieren, Listings und Hexdateien, Programmausführung, unendliche Schleifen
3Eine LED blinken lassen
Schnelles Blinken mit der LED, Sekundenblinker
I/O-Port LED-Ansteuerung Verschachtelte Schleifen, Zählschleifen, Ausführungszeiten von Instruktionen, Nullflagge, zeitgenaue Zählschleifen
4Eine LED blinkt mit dem Timer
Der Timer steuert eine LED im Takt und schaltet ganz alleine an und aus
8-Bit-Timer, Vergleicher, OC-Pin-Steuerung Impulsansteuerung von Ausgängen Timer-Konfiguration, Starten und Anhalten des Timers, Timer-Modi Normal und CTC, Schlafmodus
5LED mit Pulsweitenmodulation
Helligkeitssteuerung der LED über Pulsweiten an OC-Ausgabepins
8-Bit-Timer, Pulsweitenmodus Pulsweitensignale Mathematische Ausdrücke in Assembler
6LED mit Timer-Interrupts
Eine LED mit Interrupts des Timers ansteuern
Interruptkontrolle, Timer-Interrupts Steuerung von Ausgängen mit Interrupts Interruptkonzept, Vektortabelle, Interruptprogrammierung, Timer-Interrupts, Interrupt-Service-Routinen
7Eine LED mit Timer und Taster
Taste startet einen Ablauf
INT0- und Timer-Int-Steuerung I/O-Ansteuerung Fließdiagramme für Ablaufplanungen, INT0- und Timer-CTC-Interrupts verheiraten
8Eine LED mit komlexem Ablauf
Timer, Tasterbedienung, Potentiometer-Helligkeitssteuerung und Interrupts
Analog-Digital-Wandler Externe Spannungen messen Noch mehr Fließdiagramme, Tastenprellunterdrückung, OC0A- und OC0B-Programmierung
9Töne mit dem Timer
Der Taster macht Töne und das Potentiometer macht die Tonhöhe
ADC, Timer, INT0 Lautsprecheranschluss Tabellen, Notentabelle, Multiplikation 8-mal-8-Bit
10Eine LCD-Anzeige am Tiny24
Initiierung von LCDs, Ausgabe von Zeichen auf einer LCD, exakte Verzögerungsschleifen, Eigendesign von LCD-Zeichen
I/O-Port-Richtungssteuerung LCD-Anschluss und -steuerung Exakte Verzögerungsschleifen für LCD, Initiierung von LCDs
11Einschaltzähler mit dem EEPROM
Die Anzahl Startvorgänge des Controllers im EEPROM zählen
EEPROM RESET-Taster Umwandlung von 8- und 16-Bit-Binärzahlen in ASCII und Anzeige auf der LCD
12Infrarot-Sender -Empfänger
Analyse von IR-Signalfolgen, Senden von IR-Signalfolgen, selbstlernender Fernsteuerempfänger
Zeitmessung mit Timer und INT0 Anschluss von IR-Empfangsmodulen und IR-Sendedioden Anzeige von Binärzahlen im Hexadezimalformat, Messen und Verarbeiten von Signaldauern, .if-Direktive zur Versionsanpassung in Assembler
13Ein Frequenz- und Induktivitätsmessgerät
Frequenzmessung mit externem Interrupt und dem Analogvergleicher, Induktivität mit LC-Oszillator bestimmen
Analogvergleicher, PCINT Analogvergleicher und LC-Oszillator anschließen 24/32/40-Bit-Binär-zu-Dezimal-Umwandlung, 24-Bit-Multiplikation, 40-durch-40-Bit-Division
14Spannung, Strom, Temperatur messen
Spannungen, Ströme und Temperaturen messen und anzeigen
ADC-Betriebsmodi, Differenzverstärker, eingebaute Thermometer Spannungsteiler, Stromshunts Intensive Multiplikationen und Pseudo-Fließkommazahlen-Operationen zur Anzeigeumwandlung
-Fazit aus den Lektionen - - -

Hilfsanhänge

Wer diese Seiten zum Nachschlagen verwenden will, wird die folgenden Seiten gut gebrauchen können:

Downloads

Hier ist der gesamte Kurs in einem einzigen PDF-Dokument (überarbeitete Version 2018, ca. 257 Seiten, ca. 16 MB, mit 446 Abbildungen, Bildern, Zeichnungen und Grafiken).

In quellcodes.html sind Links zu allen Assembler-Quellcodes zugänglich.

Hardware

Benötigt werden für die Experimente neben dieser Beschreibung einige Bauelemente, die im Elektronikhandel beschafft werden können. Diese sind Lektion für Lektion in einer Bauteileliste zusammengestellt.

Für die Experimente ab Lektion 11 (ATtiny24 mit 4*20-LCD) wurde eine kleine Experimentalplatine entwickelt (siehe tn24_lcd, so dass das Verdrahten des ATtiny24 und der LCD auf dem Breadboard entfällt. Stattdessen ist die Experimentierplatine mit einem sechsadrigen Flachbandkabel mit dem Breadboard zu verbinden, der Aufbau der Peripherie erfolgt dann wie beschrieben auf dem Breadboard. Alle hier veröffentlichte Software läuft ohne Änderungen auch auf der Experimentalplatine (bitte dazu die LCD-Include-Routine Lcd4Busy.inc verwenden und nicht die mit dem Experimentierboard veröffentlichte Version tn24_lcd_busy.inc!).

Copyright-Hinweis

In diesem Text werden vielfach Auszüge aus den Device-Handbüchern verwendet. Das Copyright für diese Auszüge liegt bei ATMEL.

Der Text enthält insgesamt 243 Bilder, Abbildungen und Grafiken. Alle nicht von ATMEL stammenden Bilder sind (C)2016/2018 von mir. Vor Verwendung dieser Grafiken die Quelle nennen oder verlinken oder bei mir nachfragen, ob ich mit der vorgesehenen Verwendung einverstanden bin.

Update 2018

Im Dezember 2017/Januar 2018 wurde eine grundlegende Überarbeitung vorgenommen. Dabei wurde Folgendes gemacht:

Kommentare

Wer Tippfehler findet, darf sie gerne behalten. Kommentare sind trotzdem hochwillkommen. Entweder per Email (info@ und Domain-Adresse) an den Autor oder über den Button



Besonderen Dank möchte ich Carsten Henckell sagen. Er hat bislang (Januar 2018) als Einziger eine detaillierte Stellungnahme zu der Webseite abgegeben. Die in seiner Stellungnahme enthaltenen sehr wertvollen Anregungen und Hinweise habe ich bei der Überarbeitung berücksichtigt. Vielen Dank.

Popularität

Zugriffe 2016 bis 2017 Das Diagramm zeigt die kontinuierliche Popularität dieser Seite. Wer also meint, AVR-Assembler sei nur was für ein paar ausgeflippte Nerds, der irrt offenbar.

Zugriffe 2017 auf Quellcode-Dateien Mit dem Download von ca. 23 Assembler-Quellcode-Dateien pro Tag in 2017 zeigt sich ebenfalls die Popularität von Assembler. Populär bei den Quellcode-Dateien sind zwar überwiegend die verschiedenen LED-Blink-Varianten, aber da dahinter auch Timer in diversen Modi werkeln, ist die Anzahl Downloads erstaunlich hoch. Es scheint also doch nicht nur noch C-Anwender mit ihrem langweiligen Arduino-Tick zu geben sondern auch viele Menschen, die den Wert angeblich obsoleter Programmiermethoden zu schätzen wissen und sich bemühen zu verstehen, was in den schwarzen Käfern echt abgeht.

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