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
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 ....
am adc-port bekommst du bessere ergebnisse zum auswerten. mfg pebisoft
Vielen Dank nochmal für die schnelle Antwort, es wurde lediglich im Programm der Port nicht auf High gesetzt (bzw. wieder an andererstelle falsch zurückgesetzt) Man bekommt übrigens etwas mit von dem Wechseln der Farbe, die LED leuchtet quasi gleichzeitig grün und rot. Gruß Stephan
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.