Forum: Mikrocontroller und Digitale Elektronik AVT Atmega8 Interrupt problem


von Sebastian M. (psytalent)


Angehängte Dateien:

Lesenswert?

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

von aaaaa (Gast)


Lesenswert?

Das cli und sei in den Interrupts kannste dir sparen, das macht der 
atmega selbst. ;-)

Gibts auch nen Schaltplan dazu?

von Sebastian M. (psytalent)


Lesenswert?

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

von aaaaa (Gast)


Lesenswert?

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

von Sebastian M. (psytalent)


Lesenswert?

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.

von Reinhard R. (reirawb)


Lesenswert?

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

von Sebastian M. (psytalent)


Lesenswert?

Danke das problem ist behoben und es funktioniert mit den Dioden in 
Sperrichtung an den Eingängen mit internen Pullup.

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.