Hallo zusammen!
Ich habe folgendes Probelm. Und zwar weiß ich nicht, wie ich den Zustand
eines bestimmten Pins innerhalb einer ISR abfrage ... bzw. ich weiß
nicht warum es nicht funktioniert. Es handelt sich explizit um den Pin
PB3(OCI) eines ATTiny2313. An IRs nutzte ich den Capture-, Match-, sowie
den Timer1-Overflow-IR. Ich möchte jetzt innerhalb der Cap-ISR den
Zustand meines Ausganges (PB3(OCI)) abfragen um entsprechend reagieren
zu können. Genau diese Abfrage funktioniert aber nicht. Andere
Pin-Zustände in der ISR abzufragen klappt hingegen. Ich stehe z.zt. voll
auf dem Schlauch :/ ... Vllcht kann mir ja hier wer weiterhelfen. Und so
versuche ich den Pin-Zustand zu ermitteln:
1 | .equ PIN_STROBE_OUT = PB3
|
2 | .equ PORT_STROBE_OUT = PORTB
|
3 |
|
4 | ...
|
5 |
|
6 | int_t1cap:
|
7 | PUSH r16
|
8 | in r16, SREG
|
9 | PUSH r16
|
10 |
|
11 | [ ... ]
|
12 | in r16, PORT_STROBE_OUT
|
13 | andi r16, 1<<PIN_STROBE_OUT
|
14 | breq ....
|
15 | [ ... ]
|
16 |
|
17 | POP r16
|
18 | out SREG, r16
|
19 | POP r16
|
20 | reti
|
Der Sprung bei breq wird stets ausgeführt, was nicht sein kann. Ich seh
den Verlauf des Ausgangssignal aufm Oszi und weiß daher dass dies nicht
stets "Low" ist.
vielen Dank schonmal vorab
mit feundlichem Gruß
Manga