In allen hier vorgestellten Übungen werden wir mit drei verschiedenen Controllern, dem ATtiny13, dem etwas größeren ATmega8A und dem ATmega88 arbeiten.
Schauen wir uns zunächst die Pinbelegung und Ausstattung der drei genannten Controller an.
Die Pinbelegung
Port B (PB0:PB5)
Alle sechs Ports sind bidirektionale I/O Ports mit internen Pull-Up-Widerständen, die sich einzeln einschalten lassen. Die Ausgangspuffer des Ports B haben symmetrische Treibercharakteristiken als Stromsenke und Stromquelle.
Alle Portpins arbeiten, wenn sie als Eingang mit Pull-Up Widerstand beschaltet sind, wie Stromquellen, wenn sie auf LOW gesetzt werden.
/Reset
Ein LOW an PB5 mit einer Pulslänge von ca. 1ms - 2ms aktiviert einen Reset, vorausgesetzt, dass der Reset-Pin nicht abgeschaltet wurde.
Einige Leistungsdaten
Interrupts
Es gibt zwei Arten von Interrupts:
solche, die durch ein Ereignis ausgelöst werden, bei dem das Interrupt-Flag gesetzt wird und
solche, die ausgeführt werden, sobald eine bestimmte Interrupt-Bedingung erfüllt ist (dabei wird nicht notwendigerweise ein Flag gesetzt).
Nach einem Interrupt kehrt der Controller zurück in das Hauptprogramm und arbeitet ab der Programmzeile weiter, die nach dem Auslösen des Interrupts folgt.
Die Ausführungszeit für einen Interrupt beträgt 4 Taktzyklen; ein Return-from-Interrupt dauert ebenfalls 4 Taktzyklen.
Taktgeber
Die Taktgeber werden über CKSEL in den Fuses eingestellt. Der ATtiny13 wird nicht von einem externen Oszillator betrieben. Die Genauigkeit der Taktfrequenz von +/-10% reicht für Schul- und Heimversuche völlig aus.
Werkseinstellung der internen Taktquelle
CKSEL = 10, SUT = 10 und CKDIV8 sind werkseitig voreingestellt. Änderungen an diesen Einstellungen sind über die Fuses möglich.
Die Spannungsversorgung des ATtiny13
Bewährt hat sich ein Nullkraft-Sockel für den Controller auf dem Steckbrett. Er ist leicht zu entnehmen und kann auf die gleiche Art in den Nullkraft-Sockel des Brenners eingelegt werden. Sehr zu empfehlen!
Ist kein Mikrocontrollerboard vorhanden, gelingt die Spannungsversorgung auch mit Hilfe eines Batteriehalter für 3 AA-Batterien.
Für umfangreichere Problemlösungen bieten sich die beiden Controller ATmega8 und ATmega88 an. Sie sind kostengünstig zu erhalten und bieten sehr viele Möglichkeiten für den experimentellen Tüftler.
Die Pinbelegungen des ATmega8A
Die Pinbelegungen des ATmega88-20PU
Taktgeber
Die Taktgeber wird über CKSEL und SUT in den Fuses eingestellt. Der ATmega8A und der ATmega88 werden wir mit dem internen Oszillator bei f = 8 MHz betreiben. Zusätliche externe Beschaltungen mit einem Quarz entfallen. Die Genauigkeit der Taktfrequenz von +/-3% reicht für Schul- und Heimversuche völlig aus.
Einige Leistungsdaten
Beide Controller werden in allen Versuchen mit dem internen Taktgeber von 8 MHz betrieben. Der Grundaufbau ist deshalb deutlich umfangreicher als beim ATtiny13. Der ATmega88 und der ATmega8 sind zueinander pinkompatibel, so dass der Schaltungsaufbau für die Spannungsversorgung bei beiden gleich ist (Abb. 4).
Die Spannungsversorgung kann auch hier über ein separates Mikrocontrollerboard (Arduino, BASIC Stamp, Propeller Board o.ä.) oder eine Batteriehalterung für 3x AA erfolgen.
BASCOM steht für BASIC Compiler und ist eine von Mark Alberts entwickelte Programmierumgebung, mit der BASIC Programme in ausführbare Maschinensprache für AVR-Mikrocontroller übersetzt werden. Für Schulen und Hobbyisten ist sie interessant, weil sie in einer Freeware-Version verfügbar ist, mit vollem Funktionsumfang wie die käufliche Version aber der erzeugt Code ist auf vier Kilobyte beschränkt. Für den schulischen Gebrauch und Einstieg in die Mikrocontrollertechnik ist das ausreichend. Wer mehr möchte, kann für unter 100,- € die Vollversion erwerben.
Mikrocontroller (kurz: µC, MCU, µController) sind Halbleiterchips, auf denen sich ein Prozessor sowie Arbeits- und Programmspeicher (RAM, SRAM, Flash, EEPROM) befinden und der über eine Peripherie (I/O Ports, serielle Anschlüsse) mit der Außenwelt nach festgelegten Regeln Kontakt aufnehmen kann. Zusätzlich stehen Timer und Analog-Digital-Wandler (ADW oder ADC) zur Verfügung.
Verbaut werden µC in vielen verschiedenen Bereichen (Radios, Fernseher, Mobile Phones, Chipkarten, Uhren etc.). Da sie in ihrem Leistungsumfang der gestellten Aufgabe angepasst sind, sind sie sehr kostengünstig bei meist sehr geringer Leistungsaufnahme.
Alle notwendigen Informationen über einen Mikrocontroller gibt der Hersteller in einem zugehörigen Datenblatt heraus, das über das Internet heruntergeladen werden kann. Die unterschiedlichen Mikrocontroller werden in sogenannten Familien zusammengefasst (z. B. ATtiny, ATMega etc.), die über viele Gemeinsamkeiten verfügen, sich aber im Detail erheblich unterscheiden (Anzahl der I/O Ports, Registerbezeichnungen, Anzahl und Güte der ADCs und Timer, Register). Das Datenblatt wird deshalb immer ein wichtiger Begleiter bei der Programmentwicklung sein.
Bei den hier vorgestellten Projekten mit der BASIC Stamp 2, dem Propeller Mikrocontroller oder dem Arduino UNO mit einem AVR Mikrocontroller ist man immer an die dazugehörigen Boards gebunden. In diesem Abschnitt lösen wir uns von den Hersteller gebundenen Boards und entwickeln die Programme nur für einen bestimmten Controller; die dabei benutzte Sprache ist BASIC, der Controller kommt aus der Familie der AVR-Reihe von Atmel. Nach erfolgreichem Programmentwurf und fehlerfreiem Kompilieren in den Maschinencode kann der Code in den Controller gebrannt werden.
Je nach verwendetem Controller-Typ stehen verschiedene Komponenten für einen Programmierer bereit (Anzahl der I/O Ports, ADCs, Timer etc.). BASCOM stellt in seiner IDE (integrated development environment) Informationen zu dem jeweils ausgewählten Mikrocontroller bereit.
Hardware für einen Programmer | |
Material |
|
Selbst benutze ich einen USB ERFOS AVR-ISP-Programmer (ca. 20,- €); läuft unter BASCOM problemlos und ohne irgendwelchen zusätzlichen Treiber-Schnickschnack. Anschließen und fertig, so muss es gehen. Hinzu kommt noch ein Schwenkhebel-Modul - ich gehe also nicht über eine ISP-Programmierung. Mir erscheint der Aufbau gerade im unterrichtlichen Ablauf zu wurstelig - aber das ist wohl Ansichtssache.
Im folgenden Kapitel 1 wird der grundsätzliche Aufbau eines BASCOM Programmes gezeigt und eine erste einfache Schaltung mit einer blinkenden LED erstellt. Dabei lernst du einige BASIC-Befehle kennen und brennst das erste Programm in einen Controller. -> weiter mit Kapitel 1