Forum: Mikrocontroller und Digitale Elektronik Komparator Interrupt


von Mephisto (Gast)


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!!

von Mephisto (Gast)


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

von Markus (Gast)


Lesenswert?

Hallo Mephisto,

hast du die Interrupt freigegeben, indem du im Statusregister mit
__SEI();
das I-Flag gesetzt hast?

Gruß
Markus

von Mephisto (Gast)


Lesenswert?

jo,kam direkt dannach...

von ...HanneS... (Gast)


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...

von Mephisto (Gast)


Lesenswert?

Danke für dem Tip, aber ich glaube das Muss so sein,denn ich möchte die
1,23 V als referenzspannung verwenden...und ohne die Anweisung klappt
es leider auch nicht...
Leider...;(

von ...HanneS... (Gast)


Lesenswert?

Hi...

Sorry, an interne Referenz dachte ich jetzt leider nicht...

Schau dir mal ACME in SFIOR an, könnte vielleicht helfen...

Gruß...
...HanneS...

von Oliver (Gast)


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ß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.