Forum: Mikrocontroller und Digitale Elektronik PIC12F683 Ausgang in Interruptroutine setzen schlägt fehl


von Uwe (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein ganz merkwürdiges Phänomen heute entdeckt, dass ich mir 
nicht erklären kann.

Ich werte beim 12F683 über Pin 7 (GP0) per Interupt ein Signal aus.
Wenn das Pegel an GP0 auf "H" wechselt, soll der Ausgang Pin 3 (GP4) 
gesetzt werden. Beim Wechsel auf "L" eben wieder rück gesetzt werden.
1
#INT RA
2
void_irs_GP0()
3
{
4
if (!toggle)
5
{
6
output_high (PIN_A4)
7
toggle = 1;
8
}
9
else
10
{
11
output_low (PIN_A4)
12
toggle = 0;
13
}
14
x = input_a(); // Port lesen
15
clear_interrupt (INT_RA0);
16
}


Wenn ich das Ganze in MPLAB 8.56 simuliere, ist alles OK, aber in der 
Realität wird GP4 nicht gesetzt.

Wenn ich die output Befehle durch das Setzen einer Variable ersetze und 
diese Variable in der main() auswerte und dann den Ausgang setze, ist 
alles gut.

Woran liegt das?

Wenn ich den GP4 direkt in der INT_EXT Interruptschleige setze, 
funktioniert das.

Wer kann mir das erklären??

Gruß

Uwe

PS: CCS 4.069 Compiler

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.