Komparator von Mega8 führt ISR immer 2x aus

Gast #643816
Lesenswert?

hallo,

ich habe mir mit einem mega8, ein mikro(am AnalogkomparatorAIN0) und 
einem Spannungsteiler(am Analogkomparator AIN1) einen Klatsch-schalter 
gebaut.

Funktioniert alles soweit - bis auf das, dass meine 
Analog-Komparator-ISR bei jedem "Klatschen"  also Interrupt, zweimal 
aufgerufen wird(d.h. mein Indikator,eine LED, blinkt zweimal).

Habe extra eine lange Warteschleife eingebaut - aber es hilft nichts.

Warum wird der Analog-Komparator-Interrupt generell 2x ausgeführt??

Danke
J.
Angehängte Dateien:
Gast #643838
Lesenswert?

Hallo,

könnte es sein, dass dein Komparator bei Über- und Unterschreiten des 
Vergleichswertes anspricht? Kann mich dunkel erinnern, dass es diese 
Möglichkeitem beim ATmega48 gibt.

Gruß Matthias
Gast #643841
Lesenswert?

nein nur beim überschreiten. muss jetzt aber etwas hinzufügen : manchmal 
führt er die ISR nur einmal aus. Verwunderlich ist aber warum er sie 
manchmal auch nach einer Sekunde wartezeit wieder aufruft - obwohl der 
Schall am Mikro durch ein Klatscherer schon längst verstummt ist !
Gast #643943
Lesenswert?

>Verwunderlich ist aber warum er sie
>manchmal auch nach einer Sekunde wartezeit wieder aufruft - obwohl der
>Schall am Mikro durch ein Klatscherer schon längst verstummt ist !

Daran ist überhaupt nichts verwunderlich - im Gegenteil.  Du hast 
offenbar nicht verstanden, wie Interrupts funktionieren.

Ich würde einfach den Output des Analog Comparators alle 10 ms 
(Beispielwert) zyklisch abfragen.  Nach dem ersten Ereignis mittels 
eines Zählers die Ergebnisse während der darauffolgenden 50 Zyklen 
ignorieren, dann wieder freischalten - fertig.

(Warum glauben manche Leute, sie müssten alles mit Interrupts machen?)
Gast #644139
Lesenswert?

lach Daran wirds liegen... zurückgrins

@Jürgen:

Man sollte nicht alles mit Interrupts machen, aber auf den 
TIMER-Interrupt nur verzichten, wenn es gute Gründe dafür gibt.  Ein 
Timer eröffnet einem Programmierer die Möglichkeit, den µC in 
REGELMÄßIGEN Zeitabschnitten Dinge tun lassen zu können. Das ist von 
unschätzbarem Wert, weil ein Programm, in dem möglichst viele Aufgaben 
synchron und zeitlich geordnet "von Tick zu Tick" abgearbeitet werden, 
viel leichter zu verstehen und zu kontrollieren ist.  Will oder muss man 
darüberhinaus aus speziellen Gründen etwas asynchron abwickeln, kann man 
DAS dann prima über die Interrupts erledigen.

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