Programmierung der AVR-Microcontroller mit C - UlrichRadig.de
Programmierung der AVR-Microcontroller mit C - UlrichRadig.de
Programmierung der AVR-Microcontroller mit C - UlrichRadig.de
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Der ADC kann in zwei verschie<strong>de</strong>nen Betriebsarten verwen<strong>de</strong>t wer<strong>de</strong>n.<br />
12.1.3.1 Einfache Wandlung (Single Conversion)<br />
In dieser Betriebsart wird <strong><strong>de</strong>r</strong> Wandler bei Bedarf vom Programm angestossen für jeweils eine<br />
Messung.<br />
12.1.3.2 Frei laufend (Free Running)<br />
In dieser Betriebsart erfasst <strong><strong>de</strong>r</strong> Wandler permanent die anliegen<strong>de</strong> Spannung und schreibt diese in<br />
das ADC Data Register.<br />
12.1.3.3 Die Register <strong>de</strong>s ADC<br />
Der ADC verfügt über eigene Register, welche hier aufgelistet wer<strong>de</strong>n:<br />
ADCSR ADC Control and Status Register.<br />
In diesem Register stellen wir ein, wie wir <strong>de</strong>n ADC verwen<strong>de</strong>n möchten.<br />
Das Register ist wie folgt aufgebaut:<br />
Bit 7 6 5 4 3 2 1 0<br />
Name ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0<br />
R/W R/W R/W R/W R/W R/W R/W R W<br />
Initialwert 0 0 0 0 0 0 1 0<br />
ADEN ADC Enable<br />
Dieses Bit muss gesetzt wer<strong>de</strong>n, um <strong>de</strong>n ADC überhaupt zu aktivieren.<br />
Wenn das Bit nicht gesetzt ist können die Pin's wie normale I/O-Pins<br />
verwen<strong>de</strong>t wer<strong>de</strong>n.<br />
ADSC ADC Start Conversion<br />
Mit diesem Bit wird ein Messvorgang gestartet. In <strong><strong>de</strong>r</strong> frei laufen<strong>de</strong>n<br />
Betriebsart muss das Bit gesetzt wer<strong>de</strong>n, um die kontinuierliche Messung<br />
zu aktivieren.<br />
Wenn das Bit nach <strong>de</strong>m Setzen <strong>de</strong>s ADEN-Bits zum ersten Mal gesetzt<br />
wird führt <strong><strong>de</strong>r</strong> Controller zuerst eine zusätzliche Wandlung und erst dann<br />
die eigentliche Wandlung aus. Diese zusätzliche Wandlung wird zu<br />
Initialisierungszwecken durchgeführt.<br />
Das Bit bleibt nun so lange auf 1, bis die Umwandlung abgeschlossen ist,<br />
im Initialisierungsfall entsprechend bis die zweite Umwandlung erfolgt ist<br />
und geht danach auf 0.<br />
ADFR ADC Free Running Select<br />
Mit diesem Bit wird die Betriebsart eingestellt.<br />
Eine logische 1 aktiviert <strong>de</strong>n frei laufen<strong>de</strong>n Modus. Der ADC misst nun<br />
ständig <strong>de</strong>n ausgewählten Kanal und schreibt <strong>de</strong>n gemessenen Wert in<br />
das ADC Data Register.<br />
ADIF ADC Interrupt Flag<br />
Dieses Bit wird vom ADC gesetzt wenn eine Umwandlung erfolgt und das<br />
ADC Data Register aktualisiert ist.<br />
Wenn das ADIE Bit sowie das I-Bit im <strong>AVR</strong> Statusregister gesetzt ist wird<br />
<strong><strong>de</strong>r</strong> ADC Interrupt ausgelöst und die Interrupt-Behandlungsroutine<br />
aufgerufen..<br />
Das Bit wird automatisch gelöscht wenn die Interrupt-Behandlungsroutine<br />
aufgerufen wird. Es kann jedoch auch gelöscht wer<strong>de</strong>n, in<strong>de</strong>m ein<br />
logisches 1 in das Register geschrieben wird (So steht's in <strong><strong>de</strong>r</strong> <strong>AVR</strong>-Doku).<br />
ADIE ADC Interrupt Enable<br />
Wenn dieses Bit gesetzt ist und ebenso das I-Bit im Statusregister SREG,