Mikrocontroller

Anforderungen an den Mikrocontroller

  • 4 Eingänge für 4 Tasten [Buzzer -> Logik]
  • 12 Ausgänge (4 x 3Bit) für die Farbsteuerung in Spannungsstufen [Logik -> Buzzer]
  • 4 Ausgänge zur Buzzer-Licht-Steuerung [Logik -> Buzzer]
  • 3 Ausgänge (3 Bit) für die Soundcodierung [Logik ->Buzzer]
  • SPI-Schnittstelle zur Datenübertragung (Clock-Leitung, MISO, MOSI, Slave-Select) [Logik -> Anzeige]

Gewählt wurde der ATmega16, da dieser die oben geforderten Anforderungen erfüllt, zudem einen ausreichenden Takt und genügend Speicher bietet.


Beschaltung des Mikrocontrollers

Abbildung 1 zeigt die in EAGLE entworfene Beschaltung des ATmega16 und in Tabelle 1 ist die Pinbelegung dargestellt. An Pin 10 liegt die Versorgungsspannung (VCC) für den Controller an. An Pin 30 die Versorgungsspannung des integrierten Analog-Digital Konverters (ADC). Diese sind über den Pin 11 bzw. 31 auf Masse zurückgeführt. Zur Spannungsstabilisierung wird die Versorgungsspannung parallel über einen Elektrolytkondensator (hohe Kapazität) mit der Masse “verbunden“.
Der ADC kann über den Pin 32 mit einer externen Referenzspannung betrieben werden. Diese ist zunächst über einen Koppelkondensator auf Masse gesetzt.
Über Pin 9 kann ein Reset am Controller durchgeführt werden. Der Eingang ist negiert, sodass der Controller in den Anfangszustand gebracht wird, wenn dieser auf Masse liegt. Dementsprechend ist auch der Reset-Pin über einen Widerstand an die Versorgungsspannung gelegt und kann über einen mechanischen Schalter auf Masse gesetzt werden.
Über die Pins 5 bis 8 ist die Kommunikation über das Serial Peripheral Interface (SPI) mit anderen digitalen Schaltungen der Anzeige-Gruppe möglich. Über diese wird der Mikrocontroller auch programmiert.

ATMEGA_Beschaltung

Abbildung 1: ATMEGA_Beschaltung

Pin-Nummer Belegung Kommentar
1 Button 0 Eingang
2 Button 1 Eingang
3 Button 2 Eingang
4 Button 3 Eingang
5 SPI – SS (Slave Select) arbeitet low-activ
6 SPI – MOSI Datenleitung von Spiellogik zur Anzeige
7 SPI – MISO Datenleitung von Anzeige zur Spiellogik
8 SPI – CLK Taktleitung von Spiellogik zur Anzeige
9 Reset – Knopf arbeitet low-activ
10 Versorungsspannung
11 Masse
12
13
14 UART – RxD
15 UART – TxD
16 Buzzer Interrupt
17 Random & gegebenfalls Anschluss Zufall
18
19 Ton Ausgang Bit 0
20 Ton Ausgang Bit 1
21 Ton Ausgang Bit 2
22 Analog 0 Ausgang Bit 0 Analoge Farbsteuerung Button 0 Rot
23 Analog 0 Ausgang Bit 1 Analoge Farbsteuerung Button 0 Grün
24 Analog 0 Ausgang Bit 2 Analoge Farbsteuerung Button 0 Blau
25 Button 0 Ausgang
26 Analog 1 Ausgang Bit 0 Analoge Farbsteuerung Button 1 Rot
27 Analog 1 Ausgang Bit 1 Analoge Farbsteuerung Button 1 Grün
28 Analog 1 Ausgang Bit 2 Analoge Farbsteuerung Button 1 Blau
29 Button 1 Ausgang
30 AVCC – Anschluss Anschluss Versorgung
31 Masse
32 AREF – Anschluss
33 Button 3 Ausgang
34 Analog 3 Ausgang Bit 2 Analoge Farbsteuerung Button 3 Blau
35 Analog 3 Ausgang Bit 1 Analoge Farbsteuerung Button 3 Grün
36 Analog 3 Ausgang Bit 0 Analoge Farbsteuerung Button 3 Rot
37 Button 2 Ausgang
38 Analog 2 Ausgang Bit 2 Analoge Farbsteuerung Button 2 Blau
39 Analog 2 Ausgang Bit 1 Analoge Farbsteuerung Button 2 Grün
40 Analog 2 Ausgang Bit 0 Analoge Farbsteuerung Button 2 Rot

Tabelle 1: Beschaltung Mikrocontroller


 

Programmierung

Der ATmega16 ist in C zu programmieren. Dazu bedienen wir uns einer sehr minimalistischen Toolchain. Das heißt, dass wir auf die Verwendung einer komplexen Entwicklungsumgebung mit integriertem Compiler und Debugger verzichteten. Stattdessen verwendeten wir zur Erstellung des Quellcodes einen einfachen TextEditor wie “Sublime Text“.
Der Complier muss natürlich vorab installiert werden, sodass der geschriebene Code über den Terminal compiliert werden kann. Zur schnellen Befehlseingabe in den Terminal verwendeten wir ein, von unserem Betreuer zur Verfügung gestelltes, Makefile.
Nicht nur zum Erarbeiten der μC-Software eignet sich vor allem ein auf Linux basierendes Betriebssystem – alternativ auch OS X. Ein Windowssystem würde dem minimalistischen Prinzip unserer Toolchain von Grund auf widerstreben und den Spaß an der Technik enorm einschränken.