(Neue Seite für den Analog Komparator des Avr) |
K (→Funktionsweise) |
||
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
= Funktionsweise = | = Funktionsweise = | ||
Der Analoge-Komparator vergleicht die Eingangsspannungen der Pins AIN0 (+, Eingang für nicht invertierte Spannung) und AIN1 (-, Eingang für invertierte Spannung). Ist die Spannung an AIN0 höher ist als an AIN1 wird ACO gesetzt. Dieses Verhalten lässt sich natürlich verändern, so dass ACO z.B. auch gesetzt wird, wenn AIN1 höher als AIN0 ist. Siehe dazu die Registerübersicht | Der Analoge-Komparator vergleicht die Eingangsspannungen der Pins AIN0 (+, Eingang für nicht invertierte Spannung) und AIN1 (-, Eingang für invertierte Spannung). Ist die Spannung an AIN0 höher ist als an AIN1 wird ACO gesetzt. Dieses Verhalten lässt sich natürlich verändern, so dass ACO z.B. auch gesetzt wird, wenn AIN1 höher als AIN0 ist. Siehe dazu die Registerübersicht | ||
+ | |||
+ | Das Signal ACO kann wie ein digitaler Eingang einfach ausgelesen werde, einen Interrupt auslösen und für die Inputcapture-funktion von Timer1 benutzt werden. | ||
= Kanäle = | = Kanäle = | ||
− | Muss man mehrere Größen „gleichzeitig“ (ich schreibe das in Anführungszeichen, weil ein | + | Muss man mehrere Größen „gleichzeitig“ (ich schreibe das in Anführungszeichen, weil ein Komperator Aufgaben nicht parallel verarbeiten kann wohl aber sehr schnell hintereinander) vergleichen, gibt es (wie beim [[Analog-Digital-Wandler]], kurz [[ADC]]) einen Multiplexer mit dessen Hilfe man die Kanäle des Multiplexers auf den Komparator schalten kann. Man kann (natürlich abhängig vom Modell, ich orientiere mich an einem ATmega32) die Pins ADC0..7 über dem Multiplexer mit dem Komparator verbinden und zwar mit dem invertierten Eingang des Komparators. Verwendet man den Multiplexer, muss der [[ADC]] allerdings deaktiviert sein. |
Folgende Pins sind als Eingänge wählbar.<br> | Folgende Pins sind als Eingänge wählbar.<br> | ||
{| {{Blauetabelle}} | {| {{Blauetabelle}} | ||
Zeile 65: | Zeile 67: | ||
|ADC7 | |ADC7 | ||
|} | |} | ||
− | |||
= Registerübersicht = | = Registerübersicht = | ||
Zeile 82: | Zeile 83: | ||
*'''ACBG (Analog Comparator Bandgap Select)'''<br/>Wird dieses Bit gesetzt, erstetzt eine feste Bandlückenreferenzspannung den positiven Eingang zum Analog-Komparator. Wird dieses Bit auf 0 gesetzt, so wird der Pin AIN0 mit dem positiven Eingang des Komparators verbunden. | *'''ACBG (Analog Comparator Bandgap Select)'''<br/>Wird dieses Bit gesetzt, erstetzt eine feste Bandlückenreferenzspannung den positiven Eingang zum Analog-Komparator. Wird dieses Bit auf 0 gesetzt, so wird der Pin AIN0 mit dem positiven Eingang des Komparators verbunden. | ||
*'''ACO (Analog Comparator Output)'''<br/>Auf diesem Bit wird das Ergebnis des Komparators ausgegeben (mit einer leichten Verzögerung von eins bis zwei Taktzyklen). | *'''ACO (Analog Comparator Output)'''<br/>Auf diesem Bit wird das Ergebnis des Komparators ausgegeben (mit einer leichten Verzögerung von eins bis zwei Taktzyklen). | ||
− | *'''ACI (Analog Comparator Interrupt Flag)'''<br/>Dieses Bit wird automatisch gesetzt, wenn der Komparator einen Interrupt auslöst (definiert über die Bits '''ACIS1''' und '''ACIS0''') und die entsprechende [[ISR]] ausführt. Das Bit wird wieder gelöscht, wenn die entsprechende [[ISR]] | + | *'''ACI (Analog Comparator Interrupt Flag)'''<br/>Dieses Bit wird automatisch gesetzt, wenn der Komparator einen Interrupt auslöst (definiert über die Bits '''ACIS1''' und '''ACIS0''') und die entsprechende [[ISR]] ausführt. Das Bit wird wieder gelöscht, wenn die entsprechende [[ISR]] gestartet wird. Alternativ kann man das Bit auch löschen, indem man eine 1 auf das Bit schreibt. |
*'''ACIE (Analog Comparator Interrupt Enable)'''<br/>Wird dieses Bit gesetzt, wird der Analog-Komparator Interrupt aktiviert (vorausgesetzt die Interrupts sind global aktiviert). Wird das Bit gelöscht, werden die Interrupts deaktiviert. | *'''ACIE (Analog Comparator Interrupt Enable)'''<br/>Wird dieses Bit gesetzt, wird der Analog-Komparator Interrupt aktiviert (vorausgesetzt die Interrupts sind global aktiviert). Wird das Bit gelöscht, werden die Interrupts deaktiviert. | ||
− | *'''ACIC (Analog Comparator Input Capture Enable)'''<br/> | + | *'''ACIC (Analog Comparator Input Capture Enable)'''<br/> Der Comperator Ausgang übernimmt die Funktion des ICP-Eingangs um Zeiten zu messen (siehe [[Timer/Counter_(Avr)]]). |
*'''ACIS1 (Analog Comparator Interrupt Mode Select)'''<br/>Diese Bits bestimmen welches Ereignis den Analog-Komparator Interrupt aktiviert. Es sind folgenden Einstellungen vorhanden:<br> | *'''ACIS1 (Analog Comparator Interrupt Mode Select)'''<br/>Diese Bits bestimmen welches Ereignis den Analog-Komparator Interrupt aktiviert. Es sind folgenden Einstellungen vorhanden:<br> | ||
{| {{Blauetabelle}} | {| {{Blauetabelle}} | ||
Zeile 120: | Zeile 121: | ||
*'''ACME (Analog Comparator Multiplexer Enable)'''<br/>Wird dieses Bit gesetzt und der [[ADC]] ist deaktiviert (d.h. ADEN aus dem Register ADCSRA ist nicht gesetzt) wählt der Multiplexer den invertierten Eingang zum Analog-Komparator. Wird auf dieses Bit dagegen eine 0 geschrieben, so wird AIN1 mit dem invertierten Eingang des Komparators verbunden. | *'''ACME (Analog Comparator Multiplexer Enable)'''<br/>Wird dieses Bit gesetzt und der [[ADC]] ist deaktiviert (d.h. ADEN aus dem Register ADCSRA ist nicht gesetzt) wählt der Multiplexer den invertierten Eingang zum Analog-Komparator. Wird auf dieses Bit dagegen eine 0 geschrieben, so wird AIN1 mit dem invertierten Eingang des Komparators verbunden. | ||
|} | |} | ||
− | |||
= Siehe auch = | = Siehe auch = |
Aktuelle Version vom 6. März 2010, 17:04 Uhr
Für eine allgemeine Beschreibung des Komparators siehe Artikel Analog-Komparator.
Die meisten AVRs haben einen Komparator integriert. Dieser Komparator besitzt zwei Eingänge – einen normalen und einen invertierten. Wie in Analog-Komparator beschrieben vergleicht der Komparator zwei Spannungen und gibt dann aus welche größer ist. Der Komparator der AVRs lässt sich weiter konfigurieren, siehe dazu die Registerübersicht.
Inhaltsverzeichnis
Funktionsweise
Der Analoge-Komparator vergleicht die Eingangsspannungen der Pins AIN0 (+, Eingang für nicht invertierte Spannung) und AIN1 (-, Eingang für invertierte Spannung). Ist die Spannung an AIN0 höher ist als an AIN1 wird ACO gesetzt. Dieses Verhalten lässt sich natürlich verändern, so dass ACO z.B. auch gesetzt wird, wenn AIN1 höher als AIN0 ist. Siehe dazu die Registerübersicht
Das Signal ACO kann wie ein digitaler Eingang einfach ausgelesen werde, einen Interrupt auslösen und für die Inputcapture-funktion von Timer1 benutzt werden.
Kanäle
Muss man mehrere Größen „gleichzeitig“ (ich schreibe das in Anführungszeichen, weil ein Komperator Aufgaben nicht parallel verarbeiten kann wohl aber sehr schnell hintereinander) vergleichen, gibt es (wie beim Analog-Digital-Wandler, kurz ADC) einen Multiplexer mit dessen Hilfe man die Kanäle des Multiplexers auf den Komparator schalten kann. Man kann (natürlich abhängig vom Modell, ich orientiere mich an einem ATmega32) die Pins ADC0..7 über dem Multiplexer mit dem Komparator verbinden und zwar mit dem invertierten Eingang des Komparators. Verwendet man den Multiplexer, muss der ADC allerdings deaktiviert sein.
Folgende Pins sind als Eingänge wählbar.
ACME | ADEN | MUX2..0 | Pin des invertierten Eingangs |
0 | x | xxx | AIN1 |
1 | 1 | xxx | AIN1 |
1 | 0 | 000 | ADC0 |
1 | 0 | 001 | ADC1 |
1 | 0 | 010 | ADC2 |
1 | 0 | 011 | ADC3 |
1 | 0 | 100 | ADC4 |
1 | 0 | 101 | ADC5 |
1 | 0 | 110 | ADC6 |
1 | 0 | 111 | ADC7 |
Registerübersicht
Hinweis: Diese Registertabellen wurden für den aktuellen Atmel Controller Mega16 und Mega32 erstellt. Wenn Sie ein anderes Modell verwenden kann es sein, dass ein oder mehrere Register nicht existieren, oder sie eine andere Bezeichnung haben.
ACSR (Analog Comparator Control And Status Register) | ||||||||||||||||||
Mit diesem Register wird der Komparator des AVR gesteuert.
| ||||||||||||||||||
|
SFIOR (Special Function IO Register) | ||||||||||||||||||
Mit diesem Register lässt sich u.a. der Multiplexer des Komparators aktivieren bzw. deaktivieren.
| ||||||||||||||||||
|
Siehe auch