Hallo,
als erstes, ich bin relativ neu beim PIC-programmieren, also seid bitte
ein wenig nachsichtig, falls ich einen groben Schnitzer gemacht habe
;-).
Ich habe folgendes Problem:
Ich verwende einen PIC33FJ16GS404
Ich möchte gerne den PIN2 von PORTB als digitalen Ausgang verwenden.
Nach einiger Zeit suche im Datenblatt wurde ich dann auch fündig.
Dort hieß es, man muss das Register ADPCFG auf 1 setzen um diesen Pin
als digitalen verwenden zu können. Ebenso habe ich mein TRISB Register
auf 0 gesetzt => Ausgang
Hier im Code: (andere Ports auch Initialisiert)
(ist in der Funktion INIT enthalten)
1 | /*Initialisieren der Ports*/
|
2 | ADPCFG = 0xFFFF; //Alle Ports auf Digital
|
3 |
|
4 | TRISA = 0x00; /*Ein- und Ausgänge festlegen*/
|
5 | LATA = 0x0000; /*Alles auf 0 Setzen*/
|
6 |
|
7 | TRISB = 0x7810; /*Ein- und Ausgänge festlegen*/
|
8 | LATB = 0x0000; /*Alles auf 0 Setzen*/
|
9 |
|
10 | TRISC = 0x2278; /*Ein- und Ausgänge festlegen*/
|
11 | LATC = 0x0000; /*Alles auf 0 Setzen*/
|
In meiner Main lasse ich den Pin zum testen toggeln:
1 | int main(void)
|
2 | {
|
3 | INIT(); //Funktion Initialisierung aufrufen
|
4 | while(1)
|
5 | {
|
6 | LATBbits.LATB2 = 0;
|
7 | __delay_ms(500);
|
8 | LATBbits.LATB2 = 1;
|
9 | __delay_ms(500);
|
10 |
|
11 | }
|
12 | return (0); //Programmende
|
13 | }
|
Jetzt habe ich das Problem, dass mein RB2 dauerhaft 1,5V ausgibt, so
bald ich im Register ADPCFG = 0xFFFF; eingebe.
Bei anderen Ports, die nicht standartmäßig analog sind, funktioniert das
einwandfrei.
Muss ich noch irgendwo ein Register beachten?