Hallo,
ich habe eine Verständnisfrage zu dem Unterschied zwischen Port und
Latch bei I/O-Pins. Habe mir ein kleines Board mit einem PIC32 erstellt
und wollte um zu Testen, ob das Programmieren funktioniert, einfach mal
zwei LEDs abwechselnd blinken lassen. Was mir dabei aufgefallen ist:
Spreche ich die LEDs über das Latch-Register an, blinken beide LEDs wie
gewünscht abwechselnd. Probiere ich das gleiche über Port, blinkt nur
die rote LED, die Grüne bleibt ausgeschaltet. Habe vorher einen dsPIC33
genutzt und konnte dort eigentlich zum Schreiben von Ausgängen immer
"PORT" nutzen. Velleicht hat ja jemand eine Idee woran das liegen
könnte, da ich momentan ehrlich gesagt ziemlich ratlos bin..
1 | #include <stdio.h>
|
2 | #include <stdlib.h>
|
3 | #include <plib.h>
|
4 |
|
5 | #pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_4, FPLLODIV = DIV_2, FWDTEN = OFF
|
6 | #pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_1
|
7 | #define SYS_FREQ (50000000L)
|
8 |
|
9 | int main(int argc, char** argv) {
|
10 |
|
11 | TRISBbits.TRISB10 = 0; //LED1 (green)
|
12 | TRISBbits.TRISB11 = 1; //LED2 (red)
|
13 |
|
14 | int i = 0;
|
15 |
|
16 | while(1){
|
17 |
|
18 | LATBbits.LATB10 = 1;
|
19 | LATBbits.LATB11 = 0;
|
20 |
|
21 | for(i=0; i<200000; i++) { //Warteschleife
|
22 | }
|
23 | i=0;
|
24 |
|
25 | LATBbits.LATB10 = 0;
|
26 | LATBbits.LATB11 = 1;
|
27 |
|
28 | for(i=0; i<200000; i++) {
|
29 | }
|
30 | i=0;
|
31 | }
|
32 |
|
33 | return (EXIT_SUCCESS);
|
34 | }
|