Autor Tema: Iniciando practicas LPCXpeso ( lpc1343)  (Leído 5726 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado pablolode

  • PIC16
  • ***
  • Mensajes: 123
Iniciando practicas LPCXpeso ( lpc1343)
« en: 23 de Octubre de 2010, 18:09:03 »
Hola amigos estoy iniciando practicas con LPCXpreso ,vengo de las PICs y es como empesar de 0¡¡¡
estoy analiszando las librerias que trae como practicas y algunas lineas no comprendo muy bien estoy con el proyecto de comfiguracion de puertos GPIO.

static __INLINE void GPIOSetDir( uint32_t portNum, uint32_t bitPosi, uint32_t dir )
{
   if(dir)
      LPC_GPIO[portNum]->DIR |= 1<<bitPosi; ///  ESTA LINEA en concreto
   else
      LPC_GPIO[portNum]->DIR &= ~(1<<bitPosi);
}

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #1 en: 23 de Octubre de 2010, 18:27:35 »
Por lo visto los puertos los trabaja mediante arreglos de estructuras, donde uno de sus elementos es la dirección (Entrada o salida). Lo único que hace es seleccionar el puerto como indice, luego accede al elemento DIR y modifica un bit aplicando una mascara para forzar su valor a 0 o a 1. ( | o  & )

bitPosi indica el bit del puerto a modificar y lo utiliza para rotar hasta esa posición el 0 o 1 y formar la mascara a implementar.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado psykhon

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 823
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #2 en: 23 de Octubre de 2010, 20:06:55 »
static __INLINE void GPIOSetDir( uint32_t portNum, uint32_t bitPosi, uint32_t dir )
{
   if(dir)
      LPC_GPIO[portNum]->DIR |= 1<<bitPosi; ///  ESTA LINEA en concreto
   else
      LPC_GPIO[portNum]->DIR &= ~(1<<bitPosi);
}

Espera que le envies el nro de puerto, la posicion del bit y la direccion del mismo, lo que hace la linea que señalas es "correr" un 1 tantas veces como el nro de la posicion. Es confuso para el que viene de pic pero mucho mas claro para los de avr o otras arquitecturas donde hubo ansi c desde el principio.

No desanimes que es una pavada y le vas a encontrar la logica muy pronto!

pd: parece que Suky y yo contestamos al mismo tiempo  :)
« Última modificación: 23 de Octubre de 2010, 20:10:49 por psykhon »
No, no se lo que estoy haciendo. Nadie sabe que estoy haciendo. Por eso se llama "Investigacion".

Desconectado pablolode

  • PIC16
  • ***
  • Mensajes: 123
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #3 en: 24 de Octubre de 2010, 22:11:15 »
ajah!!!!
entonces con la funcion
**********************************************
 /* use port0_1 as input event, interrupt test. */
  GPIOSetDir( PORT0, 1, 0 );
//le digo que el puerto  0, el bit 1, y 0 que indica que  es un pin  configurado como  salida

static __INLINE void GPIOSetDir( uint32_t portNum, uint32_t bitPosi, uint32_t dir )
{
   if(dir)
      LPC_GPIO[portNum]->DIR |= 1<<bitPosi; ///  ESTA LINEA en concreto
   else
      LPC_GPIO[portNum]->DIR &= ~(1<<bitPosi);
}
**********************************************


entonces la funcion lo que hace es configurar el pin como salida???

escomo hacer un EN CCS con pic
bit_set(TRISB,0)// pongo b0 como entrada

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #4 en: 25 de Octubre de 2010, 00:00:07 »
Hola pablo.

Efectivamente eso es lo que hace. Muy similar a lo que mencionás en CCS.

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #5 en: 25 de Octubre de 2010, 12:24:02 »
Estas trabajando con las librerías, seria bueno que primero comenzaras con las definiciones del hardware lpc13xx.h para que te guíes con el pdf del micro si es posible usar asm. Y despues vas a la librerías.

Desconectado pablolode

  • PIC16
  • ***
  • Mensajes: 123
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #6 en: 25 de Octubre de 2010, 13:10:07 »
Estas trabajando con las librerías, seria bueno que primero comenzaras con las definiciones del hardware lpc13xx.h para que te guíes con el pdf del micro si es posible usar asm. Y despues vas a la librerías.

uff¡¡, si tengo que arrancar con ASM esto es mas complicado de lo que pensaba, toy mas perdido que turco en la neblina :? no habra por ahi algun ejemplito sensillo de parpadear un led ,comunicacion rs232...?

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #7 en: 25 de Octubre de 2010, 13:45:18 »
Tranquilo. Hay que ir despacio para no entrar en pánico.

Con qué entorno estás trabajando? Imagino que será Code Red. Fijate que trae programitas de ejemplo.

Por las dudas primero andá al menú Windows -> Reset Perspective _> Ok.

Luego abajo a la izquierda aparece una solapa llamada "QuickStart". Su primer ítem es Import Example Project(s). Hacé click ahí, luego Browse y entrá a la carpeta LPC1000 y dirigite a la subcarpeta LPC13xx. Ahi dentro hay 3 carpetas. Dos de ejemplos y una  del CMSIS(que  es un conjunto de definiciones y convenciones estandarizadas en ARM para unificar el código aún estando ante distintas marcas de uC con core ARM).

La ruta del ejemplo mia es la siguiente: C:\nxp\lpcxpresso_3.4\Examples\LPC1000\LPC13xx\LPCXpresso1343.zip

el asistente te va a mostrar muchos ejemplos que hay en ese zip. Eleji el blinky, y destilda el resto, excepto el LPC13xx_Lib que creo que vas a necesitar para el blinky.

Cuando lo compiles y debuguees deberias ver el LED de la LPCxpresso parpadear...

Saludos.
 

 
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado pablolode

  • PIC16
  • ***
  • Mensajes: 123
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #8 en: 26 de Octubre de 2010, 10:22:44 »
ah¡¡ buenisimo  :o¡¡¡¡ahora si se pone mas interesante la cosa¡¡¡¡¡¡¡¡

me surgen unas dudas

**********************
LED_TOGGLE_TICKS=100;
------------------------------

if ( (timer32_0_counter%LED_TOGGLE_TICKS) < (LED_TOGGLE_TICKS/2) ) ??????

****************************************************
1)aqui cada ves que el contador de tics pasa los 50 enciende o apaga el led, cual es la cuenta que hace esta comparacion??

2)seria lomismo hacer que cada ves que cuente 50 tics resetear el contador y encender o apagar??

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #9 en: 26 de Octubre de 2010, 14:07:34 »
Si.

La variable timer32_0_counter debe incrementarse dentro de la interrupcion del Timer0.

El resto son sólo cálculos. En ese caso lo que hace es determinar y aplicar el período(100 ticks del timer0) y duty de trabajo del mísmo, que es del 50% en ese caso.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado pablolode

  • PIC16
  • ***
  • Mensajes: 123
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #10 en: 27 de Octubre de 2010, 21:08:02 »
ok ,gracias

sigo avansando con estos ejemplos ahora stoy con  la usart  que hace un eco desde el hiperterminal pero veo que si le agrego un

#include <stdio.h>

 printf ("hola...\n");

no lo envia por hiperterminal sino a la consola de npxepreso???
y si desconecto eldebuger se cuelga,no es asi si solo lo trabajo como eco.


Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #11 en: 27 de Octubre de 2010, 23:55:05 »
la funcion printf, solo funciona para la hiperterminal, ignoro si se puede cambiar desde el compilador, pero en ese mismo ejemplo, utilizan una funcion para imprimir en la uart, y si quieres las ventajas del printf, utilize el sprintf para convertir alguno numero  a cadenas, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado pablolode

  • PIC16
  • ***
  • Mensajes: 123
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #12 en: 28 de Octubre de 2010, 22:57:11 »
mm..no entiendo por que no imprime una simple cadena de caracteres por el hiperterminal ???, en cambio si lo imprime en la consola del LPCExpreso...
he revisado el manual de ANSI C  y es un programa  muy simple,imprimir una caden de caracteres,
 alguna sugerencia compañeros???


Desconectado pablolode

  • PIC16
  • ***
  • Mensajes: 123
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #13 en: 29 de Octubre de 2010, 10:05:31 »
si envio la cadena mediante esta funcion UARTSend:
********************

UARTSend("hola",4);
*******************
la envia por la usart pero no me reconoce las comandos: \n,\r
sera que tengo que desarollar una funcion para esto??

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: Iniciando practicas LPCXpeso ( lpc1343)
« Respuesta #14 en: 29 de Octubre de 2010, 10:31:12 »
hola, si quisieras mandar hola con el salto de carro, tendrias que enviar

UARTSend("hola\r",5);
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....