Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Das Arbeitsmaterial

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.

1 - Der ATtiny13

Die Pinbelegung

Abbildung 1 - Pinbelegunen des ATtiny13A

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

  • Arbeitet in der Werkseinstellung mit einem internen Taktgeber von 1,2 MHz.
  • 1 Kilobyte Flash-Speicher für Programme, organisiert in 512x16 Bits
  • 64 Bytes EEPROM
  • 64 Bytes SRAM
  • 6x I/O Ports
  • 1x 8-Bit Timer/Counter mit Compare-Modus
  • 4-Kanal 10-Bit ADC
  • Betriebsspannung: 2V ... 5,5V
  • Pro I/O Pin: max. 40.0 mA
  • Über alle I/O Pins: max. 200.0 mA
  • Input LOW: < 0,3Vcc
  • Input HIGH: > 0,6Vcc
  • Output LOW: 0,8V(Vcc=5V), 0,6V(Vcc = 3,3V)
  • Output HIGH: 4,0 (Vcc=5V), 2,3V (Vcc = 3,3V)
  • 50 kOhm > Pull-Up Widerstand > 20 kOhm

 

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.

2 - Der ATmega8 und ATmega88

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

Abbildung 2 - Pinbelegungen des ATmega8A

Die Pinbelegungen des ATmega88-20PU

Abbildung 3 - Pinbelegungen des ATmega88-20P

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

  • Arbeitet in der Werkseinstellung mit einem internen Takt von 1,0 MHz.
  • 8 Kilobyte Flash-Speicher für Programme
  • 512 Bytes EEPROM
  • 1 kByte SRAM
  • 23x I/O Ports
  • PWM Kanäle
  • 1x 16-Bit Timer/Counter mit Compare-Modus
  • 8-Kanal ADC, davon 6 Kanäle mit 10-Bit Auflösung
  • Programmierbarer serieller USART
  • Betriebsspannung: 2,7V ... 5,5V
  • Pro I/O Pin: max. 40.0 mA
  • Über alle I/O Pins: max. 300.0 mA
  • Input LOW: < 0,2Vcc
  • Input HIGH: > 0,6Vcc
  • Output LOW: 0,9V(Vcc=5V), 0,6V(Vcc = 3,3V)
  • Output HIGH: 4,2 (Vcc=5V), 2,2V (Vcc = 3,3V)
  • 50 kOhm > Pull-Up Widerstand > 20 kOhm

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.

Abbildung 4 - Grundschaltung für einen ATmega8A und ATmega88 mit internem Taktgeber von 8 MHz und Entstörkondensatoren.

3 - Wer oder was ist BASCOM?

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.

4 - Mikrocontroller? Was ist das?

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.

5 - Projekte mit Mikrocontrollern

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.

6 - Der Programmer

Hardware für einen Programmer
Material
  • 1x  USB-ISP-Programmer
  • 1x  Schwenkhebel-Modul  (Nullkraft-Sockel) für Programmer
  • 1x  AVR Mikrocontroller, z. B. ATtiny13
  • 1x  Energiequelle, 5V; z. B. 3x1,5V Typ AA in einem Batteriehalter
  • 1x  PC mit der Software BASCOM

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.

Abbildung 4 - USB-ISP-Programmer mit Nullkraft-Sockel für AVR Mikrocontroller

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

Druckversion | Sitemap
© Reinhard Rahner - Gettorf