Was bewirkt, dass das Einschalten eines einzelnen Ausgangspins am Microchip PIC16F690 spontan einen anderen Pin am selben Port ausschaltet? Ich kann dieses Problem umgehen, indem ich ein Byte in den gesamten Port schreibe und alle Pins gleichzeitig steuere, anstatt nur ein bisschen, um den Pin-Status zu steuern. Ich verwende hier den Hi-Tech C-Compiler. Ich bestimme den Zustand des Pins mit 9 LEDs, die jeweils 3 mA verbrauchen. Dies liegt weit unter den maximalen Leistungsspezifikationen.
In der mplab-Headerdatei ist der 0-Pin an Port A als solcher deklariert:
volatile bit RA0 @ ((unsigned)&PORTA*8)+0;
Ich schalte den Stift ein, indem ich einen hohen Wert darauf schreibe.
RA0 = 1;
Ist das Problem, dass der Complier die "1" als Byte behandelt und in den gesamten Port schreibt? Muss ich es besetzen? Wenn ja, hätte der Complier mir keinen Fehler geben sollen?
RA0 = (bit) 1;
Wenn ich an den gesamten Port schreibe, funktioniert alles wie erwartet:
PORTA = 0b00000001;