hallo; schließen sich der externe Interrupt INT0 und der PinChangeInterrupt gegenseitig aus ? Wenn ich im GIMSK beide Bits setze (Bit 6 und Bit 5) habe ich den Eindruck der INT0 deaktiviert den PC-Int kann das sein ? Also der PC-Int wird nicht mehr ausgeführt obwohl das Bit gesetzt ist. Ist da was bekannt ?
Michael S. schrieb: > schließen sich der externe Interrupt INT0 und der PinChangeInterrupt > gegenseitig aus ? Nein, aber es gibt eine Priorität: der "normale" Externinterrupt wird beim gleichzeitigen Eintreffen beider vorrangig behandelt. Die ISR des Pinchange-Interrupts sollte danach allerdings trotzdem noch ausgeführt werden, es sei denn, die andere ISR setzt das PCIF (Pinchange Interrupt Flag) explizit zurück.
Würde mich wundern.... Denn der Tiny85 hat damit kein Problem. Übrigens: Kein Plan, kein Code, führt zu: Keine Hilfe.
Ja das ist mir klar. Der INT0 reagiert ja auf den PB2. Ich habe den PC-Int am Pin 0 und Pin 1 aktiviert, aber sobald ich Bit 6 im GIMSK setze, reagiert die PC-Int-Routine nicht mehr.
so reagiert der PC-Int: sbi PCMSK , 0 sbi PCMSK , 1 in reg_tempi , GIMSK ori reg_tempi , 0b00100000 out GIMSK , reg_tempi ldi reg_temp, 0 out MCUCR, reg_temp in reg_temp, GIMSK ori reg_temp, 0b01000000 ;out GIMSK , reg_temp und so reagiert er nicht: sbi PCMSK , 0 sbi PCMSK , 1 in reg_tempi , GIMSK ori reg_tempi , 0b00100000 out GIMSK , reg_tempi ldi reg_temp, 0 out MCUCR, reg_temp in reg_temp, GIMSK ori reg_temp, 0b01000000 out GIMSK , reg_temp
Du wirst bestimmt das Register so beschreiben, dass du die anderen Bits dabei löscht...
wenn ich den Debugger laufen lasse bleiben die Bits an aber real wird die PC-Int nicht mehr ausgeführt
Ohne das vollständige Programm werden wir hier wohl kaum weiterkommen; und es muss am Programm liegen, eventuell noch an der Art der Interruptauslösung. Ein Chipfehler hätte in all den Jahren sicher Eingang in die Errata gefunden.
Ich hab jetzt das MCUCR auf 1 gesetzt und jetzt geht es ! Kann es sein dass die Bits 0 und 1 des MCUCR nicht nur level und edges des INT0 steuern sondern auch die des PC-Int ?
...bzw., um es noch präziser zu sagen, wenn der INT0 aktiviert ist dann gelten Bit 0 und 1 des MCUCR auch für den PC-Int (wenn INT0 deaktiviert ist dann nicht ?)
Kann ich nicht bestätigen (zumindest für einen ATtiny85). Wäre auch seltsam, wenn man bedenkt, dass ein PCINT aus dem Power-down-Modus aufwecken kann.
Hier das Programm: nach dem Programmstart ist die LED (B4 gegen GND) aus, nach Tastendruck (B3 gegen GND) geht sie an.
Wenn ich raten sollte, würde ich sagen, bei Ihnen liegt B2 (INT0) ständig auf GND, die Beschreibung passt darauf.
aaaaah... vielen Dank das mit dem GND war der entscheidende Hinweis. Ich hatte PB2 die ganze Zeit mit dem Pin 13 des Arduino Nano verbunden den ich als Programmer verwende. Wenn ich diese Verbindung löse dann funktionuckelt es einwandfrei ! :-)
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.