Forum: Mikrocontroller und Digitale Elektronik Unterschied zwischen Port und Latch


von sr2401 (Gast)


Lesenswert?

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
}

von sr2401 (Gast)


Lesenswert?

Schreibfehler:
1
    TRISBbits.TRISB10 = 0;          //LED1 (green)
2
    TRISBbits.TRISB11 = 0;          //LED2 (red)

von Helmut (Gast)


Lesenswert?

Goggel mal nach "Read Modify Write Problem" oder lad' Dir den 
Mikroe-Compliler runter und schau Dir in der Hilfe das gleichnamige 
Thema an.
Gruß Helmut

von sr2401 (Gast)


Lesenswert?

Danke Helmut, habe das Beispiel auf der Mikroe-Seite gefunden..

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.