Interrupt mit CNY70 auslösen (ATMEGA8)

Gast #238870
Lesenswert?

Hallo allerseits,

ich verzweifele gerade daran mit einem Reflexkoppler CNY70 einen
Interrupt auszulösen, bzw. diesen im Programm abzuarbeiten.

Der CNY70 hängt mit dem Collector an PORTD2/INT0 und mit dem Emitter
auf Masse.

folgende Codeschnippsel verwende ich:

SIGNAL(SIG_INTERRUPT0)
{
    PORTB = GRUEN; //setzt die Farbe der LED auf grün
    return;
}

void main()
{
   sei();
   GICR |=0xC0;
   PORTC=0x01; // schaltet eine Leuchtdiode ein
   for(;;)
   {
        PORTB = ROT; // setzt die Farbe der LED auf rot
   }
}

Wenn also der CNY70 sein Signal bekommt, dann soll er die LED welche
standardmässig rot leuchtet auf grün umschalten.

Mein Problem ist, das der Interrupt anscheinend ständig ausgelösst
wird, und somit die LED immer grün ist.
Wenn ich die GICR zeile auskommentiere, bleibt die LED wie erwartet
ROT

bin auf dem Gebiet noch sehr grün hinter den Ohren und konnte hierzu
keine weiteren Informationen finden.

Vielen Dank schonmal
Gruß Stephan
Gast #238871
Lesenswert?

Hi,

setze erst mal PORTD Pin2 auf Highpegel(der interne Pull-Up-Widerstand)
oder Löte einen externen Pull-Up Widerstand an den Eingang(von 5V zu
PORTD Pin2). Erst dann hat der Eingang definierten HIGH-Pegel. Der
Transistor des von dir erwähnten Optokoppler oder Sensor hat dann die
Betriebsspannung anzuliegen. Wenn jetzt der Transistor schaltet =
leitend wird zieht er den Eingang auf Masse = LOW-Pegel und je nach
gewählter Taktflanke im Register
MCUCR WICHTIG!!! des Atmel wird die Interruptroutine ausgelöst.

Hinweis am Rande:
Du wirst von dem Rot-Grün-Wechsel in deinen Programm nicht viel sehen,
da das Programm nach der Interruptroutine sofort wieder in die
for(;;)Schleife des Hauptprogramm geht und auf Rot wechselt. Die Farbe
Grün ist nur für ein paar Takte geschalten ... das siehst du nicht!

Viel Erfolg ....

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren