12.11.2012 Aufrufe

Programmierung der AVR-Microcontroller mit C - UlrichRadig.de

Programmierung der AVR-Microcontroller mit C - UlrichRadig.de

Programmierung der AVR-Microcontroller mit C - UlrichRadig.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

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,

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!