Lernpaket Mikrocontroller-Programmierung in Bascom und C

B. Kainka, Franzis-Verlag, 2010




www.ak-modul-bus.de/stat/lernpaket_mikrocontroller_programmierung,pd630!0,,FV58.html

Vorwort

Grundlage dieses Lernpakets ist die Platine des Franzis-Pingpong-Spiels. Ein Mikrocontroller ATmega8 mit einem Display aus 120 LEDs bietet alle Möglichkeiten. Da der komplette Pingpong-Bausatz im Lernpaket enthalten ist, können Sie das Gerät aufbauen und als Spiel nutzen. Auch dann noch können die zusätzlichen Experimente mit dem Mikrocontroller ATmega8 durchgeführt werden. Sie können aber auch anders vorgehen und die Platine zunächst in offener Form für den Lernkurs verwenden. Nachträglich kann immer noch das Spiel daraus werden.

Im Frühjahr 2010 gab es einen Programmierwettbewerb zur Pingpong-Platine. Alle Einsendungen wurden im ELO-Magazin www.elo-web.de veröffentlicht. Man findet dort eine hohe Qualität und große Vielseitigkeit der Beiträge. Überwiegend wurde in Bascom und in C programmiert. Man kann sich inspirieren lassen, was mit der Pingpongplatine machbar und sinnvoll ist. Die Programme können auch mit kleinen Änderungen an die eigenen Bedürfnisse angepasst werden. Oder man verwendet Teile der Projekte, um ganz andere Aufgaben zu lösen. Allerdings setzt das schon ein gutes Verständnis der Hardware und der verwendeten Programmiersprache voraus.

Hier setzt das Lernpaket an. Es kann die Grundlagen bis zu dem Punkt vermitteln, an dem Sie allein weiterkommen. Die beiden Programmiersprachen Bascom und C sollen mit einfachen und fortschreitend komplexeren Beispielen gründlich vorgestellt werden. Das Ziel ist, dass Sie sich soweit in die Programmierung einarbeiten, dass Sie danach auch komplexe Programme durchschauen und verwenden können. Das ist dann nicht auf diese Platine beschränkt, sondern gilt für AVR-Controller allgemein. Und natürlich fällt es danach wesentliche leichter, sich auch in ganz andere Systeme einzuarbeiten.

Das Lernpaket verwendet die beiden wichtigsten höheren Programmiersprachen Basic und C, wobei Sie entscheiden sollten, welche von beiden Ihnen mehr zusagt. Mit Basic gelangt man schneller an den Punkt, eigene kleine Lösungen zu entwickeln. Kleine Programme können mit der freien Demoversion entwickelt werden. Bascom lernt sich leichter und ist ideal für schnelle Lösungen.

C dagegen ist die Programmiersprache der Profis. Mit Win-AVR hat man einen freien C-Compiler hoher Qualität. Außerdem findet man eine unermessliche Anzahl fertiger Programme und Module, mit denen auch große Projekte angegangen werden können. Eine der Grundideen der C-Programmierung ist es, wieder verwendbaren Programmcode zu schreiben, damit das Rad nicht immer wieder neu erfunden werden muss. Allerdings muss man erst eine gewisse Stufe erreicht haben, um fremden Code mit Erfolg einzusetzen.

Die Erfahrung zeigt, dass man für einen echten Lernerfolg eigene Projekte entwickeln muss. Es reicht nicht, alle Beispiele aus dem Lernpaket einmal auszuprobieren und die zugehörigen Quelltexte zu studieren. Sie sollten, wenn immer möglich, Änderungen überlegen und austesten. Lassen Sie sich inspirieren. Wahrscheinlich fällt Ihnen mehr als eine sinnvolle Aufgabe ein, die Sie immer schon mal lösen wollten. Dann setzt die echte Entwicklungsarbeit ein. Dabei tauchen immer wieder Probleme auf, die gelöst werden wollen. Sie entwickeln die notwenige Strategien, Fehler einzukreisen und zu erkennen, fehlende Informationen zu finden und Funktionstestes durchzuführen. Teilen Sie die Aufgabe in viele kleine Schritte ein, die einzeln entwickelt und ausgetestet werden können. Grob geschätzt kann man sagen, erst wenn Sie eine Woche Arbeit in ein eigenes Projekt investieren, dann sind Sie in der verwendeten Programmiersprache wirklich zuhause.

Viel Spaß bei Ihren Projekten wünscht

Ihr Burkhard Kainka


Inhalt des Experimentierhandbuchs:

1 Hardware und Vorbereitungen    11
1.1 Das Zielsystem    11
1.2 Der Programmieradapter    13
1.3 Der erste Test    16

2 Bascom-Start    21
2.1 Das erste Programm    21
2.2 Auswertung von Eingaben    29
2.3 Ein LED-Blinker    31
2.4 LED-Blitzlicht    33
2.5 Ansteuerung einer externen LED    34
2.6 Einstellbare Impulszeiten   36

3 Verwendung des AD-Wandlers    38
3.1 Rohdaten    38
3.2 Interne Referenz    39
3.3 Zweikanal-Voltmeter    41

4 Schieberegister    43
4.1 Ein Lauflicht    43
4.2 Binärzahlen schieben    45
4.3 Alle an!    47

5 Timer und Interrupts    49
5.1 Der 8-Bit-Timer 0    49
5.2 Der 16-Bit-Timer 1    50
5.3 Timer-Interrupt    51
5.4 PWM-Ausgabe    53

6 Das LED-Display   56
6.1 Display-Basisprogramme    56
6.2 XY-Grafik    60
6.3 Wanderwellen    62
6.4 AD-Wandler und Display    63
6.5 Ein Malprogramm    64
6.6 Ein Oszillsokop    65
6.7 Wurfspiel    66

7 Serielle Schnittstelle    70
7.1 Print und Display    70
7.2 Der USART    71
7.3 Bytes übertragen    76

8 Bascom-Anwendungen    78
8.1 Sensor-LED    78
8.2 Akku-Ladegerät    80
8.3 AM-Prüfoszillator    83
8.4 Radiosteuerung mit I2C-Bus    86
8.5 Kapazitive Berührungsschalter    96
8.7 Sensor-Lichtschalter    99

9 Die Pingpong-Firmware    103

9.1 Überblick    103
9.2 Soundeffekte    108
9.3 Schlägerbreite 3    111

10 C-Programmierung   113
10.1 Das erste C-Projekt    113
10.2 Ein C-Blinker    118
10.3 Zählschleifen    119
10.3 Verwendung des USART    120
10.4 Steuerbytes übertragen   124
10.5 Printf    127
10.6 Der AD-Wandler    129

11 Display-Ansteuerung    132
11.1 Displaysteuerung   132
11.2 Min/Max-Anzeige    135
11.3 ASCII-Zahlenanzeige    137
11.4 Autonomes Voltmeter    139
11.5 Ereigniszähler    141
11.6 Akkulader mit Spannungsanzeige    143

12 Ping-Pong-Bauanleitung    147
12.1 Montage    147
12.2 Funktionsbeschreibung und Spielanleitung    154
12.3 Technische Beschreibung    158

Anhang    160