LPC2114 Problem mit Port1

OP #584467
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
Gast #584493
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 ?
#584503
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.
OP #584749
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.