Unter "Kochbuch" hatte ich mir spontan eine dicke
Sammlung kompletter Gerichte vorgestellt, also Schaltpläne und
vollständige einsatzfähige Software. Diese Erwartung wurde nicht
erfüllt. Aber ich finde das Buch dennoch interessant und nützlich, denn
man lernt mit ihm nicht, einzelne Gerichte 1:1 nachzukochen (blind nach
Anleitung), sondern man bekommt das Handwerkszeug, mit dem man seine
eigenen Gerichte komponieren kann.
Was sollte man an Vorkenntnissen mitbringen?
Eigentlich
bräuchte man so gut wie keine Hardware-Kenntnisse. Das Buch setzt nur
sehr wenig voraus und bemüht sich sehr, auch die Leser mit sehr wenig
Hardware-Kenntnissen "abzuholen und mitzunehmen". Die Fülle des Stoffes
wird jedoch überschaubarer, wenn man z.B. zumindest ein paar einfache
Analog- und Digital-Schaltungen auf einem Steckbrett zusammengesteckt
hat und die Beuteile dimensionieren kann.
Eine nicht ganz unwichtige
Voraussetzung findet sich weder im Klappentext, noch im Vorwort,
sondern erst in der Einleitung: man sollte etwas C können.
Zielgruppe
des Buches sind Leser, die nicht zum ersten Mal im Leben C-Code sehen,
sondern schon etwas Berührung mit C hatten; z.B. auf dem PC.
Es reichen aber wenige Grundkenntnisse, sofern man ein allgemeines C-Buch hat, in dem man im Zweifelsfall nachschlagen kann.
Die
zahlreichen Beispiele im Buch sind recht kurze, ausführlich
kommentierte Codeschnipsel, die sich mit den Besonderheiten von C auf
Mikrocontrollern befassen (für allgemeine C-Programmierer sind dies das
Hantieren mit einzelnen Bits, insbesondere Registerinhalten oder
Portpins; hier liegt der Schwerpunkt der Code-Beispiele, nicht in
umfangreichen Berechnungen).
Was kann man hinterher?
Hardware
Man
lernt die internen Hardware-Komponenten eines Mikrocontrollers
(speziell der Serie AtMega48-AtMega328) und die externe
Grundbeschaltung (Quarz, Stromversorgung) eines Mikrocontrollers
kennen, man lernt gängige Sensoren kennen, man lernt, wie man
Eingangssignale für den Controller aufbereitet (z.B. Spannungsteiler,
Shunts, Operationsverstärkerschaltungen, Messgleichrichter,
Schutzschaltungen) und wie man die Ausgangsignale weiterverarbeitet
(mit LEDs, Siebensegmentanzeigen, Relais, Halbleiterschaltstufen bis
hin zu Thyristoren und Triacs), und die Arbeitsweise der gängigen
Bussysteme (I²C und SPI).
Das alles wird nicht nur
abstrakt-theoretisch abgehandelt, sondern es finden sich auch viele
praktische Dimensionierungen und viele Hinweise, wie man bei der
Schaltungsauslegung typische Fallstricke und Fallgruben meidet (in die
ich auch schon gefallen bin).
Software
Die Ausführungen zur
Programmierumgebung (AVR-GCC und AVR Studio), dem Grundgerüst eines
C-Programms und dem Flashen des Controllers sind recht kurz und
allgemein gehalten.
Nach dem Galoppritt durch die Grundlagen ist
der Schwerpunkt die Parametrierung der internen Ein-und
Ausgangs-Baugruppen des Mikrocontrollers und das Hantieren mit den
Eingangs- und Ausgangsdaten (Stichworte: digitale IOs, AD-Wandler, I²C,
SPI, PWM, externe DA-Wandler). Zahlreiche gängige Aufgabenstellungen
werden kochrezeptartig abgehandelt.
Das klingt ziemlich "dröge", ist
aber äußerst nützlich, weil hier nebenbei ein großer Teil der Infos
kurz und knackig abgehandelt wird, die man sonst mühsam aus hunderten
Seiten der englischsprachigen AVR-Datenblätter zusammensuchen müsste.
Das Buch ist daher nicht nur ein Lehrwerk, sondern ein Nachschlagewerk, das dem Leser viel Zeit und Mühe spart.
Wertvoll
ist in diesem Zusammenhang, dass die Autoren sich nicht auf den
weitverbreiteten AtMega8 "eingeschossen" haben, sondern auf die neuere
AtMegaX8-Serie (48,88,168,328), denn der Registeraufbau der AtTinies
der Serien X4,X5 und X6 ähnelt der AtmegaX8-Serie stärker.
Allgemeines
Die
Autoren pflegen einen sehr kompakten und schnörkellosen Schreibstil. Es
gibt keine Bandwurmsätze, keine Längen und es wurde nicht
"Seitenhonorar geschunden", sondern möglicht viel Information
transportiert.
Stil und Rechtschreibung finde ich gut, allerdings
hätte das Buch noch besser korrekturgelesen werden können; mir fiel
etwa ein halbes Dutzend kleiner Schreib- und Flüchtigkeitsfehler auf,
die wohl bei einem in geringer Auflage erscheinenden Buch schwer zu
vermeiden sind (zwei Beispiele: in einem Codeschnipsel wird mit PB1 und
PB3 gearbeitet, im erläuternden Text ist jedoch von PB1 und PB2 die
Rede. In einer Formel zum Transimpedanzverstärker steht sinngemäß U=I+R
statt U=I*R).
Das Buch hatte mich hauptsächlich wegen der
C-Programmierung interessiert. C ist meiner Meinung herzlich ungeeignet
für Mikrocontroller, aber in der IT setzen sich ja häufig die
"beklopptesten" Standards durch.
Statt "PortB.1 = 1 : PORTB.2 = 1" (Bascom) schreibt man nun mal in C "PORTB |= (1<<PB1) | (1<<PB3);"
Da
C sehr stark konfigurierbar ist, versuchen manche Software- bzw.
Buchautoren, sich und den Lesern das Leben einfacher zu machen, indem
sie solche Konstrukte durch lesbarere Makros ersetzen. Leider hat da
jeder seinen eigenen Standard ;-) . Gut finde ich daher, dass die
Autoren konsequent die "unlesbaren" Konstrukte verwenden, denn nur so
lernt man sie....
R.B.
Inhaltverzeichnis und Leseprobe im ELO-Shop: AVR-Mikrocontroller-Kochbuch