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
Das cli und sei in den Interrupts kannste dir sparen, das macht der atmega selbst. ;-) Gibts auch nen Schaltplan dazu?
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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.