Forum: Mikrocontroller und Digitale Elektronik LPC2114 Problem mit Port1


von Ulrich R. (urlo)


Lesenswert?

Hallo Leute,

Ich bin jetzt über drei Ecken dazu gekommen auchmal einen Philps ARM zu 
programmieren und habe ein echt komisches Problem mit dem Port1 bei den 
GPIOs. In den letzten Jahren hatte ich nur AVRs in Gebrauch und 
irgendwie vermute ich, dass mein Problem eine triviale Lösung haben 
könnte.

Es ist also so, dass ich im Hauptprogramm die Pins des Port1 (also die, 
die auf Ausgang sind) nicht mehr auf 0 schalten. Wenn man sie während 
der Initialisierung auf 0 stellt, dann passt es. Stellt man sie im 
Hauptprogramm auf 1 geht das auch noch, aber eine nachfolgendes setzen 
auf 0 geht einfach nicht mehr. Mit Port 0 geht’s problemlos. Dabei ist 
schon bekannt, dass es IOSET und IOCLR gibt und das eine Bit (3) in 
PINSEL2 ist auch gesetzt. Vielleicht ist ne Kleinigkeit, aber an so was 
kann man verzweifeln.

lg Ulrich

von Andreas K. (a-k)


Lesenswert?

Blindekuhspiel? Wirst schon das Programm rausrücken müssen.

von Peter (Gast)


Lesenswert?

Einige Portpins haben spezielle Eigenschaften, wie z.B. Open Drain 
Ausgänge für I²C, oder es ist eine Special Funktion aktiviert und nicht 
der GPIO Modus (siehe Pin Configuration und Pin Connect Block).
Machen alle Pins von Port 1 ärger oder nur einzelne ?

von Andreas K. (a-k)


Lesenswert?

Die Spezialfunktionen liegen alle auf Port 0. Port 1 hat nur JTAG und 
Trace zu bieten.

> und das eine Bit (3) in PINSEL2 ist auch gesetzt

Was die Pins 16..25 als TRACE Pins deklariert. So wird das nix. Wenn die 
Sense-Pins P1.26 und P1.20 hardwareseitig richtig liegen, sollte man 
PINSEL2 in Ruhe lassen.

von Ulrich R. (urlo)


Lesenswert?

Hi, etwas spät aber immerhin komme ich heute noch dazu. Erstmal ists 
richtig, Port1 hat eigentlich keine Sonderkunktionen, nur das Bit 3 in 
Pinsel2 entscheidet über den Gebrauch als GPIO und es wird eh 0 gesetzt, 
da hab ich mich vorhin geirrt - sollte also richtig sein, hab ich gerade 
nochmal geprüft.

Wie müssen P1.26 und P1.20 beschaltet sein? 26 liegt am RTCK vom Jtag, 
20 ist als Ausgang beschaltet (lässt sich aber genauso wenig wie die 
anderen als Ausgang definierten Bits wieder auf 0 legen).

Hab den verwendeten Code jetzt mal was gerafft um das hier reinstellen 
zu können:

PINSEL2=PINSEL2 & 0xFFFFFFF7;
IO1DIR=IO1DIR | 0x02300000;  //Port1. 20, 21 und 25 als Output

while(1) {
    wait(30000);
    IO1SET=0x02300000;    //Port1. 20, 21 und 25 setzen

    wait(30000);
    IO1CLR=0x02300000;    //Port1. 20, 21 und 25 löschen
}

Die Schleife läuft auch tadellos bestätigt durch UART und einen Pin von 
Port0, nur beim Port 1 liegt immer ein High an. Das kanns doch nicht 
sein, oder? Ich kann auch so gut wie ausschließen, dass der Chip nen 
Fehler hat, weils auf zwei unterschiedlichen Boards nicht funzt.

Bitte Leute, sagt mir dass ich blöd bin und ne Kleinigkeit vergessen 
habe, Hauptsache das Ding läuft endlich richtig.

lg Ulrich

von Andreas K. (a-k)


Lesenswert?

Lass mal P1.20 weg. Hardwaremässig offen! Wenn's dann tut, spielt dir 
das ETM einen Streich und bleibt auch trotz deines PINSEL2 Statements 
auf den Pins sitzen.

von Ulrich R. (urlo)


Lesenswert?

Hm, hab ich schon probiert, leider ohne Erfolg

von Thomas S. (Gast)


Lesenswert?

Hast du P1.20 und P1.26 auf High während dem Reset ?
Ansonsten wird Trace bzw. Debug an die Pins geschaltet.

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.