mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Komparator von Mega8 führt ISR immer 2x aus


Autor: jürgen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Kölling (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 !

Autor: Peter P. (bonsaibaum)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ev. ein echo ?

halt doch mal ein oszi an den eingang ... wäre interressant was da 
ankommt ....

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?)

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVRFan wrote:

> (Warum glauben manche Leute, sie müssten alles mit Interrupts machen?)

Vermutlich wollen sie nur den Timer-Interrupt meiden...

;-)

...

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.