AVT Atmega8 Interrupt problem

OP #1362313
Hi
Ich habe ein merkwürdiges Problem mit Intterupts an INT0 und INT1 
festgestellt.

Die Eingänge sind so beschaltet das sie im Ruhezustand auf low Signal 
liegen. Will ich jetzt Int0 auslösen muss erst Int1 auf hight gesetzt 
werden.

Da das eine 2 Punkt Lichtschranke wird um eine zeit von Ojekten zu 
messen sind die Sensoren (Fotodioden) direkt mit IR-Dioden angestrahlt. 
Beim passieren des ersten Sensors wird der Eingang Int0 auf higt gesetzt 
und sofort wieder auf low und es wird scheinbar kein Interrupt 
ausgelöst. Das Objekt passiert beim Test noch nicht den 2 Sensor, somit 
hab ich schon im vorraus ausgeschlossen das der Controller schneller 
schaltet ohne das ich das mitbekomme.

Der Timer is noch nicht im Program enthalten es wird nur eine LED 
geschaltet.

Kann mir einer bei diesem Problem helfen?
Das Programm ist im Anhang zu finden.

Ich danke schon mal im vorraus
Angehängte Dateien:
OP #1362323
cli und sei sind zu versuchszwecken hinzu gekommen.
Einen Schaltplan hab ich dazu leider nicht da es auf dem Steckbrett 
vorerst aufgebaut ist. Die Schaltung fuktioniert wenn ich es ohne 
Interrupts laufen lasse. Ich wollte es aber per Intterupt messen.

Die Sensoren sind 2 SFH 203 Fotodioden in sperrichtung an den Interupt 
Pins angeschlossen
Gast #1362338
Bin mir nicht ganz sicher, aber ich denke dass die Spannungen die diese 
Photodioden liefern unter dem Mindestpegel für HIGH liegen.
Mess mal die Spannungen an den Photodioden wenn Licht drauf fällt.
evtl. brauchst du noch nen verstärker
OP #1362716
Hab mal ein anderen Versuch gestartet. Habe INT1 auf Low gezogen ohne 
Diode und dann INT0 geschaltet und nix geschieht. Habe Dann INT1 dann 
auf hight gesetzt und sie da wenn ich jetzt INT0 schalte geht das 
Lichtlein an. Also kann es nicht an den Fotodioden direkt liegen.
#1362749
Na, ist doch klar,
         ldi  r16, 0b00000011
         out  MCUCR, r16
Du initialisiert INT0 auf "rising edge", INT1 aber auf "low level", d.h.
es wird ständig INT1 ausgelöst, ausser wenn Du den Eingang auf "1" 
setzt.
Versuch mal:
         ldi  r16, 0b00001111
         out  MCUCR, r16

Viel Erfolg.

Reinhard

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.