Pfad: Home => AVR-Überblick => Absolute Beginner AVR-ICs

AVR für absolute Beginner

Hier wird für den absoluten Anfänger und Outsider erläutert,

Was bedeutet eigentlich AVR?

Die einfachste Antwort: sie bedeutet gar nix außer dass es ein Markenzeichen der Herstellerfirma ATMEL ist, also muss es eigentlich AVR® heißen. Was immer andere im Internet da hineindeuten, es ist reiner Spekulatius und nicht von Bedeutung.

Mit der Abkürzung erschließt sich also rein gar nix. Man muss zum Verständnis da schon tiefer hinein.

Was ist eigentlich ein Mikrocontroller?

Auf dem Bild sind ein paar AVR-Mikrocontroller abgebildet.

AVR-Prozessoren

Rein physisch handelt es sich also um Integrierte Schaltungen in unterschiedlich großen Packungen und mit einer unterschiedlichen Anzahl an Beinen. Der kleinste links oben (es handelt sich nicht um einen Kleinkäfer oder eine Kleinstspinne, die ins Bild gelaufen ist!) hat sechs Beine, der zweitkleinste acht und der größte hier Abgebildete vierzig Beine. Es gibt noch größere, aber die sind nix für kurzsichtige Bastler.

Mikrocontroller sind auf den ersten Blick also elektronische Bauelemente, wie Transistoren, Dioden, Widerstände und Kondensatoren auch. Sie werden über mindestens zwei ihrer vielen Anschlusspins mit Strom versorgt und verbrauchen dabei etwas Strom (aber nicht sehr viel).

Als Integrierte Schaltkreise (ICs) bezeichnet man Zusammenstellungen von einzelnen Bauelementen (wie Transistoren, Dioden, etc.) dann, wenn sie in einer einzigen Packung zu Vielen zusammen auftreten. Und in den unscheinbar kleinen schwarzen Boxen sind viele Tausend davon verbaut, auch schon im Kleinsten. Man kann sagen, diese Packungen bestehen überwiegend aus Plastik und Anschlusspins, während die eigentlichen Innereien nur sehr wenig Platz einnehmen. Das das Plastik aber nicht arbeitet und die Pins nur den Kontakt zwischen innen und außen herstellen, sind sie viel uninteressanter als die Innereien.

An den Seitenanfang

Was macht eigentlich ein Mikrocontroller?

Der Elektroniker schließt die von außen zugänglichen Pins an seine Elektronische Schaltung an und die kleinen ICs messen, steuern oder beobachten das, was an ihren Pins so vor sich geht. Was die einzelnen Pins nun genau tun, hat der Elektroniker in einem Programm vorher festgelegt. Das Programm hat er in die Speicher des ICs abgelegt (programmiert). In dem Programm ist die Funktion jedes Pins vorher festgelegt. Und auch was passiert, wenn eine bestimmte Bedingung eintritt, steht alles im Programm.

An einem einfachen, aber blödsinnigen Beispiel: Das Programm veranlasse den Professor, ständig den Spannungszustand an einem Pin zu lesen, und wenn die Spannung hoch ist, an einem anderen Pin auch eine hohe Spannung einzustellen. In diesem Beispiel besteht der Programmablauf aus drei Schritten:
  1. lese Zustand am Eingangspin,
  2. gib den gelesenen Zustand am Ausgangspin aus, und
  3. starte wieder von vorne.
Solange der Prozessor mit Strom versorgt wird, führt er diese drei Schritte immer wiederkehrend aus und wird nicht müde, im Kreis herum zu rennen.

Das Programm muss noch Folgende Schritte zusätzlich machen: Fast alle Pins können per Programm so in ihrer Richtung umgestellt werden. Unter anderem das macht einen Mikroprofessor so ungemein vielseitig.

An den Seitenanfang

Wozu kann man so einen Mikrocontroller verwenden?

Das Beispielprogramm ist deswegen blödsinnig, weil der Herr Professor mit dieser Aufgabe völlig unterausgelastet wäre. An ein paar weiteren Beispielen, wo sich Mikroprofessoren nützlich machen: Heute kann folglich niemand diesen Dingern entgehen. Sie steuern uns, nicht wir sie. Schade, dass Viele gar nichts über sie wissen, wo sie uns doch so gängeln. Ein paar Gefahren wurden schon genannt. Eine der Wichtigsten ist, dass Mikroprofessoren bei Einbrüchen ihrer Versorgungsspannung, auch wenn sie ganz kurz sind (Spikes), panisch reagieren. Auch gegen starke Magnet- oder Elektrofelder sind sie empfindlich und machen dann nicht mehr ihren normalen Job. Handelt es sich dabei um die Bremsmimik einer Straßenbahn, kann das arg böse ausgehen. Dann ist der Prozessor unser Tod.

An den Seitenanfang

Was ist in so einem Mikrocontroller drin?

Jetzt folgt so eine kleine Auflistung, was alles in so einem kleinen Ding drin ist. Zuerst kommen die Sachen dran, die immer drin sind, danach die, die per Programm "zuschaltbar" sind. Immer drin ist: Da ist aber noch viel mehr drin, das der Programmierer bei Bedarf zuschalten kann, nämlich: Dieser kleine Ausflug in die Innereien zeigt, dass diese Dinger fast alles können, was man früher alles mechanisch oder mit einer Vielzahl elektronischer Einzelbauteile zusammenstricken musste oder gar nicht machen konnte.

Für die meisten AVR bezahlt der Kleinverbraucher maximal ein paar Euro oder weniger als einen Euro (mit das alles drin!). Nimmt man einige 100.000 davon ab, kriegt man sie für weniger als ein Ei kostet. Der Preis und die Vielfalt erklärt, warum wir auf Schritt und Tritt von den Dingern verfolgt werden.

An den Seitenanfang

Wie schließt man einen Mikrocontroller an?

Das Schaltbild zeigt einen solchen Mikrocontroller bei der Arbeit.

Schaltbild Codeschloss

Es handelt sich um eine Schaltung für ein Codeschloss. Im Einzelnen besteht es Die geheime Stellung wird so eingestellt, dass das Poti auf den Sollwert gestellt wird und während des Einschaltens der Betriebsspannung die Taste gedrückt bleibt. Die Stellung des Potis wird dann in den EEPROM-Speicher geschrieben und bleibt bis zur nächsten Umprogrammierung dort erhalten, selbst wenn der Strom ausfällt.

Die ganze Mimik passt auf ein kleines Platinchen (40 * 25 mm) und hätte früher, ohne Mikroprofessor und mit Logik-ICs, eine große Europakarte (100 * 160 mm) mit Bauteilen gefüllt. Heute kann man das bequem in den vorhandenen Türöffner mit rein quetschen.



An den Seitenanfang

Das Programm zum Professor

Die Schaltung selbst tut erst mal rein gar nix und reagiert auf nichts. Sie tut es erst, wenn wir ihr ein Programm eingehaucht haben.

Vom Programmablauf her ist Folgendes zu tun:
  1. Nach dem Einschalten werden zuerst die Richtungen der Pins festgelegt: OC0A, PB1 und PB2 sind Ausgänge, PCINT4 ist Eingang und ADC3 ist weder Eingang noch Ausgang (Treiber abgeschaltet). Bei PCINT4 wird der eingebaute Pull-Up-Widerstand eingeschaltet, damit er nur beim Drücken der Taste auf logisch Null geht.
  2. Dann ist der Tastenzustand abzufragen. Ist er Null, dann will der User programmieren. Dazu wird der AD-Wandler am Kanal 3 gestartet. Ist der fertig, wird der Wert gelesen und in das EEPROM abgelegt.
  3. Alles Weitere geht interrupt-gesteuert, während der Prozessor schläft. Er wacht nur bei Tastendruck kurz auf, startet eine AD-Wandlung am Kanal 3 und pennt wieder weg. Ist die Wandlung fertig, weckt sie den Professor wieder auf, vergleicht den Wert mit dem im EEPROM gespeicherten, bei (ungefährer) Gleichheit schaltet er das Relais an, startet den Timer und legt sich wieder schlafen. Ist der Timer abgelaufen, schaltet er das Relais wieder aus.
  4. Ist der Wert nicht annähernd gleich, dann wird ein Zähler bis drei gesetzt. Sind drei falsche Werte hintereinander eingesetzt worden, geht der Prozessor in den Bestrafungsmodus, schaltet die Tasterunterbrechung ab, startet den Timer im 10-Minuten-Warte-Modus, versetzt die LED in Blinkmodus und legt sich wieder schlafen. Erst wenn der Timer sagt, dass jetzt 10 Minuten um sind, schaltet er die Tasterunterbrechung wieder an und die LED auf Dauerfeuer.
  5. Bei allen möglichen Gelegenheiten brauchen wir noch Piepstöne. Beim Programmieren des Sollwerts, beim erfolgreichen Öffnungsversuch, beim Falschraten und beim Ende des Penalties geben wir passende Töne auf dem Lautsprecher aus. Dazu schalten wir den Timer mit der gewünschten Schwingfrequenz ein und den Ausgang OC0A auf Torkeln (das heißt wirklich so, "toggle" in englisch). Hat der Timer lang genug getorkelt, nehmen wir den Torkler wieder raus und im Lautsprecher kehrt Ruhe ein.
Diesen Programmablauf hacken wir in Assemblersprache in eine Textdatei namens "codeschloss.asm" und werfen die Datei dem Assembler (einem PC-Programm, ich empfehle mein Eigenprodukt gavrasm, das es für Windoof, Linux und DOS gibt) zum Frass vor. Erscheint keine Fehlermeldung, dann macht dieses Programm daraus zwei neue Dateien mit Namen "codeschloss.hex" und "codeschloss.eep". Die enthalten lauter hexadezimale Hieroglyphen, die aber von einem Brennprogramm verstanden werden. Das Brennprogramm verbrennt nicht etwa den Inhalt der Hex-Datei, sondern schreibt den Inhalt der Hex-Datei in den Programmspeicher des angeschlossenen Mikroprofessors, die Eep-Datei in den EEPROM-Speicher. Der Professor hat jetzt genau das Futter, das er versteht, nämlich binäre Befehlsworte. Und die führt er dann aus, so wie wir es vorherbestimmt haben.

Haben wir irgend etwas falsch gemacht, ist der Herr Professor stur und lässt uns nicht in die Wohnung. "Er" macht schon ganz genau, was wir ihm gesagt haben, aber nicht das, was wir "gewollt" haben, weil wir ihm was anderes "gesagt" haben. Der Herr Professor versteht "Bahnhof" und macht stur "Bahnhof", nix anderes. So schlimm steht es auch nach vielen Entwicklungsjahren noch immer um die Intelligenz der IT. Dieses mühsame Herantasten an die selbst produzierten Fehler und Fallen heißt Debuggen oder Entwanzen und kann um ein Vielfaches länger dauer als das eigentliche Programmieren. Es kann den Programmierer in die Raserei treiben, deshalb ergeht an die umstehenden Leidtragenden die Warnung, dem debuggenden Hausherrn bloß nicht zu nahe zu treten, schon gar keine Ansprüche an ihn zu stellen ("Du könntest auch mal wieder den Müll runterbringen statt Dich tagelang in den PC zu verkriechen!") oder ihn mit bivalenten Fragen zu reizen ("Wer ist Dir wichtiger, ich oder Dein blöder Mikroprofessor?"). In dieser wichtigen Phase kann die Reaktion den Tatbestand der Körperverletzung erfüllen, aber mindestens den der Beleidigung. Er wird aber auf "unzurechnungsfähig wegen Debuggens" plädieren und damit womöglich sogar durchkommen, wenn der Richter selbst mit Mikroprofessoren basteln sollte und diesen Ausnahmezustand aus eigenem Erleben kennt.

Ist das Programm endlich bug-frei, geht das Ganze ab in den Klingelkasten und erfreut die Familienmitglieder, weil sie jetzt dank Herrn Professor auch ohne Schlüssel in die Wohnung kommen. Bis der Hausherr mal wieder umprogrammiert und Niemandem Bescheid gesagt hat (Schlüsselfaktor Mensch). Dann hilft bei geschätzten 330 Einstellmöglichkeiten des Potis auch nicht Ausprobieren, denn 110 mal 10 Minuten (merke: immer nur der letzte Versuch klappt) gibt 1.100 Minuten oder 18 Stunden Probierzeit. Wer noch sicherer gehen will, setzt einfach den Timertakt herunter, die Karenzzeit herauf oder stellt den Fehlerzähler schon auf zwei gescheiterte Versuche und nur bei einem gelungenen Versuch wieder auf Null. Kleine Programmänderungen mit großer Wirkung. So flexibel sind nur Mikroprofessoren.

An den Seitenanfang

Was unterscheidet AVR von anderen Mikrocontrollern?

Für den Kleinanwender gibt es nur wenige Prozessorfamilien zur Auswahl. Eigentlich stellt sich die Auswahlfrage nur bei zwei Familien: die AVR und die PIC. Alle anderen sind Industrieprodukte, die für den Kleinanwender riesige Hürden aufwerfen und deshalb nicht ernsthaft in Frage kommen.

Ein paar grundlegende Unterschiede zwischen AVR und PIC sind: Im Folgenden sind drei verschieden große AVR- und PIC-Typen miteinander verglichen und bewertet. Dabei kommt nicht die jeweils neueste Generation zum Vergleich, sondern Chips mit ähnlich gleichem Alter und Zuschnitt.

Tabelle 1: 8polig

PIC vs. AVR, 8-polig












PIC AVR Besser: Faktor:

Dimension 10F200 ATtiny13

max. Takt MHz 4 20 AVR 5
Zeit pro Instruktion µs 1 0,05 AVR 20
Anzahl Instruktionen [Anzahl] 33 120 AVR 3,64
Genauigk. int. RC % 1 10/3 PIC 3,33
Register [Anzahl] 1 32 AVR 32
Programmspeicher [Instruktionen] 256 512 AVR 2
EEPROM-Speicher Bytes 0 64 AVR exklusiv
SRAM-Speicher Bytes 16 64 AVR 4
max. Stapeltiefe [Adressen] 2 32 AVR 16
Interrupts [Anzahl] 0 10 AVR exklusiv
8-Bit-Timer [Anzahl] 1 1 - -
8-Bit-PWM-Kanäle [Anzahl] 0 2 AVR exklusiv
AD-Kanäle [Anzahl] 0 4 AVR exklusiv
Preis (Reichelt) 0,52 1,40 PIC 2,69

Tabelle 2: 28polig

PIC vs. AVR, 28-polig












PIC AVR Besser: Faktor:

Dimension 16F870 ATmega8

max. Takt MHz 20 16 PIC 1,25
Zeit pro Instruktion µs 0,2 0,06 AVR 3,2
Anzahl Instruktionen [Anzahl] 35 130 AVR 3,71
Genauigkeit int. RC % 1 3/1 PIC 3
Register [Anzahl] 1 32 AVR 32
Programmspeicher [Instruktionen] 2048 4096 AVR 2
EEPROM-Speicher Bytes 64 512 AVR 8
SRAM-Speicher Bytes 128 1024 AVR 8
max. Stapeltiefe [Adressen] 8 512 AVR 64
8-Bit-Multiplizierer - nein ja AVR exklusiv
Interrupts [Anzahl] 11 19 AVR 1,73
8-Bit-Timer [Anzahl] 2 2 - -
16-Bit-Timer [Anzahl] 1 1 - -
8-Bit-PWM-Kanäle [Anzahl] 0 3 AVR exklusiv
10-Bit-PWM-Kanäle [Anzahl] 1 2 AVR 2
16-Bit-PWM-Kanäle [Anzahl] 0 2 AVR exklusiv
AD-Kanäle [Anzahl] 5 5 - -
UARTs [Anzahl] 1 1 - -
Preis (Reichelt) 3,10 2,40 AVR 1,29

Tabelle 3: 40polig

PIC vs. AVR, 40-polig












PIC AVR Besser: Faktor:

Dimension 16F877 ATmega32

max. Takt MHz 20 16 PIC 1,25
Zeit pro Instruktion µs 0,2 0,06 AVR 3,2
Anzahl Instruktionen [Anzahl] 35 131 AVR 3,74
Genauigkeit int. RC % 1 3/1 PIC 3
Register [Anzahl] 1 32 AVR 32
Programmspeicher [Instruktionen] 8192 16384 AVR 2
EEPROM-Speicher Bytes 256 512 AVR 2
SRAM-Speicher Bytes 368 1024 AVR 2,78
max. Stapeltiefe [Adressen] 8 512 AVR 64
Interrupts [Anzahl] 15 19 AVR 1,27
8-Bit-Multiplizierer - nein ja AVR exklusiv
8-Bit-Timer [Anzahl] 2 2 - -
16-Bit-Timer [Anzahl] 1 1 - -
8-Bit-PWM-Kanäle [Anzahl] 0 1 AVR exklusiv
16-Bit-PWM-Kanäle [Anzahl] 2 2 - -
AD-Kanäle [Anzahl] 8 8 - -
UARTs [Anzahl] 1 1 - -
Preis (Reichelt) 5,20 3,90 AVR 1,33
Wie man an der Vergleich sieht, haben die AVR die Nase vorn bei Die PIC haben nur bei der Genauigkeit der internen Taktgeneratoren die Nase vorn. Preislich sind keine wirklich signifikanten Unterschiede vorhanden.

An den Seitenanfang

Was kann der Amateur damit anfangen?

Die Beispiele haben gezeigt, dass man für wenige Cent ein ganzes Arsenal an geballter Elektronik kriegt, mit dem sich fast jedes Steuer- und Regelproblem lösen lässt. Hilfen zum Lernen, Tips und die Werkzeuge zum Programmieren gibt es (fast) kostenlos. Nur die Mühe, die Assemblersprache zu erlernen, nimmt einem niemand ab. Dafür lohnt es die Mühe aber schon ab dem dritten gebauten Schächtelchen mit eingebautem Professor.

zum Seitenanfang


©2012 by http://www.avr-asm-tutorial.net