Εrnst B. schrieb:
> 1 Punkt für Gryffindor schrieb:
>> |INT0_isr:
>
> das ist der Vektor für den INT0, nicht der für den PinChangeInterrupt.
> Du brauchst eine ISR für PCI1
>
> Und dann solltest du nochmal die Pins kontrollieren, PINA passt nicht
> zum Flag, was du im PCICR setzt:
>
> 1 Punkt für Gryffindor schrieb:
>> | ori r16, 2 |
>> | sts PCICR, r16
>
> das wär für PORTB, wenn ich das DB richtig überflogen habe.
Danke für den Hinweis! Ich habe den Code jetzt entsprechend angepasst.
So sieht das ganze dann aus (gekürzt):
1 | .org PCI0addr
|
2 | jmp PCINT0_isr
|
3 |
|
4 | .org INT_VECTORS_SIZE*2
|
5 |
|
6 | PCINT0_isr:
|
7 | nop ; * Breakpoint
|
8 | reti
|
9 |
|
10 | ; ...
|
11 | lds r16, PCICR
|
12 | ori r16, 0b00001111 ; Einfach mal testweise alle PCINT anschalten
|
13 | sts PCICR, r16
|
14 | lds r16, 0xff
|
15 | sts PCMSK0, r16
|
16 | sei
|
17 | end:
|
18 | jmp end ; * Breakpoint
|
Dennoch wird kein Interrupt beim step-by Durchlauf ausgelöst. "Mask
Interrupts while stepping" ist bei mir auf False somit sollte man das
doch so ein Int. eigentlich mitbekommen oder?