AVR Tiny2313 Pinzustand PB3(OCI) in ISR abfragen

Gast #1081182
Lesenswert?

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
Gast #1081200
Lesenswert?

>Ich seh den Verlauf des Ausgangssignal aufm Oszi und weiß daher dass dies
>nicht stets "Low" ist.

Vorsicht: Möglicherweise wird die ISR auch immer nur dann aufgerufen, 
wenn das Signal gerade L ist.
Gast #1081260
Lesenswert?

Du willst also durch Lesen von PORTB und Auswerten von PB3 den Zustand 
von OC1A ermitteln...

Das geht so nicht, da die Sonderfunktionen (hier der PWM-Pin) um das 
Portregister herum angesteuert werden. Der Port wird also vom 
Portregister getrennt und mit der Sonderfunktion verbunden. Das 
Portregister merkt also nichts davon, was die Timer-Compare-Einheit mit 
dem Portpin anstellt.

Inwieweit es durch Lesen von PINB funktioniert, habe ich jetzt nicht 
recherchiert.

~

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren