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.
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
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 !
ev. ein echo ? halt doch mal ein oszi an den eingang ... wäre interressant was da ankommt ....
>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?)
AVRFan wrote:
> (Warum glauben manche Leute, sie müssten alles mit Interrupts machen?)
Vermutlich wollen sie nur den Timer-Interrupt meiden...
;-)
...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.