Forum: Mikrocontroller und Digitale Elektronik Frage zu den Interrupts beim ATTINY25


von Michael S. (misax)


Lesenswert?

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 ?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Einer K. (Gast)


Lesenswert?

Würde mich wundern....
Denn der Tiny85 hat damit kein Problem.

Übrigens:
Kein Plan, kein Code, führt zu: Keine Hilfe.

von Michael S. (misax)


Lesenswert?

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.

von Michael S. (misax)


Lesenswert?

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

von Ingo Less (Gast)


Lesenswert?

Du wirst bestimmt das Register so beschreiben, dass du die anderen Bits 
dabei löscht...

von Michael S. (misax)


Lesenswert?

wenn ich den Debugger laufen lasse bleiben die Bits an aber real wird 
die PC-Int nicht mehr ausgeführt

von S. Landolt (Gast)


Lesenswert?

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.

von Michael S. (misax)


Lesenswert?

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 ?

von Michael S. (misax)


Lesenswert?

...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 ?)

von S. Landolt (Gast)


Lesenswert?

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.

von S. Landolt (Gast)


Angehängte Dateien:

Lesenswert?

Hier das Programm: nach dem Programmstart ist die LED (B4 gegen GND) 
aus, nach Tastendruck (B3 gegen GND) geht sie an.

von S. Landolt (Gast)


Lesenswert?

Wenn ich raten sollte, würde ich sagen, bei Ihnen liegt B2 (INT0) 
ständig auf GND, die Beschreibung passt darauf.

von Michael S. (misax)


Lesenswert?

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
Noch kein Account? Hier anmelden.