Forum: Compiler & IDEs Cortex LPC 13xx Pin reagiert nicht


von LPC 13xx Pin reagiert nicht (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein Problem mit meinem Cortex M3 NXP LPC 1313. Komischer weise 
reagieren nicht alle PINs wenn ich versuche sie anzusprechen. Mein Code 
sieht so aus:

#include "lpc_types.h"
#include "system_LPC13xx.h"
#include "lpc13xx_gpio.h"
#include "lpc13xx_adc.h"
#include "lpc13xx_syscon.h"


int main(void)
{


  GPIO_SetDir(PORT1, GPIO_Pin_1,1);

  while(1)
        {


       GPIO_SetBits(PORT1, GPIO_Pin_1);



         }
}


Wenn ich allerdings PORT3 GPIO PIN 1 High setze, dann funktioniert der 
Code. Ein Hardwareseitiges Problem kann ich ausschließen.

von hallo (Gast)


Lesenswert?

kenne den chip nicht! aber ich vermute mal, das du das Datenblatt 
studieren musst.
Da wird dann sicher stehen das der Pin auch für ne Uart oder ähnliches 
benutzt werden kann und deswegen nen pull-up widerstand braucht.
Viele Grüße

von Peter (Gast)


Lesenswert?

Aber der PIN ist ja auf Ausgang eingestellt. Da brauch ich doch keinen 
externen Pullup, oder?

von Jojo S. (Gast)


Lesenswert?

du setzt nur die Richtung beim GPIO auf Ausgang, aber der Pin ist per 
default gar kein GPIO, siehe Datenblatt. Das Register IOCON_R_PIO1_1 
muss noch entsprechend gesetzt werden.

von Peter (Gast)


Lesenswert?

Vielen Dank jojos,

wie sieht denn dann die Syntax aus. Muss ich einfach nur

IOCON_R_PIO1_1 = 0x..... ;

schreiben?

von Jojo S. (Gast)


Lesenswert?

ich hatte bisher nur mit dem LPC1769 gespielt, aber lt. Headerfiles 
müsste
 LPC_IOCON->PIO1_1 =  (LPC_IOCON->PIO1_1 & 0x7) | 0x1;
passen.

von Jojo S. (Gast)


Lesenswert?

sorry, kleiner Fehler drin:
 LPC_IOCON->PIO1_1 =  (LPC_IOCON->PIO1_1 & ~0x7) | 0x1;
Ist aber auch aus dem Bauch raus und nicht getestet.

von Peter (Gast)


Lesenswert?

Funktioniert leider nicht. Beim Build kommt der Fehler:

error:'LPC_IOCON_TypeDef' has no member named 'PIO1_1'

Aber ich finde nicht LPC_IOCON_TypeDef. Das müsste doch eigentlich in 
der lpc13xx_iocon.h stehen.

von Jojo S. (Gast)


Lesenswert?

in der CMSIS2.0 sind die in in LPC13xx.h definiert. Aber richtig, der 
PIO1_1 heisst da:
  union {
    // R_PIO1_1 preferred name rather than original JTAG_TDO_PIO1_1
    __IO uint32_t R_PIO1_1;
    __IO uint32_t JTAG_TDO_PIO1_1;
  };

also R_PIO1_1. Ist schon verwirrend.

von Peter (Gast)


Lesenswert?

Ich kann R_PIO1_1 bei mir nicht finden, aber dafür gehts wenn ich 
JTAG_TDO_PIO1_1 schreibe. Vielen Dank. Du hast mir sehr geholfen :)

von Jojo S. (Gast)


Lesenswert?

Gerne. Ich mag die LPCxx, aber wenn man das Zeug mal ein paar Monate 
liegen lässt kann man sich gleich komplett neu einarbeiten...
Der letzte Schrei bei NXP scheint jetzt die LPCOpen zu sein, da ist 
ziemlich viel zusammengefasst was man sonst mühsam zusammenbauen musste:
http://www.lpcware.com/content/nxpfile/lpcopen-platform

von Lothar (Gast)


Lesenswert?

Da sich das keiner merken kann hab ich immer die Pin-Layouts (ganz 
klein) am Arbeitsplatz hängen. Da kann man dann lesen: 
R/PIO1_1/AD2/CT32B1_MAT0

Somit kann man dann im Header-File nach PIO1_1 suchen und findet: 
IOCON_R_PIO1_1 oder .R_PIO1_1 oder eben .JTAG_TDO_PIO1_1, wobei die 
"Reservierung" mal zum JTAG gehörte.

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.