www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVT Atmega8 Interrupt problem


Autor: Sebastian M. (psytalent)
Datum:
Angehängte Dateien:

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

Autor: aaaaa (Gast)
Datum:

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

Gibts auch nen Schaltplan dazu?

Autor: Sebastian M. (psytalent)
Datum:

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

Autor: aaaaa (Gast)
Datum:

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

Autor: Sebastian M. (psytalent)
Datum:

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

Autor: Reinhard R. (reirawb)
Datum:

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

Autor: Sebastian M. (psytalent)
Datum:

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

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.