Komparator Interrupt

Gast #109456
Lesenswert?

Moin, ich hab da mal eine Frage, denn ich komme mit dem Datenblatt
irgendwie nicht richtig zurecht...

Ich schreib in C und hab den ATmega8...

Meine Frage lautet, wie ich den Komparator initializieren muß, wenn ich
möchte, dass der interrupt ausgelöst wird, wenn die spannung abfällt...

Kann mir jemand helfen??

Danke schonmal im vorraus!!
Gast #109457
Lesenswert?

Das ist mein bisheriger Quellcode...der Interrupt springt einfach nicht
an...


CLEARBIT(DDRD,DDD7);  // PortPin als Eingang
  CLEARBIT(PORTD,DDD7); // Pullup abschalten
  ADMUX = ((0 << MUX0)|(1 << MUX1)|(1 << MUX2)|(1 << MUX3)| (1 <<
REFS1)| (1 << REFS0));
  ACSR = ((1<<ACBG) | (1<<ACIS1) | (1<<ACIS0));
                        // Comparator eingeschaltet

                        // interne Bandgap von 1,22V am
nichtinvertierenden Eingang
                        // Comparator Interrupt on rising output edge
  SETBIT(ACSR,ACI);     // Request löschen
  SETBIT(ACSR,ACIE);    // Comparator Interrupt enabled
Gast #109460
Lesenswert?

Hi...

Ich verstehe zwar dein C nicht ganz (weil ich in ASM arbeite), aber was
hat ADMUX mit dem Analogkomparator zu tun?

Ich kann mich erinnern, dass ich auch nicht beim ersten Lesen des
ersten AVR-Datenblattes den Unterschied zwischen ADC und
Analog-Komparator erkannt habe... Nimms daher nicht persönlich, wenn
ich diesen Irrtum nicht ausschließe...

Zum Umgang mit dem Analog-Komparator gibt es bei Atmel gute Beispiele
in den Appnotes. Ist zwar meist für AT90S1200 (oder andere Classics),
das Prinzip ist aber überall gleich oder ähnlich...

Bit- & Bytebruch und viel Erfolg...
...HanneS...
Gast #109463
Lesenswert?

Klappt dies?

// Analog Comparator initialization
// Analog Comparator: On
// The Analog Comparator's positive input is
// connected to the Bandgap Voltage Reference
// Interrupt on Falling Output Edge
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x4A;
SFIOR=0x00;

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren