Hallo
Ich schaffs einfach nicht, beim PIC 16F876 den Port RA1 als digitalen
Eingang zu verwenden. Das hier ist mein Code, bzw, die betreffenden
Ausschnitte:
So initialisiere ich die Ports:
1 | void InitPorts(void)
|
2 | {
|
3 | PORTA = 0x00; // All outputs = 0
|
4 | TRISA = 0x03; // RA0,1: IN RA2..5: OUT
|
5 |
|
6 |
|
7 | PORTB = 0x00 ; // Ausgänge: RB4=1 RB3/RB5/RB6/RB7=0
|
8 | TRISB = 0x07 ; // Eingänge: RB0..RB2
|
9 | OPTION &= ~0x80;
|
10 |
|
11 | PORTC = 0x23 ; // RC0,1,5 = 1 (Mode, /Enable, /Brake)
|
12 | TRISC = 0xD8 ; // RC0,1,2,5: OUT RC 3,4,6,7: IN
|
13 |
|
14 |
|
15 | }
|
Und so frage ich den Port ab:
1 | if (RA1 == 0)
|
2 | {
|
3 | PositionInit();
|
4 | nextState = WaitForCommand; // Set next State
|
5 | }
|
Obwohl RA1 mit einem Pullup auf VCC gezogen wird, springt das Programm
andauernd in den if-Block hinein :-(
Sieht jemand, was ich falsch mache? Bie Port B funktionieren die
Eingänge und ich habe sie ja, genau gleich konfiguriert. Und
standardmässig ist ja der Port A auf die Digitaleingänge geschaltet und
nicht auf die Analogperipherie ...
Vielen Dank und Gruss
David