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.
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.