Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter Test

K (Registerübersicht)
K (Funktionsweise)
 
(2 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 Controller 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.
+
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]] abgearbeitet wurde. Alternativ kann man das Bit auch löschen, indem man eine 1 auf das Bit schreibt.
+
*'''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/> Der Comperator Ausgang übernimmt die Funktion des ICP-Eingangs um Zeiten zu messen (siehe [[Timer/Counter_(Avr)]]).
 
*'''ACIC (Analog Comparator Input Capture Enable)'''<br/> Der Comperator Ausgang übernimmt die Funktion des ICP-Eingangs um Zeiten zu messen (siehe [[Timer/Counter_(Avr)]]).

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.

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.

Bit: 7 6 5 4 3 2 1 0
Name: ACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0
  • ACD (Analog Comparator Disable)
    Wird dieses Bit gesetzt, wird der Komparator deaktiviert um Strom zu sparen (der Komparator ist standardgemäß deaktiviert). Will man den Komparator mit ACD deaktivieren, muss man davor den ACIE (Analog Comparator Interrupt) deaktiveren.
  • ACBG (Analog Comparator Bandgap Select)
    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)
    Auf diesem Bit wird das Ergebnis des Komparators ausgegeben (mit einer leichten Verzögerung von eins bis zwei Taktzyklen).
  • ACI (Analog Comparator Interrupt Flag)
    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)
    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)
    Der Comperator Ausgang übernimmt die Funktion des ICP-Eingangs um Zeiten zu messen (siehe Timer/Counter_(Avr)).
  • ACIS1 (Analog Comparator Interrupt Mode Select)
    Diese Bits bestimmen welches Ereignis den Analog-Komparator Interrupt aktiviert. Es sind folgenden Einstellungen vorhanden:
ACIS1 ACIS0 Interruptmodus
0 0 Interrupt bei Ausgangumschaltung.
0 1 Reserviert (keine Funktion).
1 0 Interrupt bei fallender Flanke
1 1 Interrupt bei ansteigender Flanke.
  • ACIS0 (Analog Comparator Interrupt Mode Select)
    Siehe ACIS1 für eine Beschreibung.
SFIOR (Special Function IO Register)
Mit diesem Register lässt sich u.a. der Multiplexer des Komparators aktivieren bzw. deaktivieren.

Bit: 7 6 5 4 3 2 1 0
Name: - - - - ACME - - -
  • ACME (Analog Comparator Multiplexer Enable)
    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


Weblinks


LiFePO4 Speicher Test