LPCXpresso 1769 problemas ADC

272 views
Skip to first unread message

Joel Gornati

unread,
May 2, 2015, 5:20:46 PM5/2/15
to embeb...@googlegroups.com
Hola a todos, estoy probando la librería LPCopen de la LPC 1769, no quiero usar CMSIS porque en la pagina de nxp dice esto "The use of LPCOpen is now recommend for most LPC MCUs, rather than the 'old-style' CMSIS-CORE library projects and examples. For more details please see the LPCXpresso IDE User Manual, and visit the LPCOpen webpages." 
Probé el ejemplo adc_periph y funciona bien solamente en AD0.0 y AD0.3, en los demás canales la conversión me  marca 0.

Adjunte el archivo adc.c 

cambiando #define _ADC_CHANNLE ADC_CHx solamente funciona en 0 y 3, a pesar de que el micro cuente con 8 ADC

si alguien sabe el porque me ayudara mucho.

gracias

Joel Gornati
adc.c

Joel Gornati

unread,
May 4, 2015, 12:26:54 AM5/4/15
to embeb...@googlegroups.com

Jorge gracias por responder, encontré la solucion pero no se si es la correcta debido a que no encuentro documentación de lpcopen.
Modifiqué el archivo board_sysinit.c agregando estas lineas a STATIC const PINMUX_GRP_T pinmuxing[] ---->
{0,  24,  IOCON_MODE_INACT | IOCON_FUNC1}, /* ADC 1 */
{0,  25,  IOCON_MODE_INACT | IOCON_FUNC1}, /* ADC 2 */
{0,  26,  IOCON_MODE_INACT | IOCON_FUNC1}, /* ADC 3 */
{1,  30,  IOCON_MODE_INACT | IOCON_FUNC3}, /* ADC 4 */
{1,  31,  IOCON_MODE_INACT | IOCON_FUNC3}, /* ADC 5 */
{0,  2,  IOCON_MODE_INACT | IOCON_FUNC2}, /* ADC 6 */
{0,  3,  IOCON_MODE_INACT | IOCON_FUNC2}, /* ADC 7 */

Ya que originalmente solamente estaba  {0,  23,  IOCON_MODE_INACT | IOCON_FUNC1}, /* ADC 0 */

Creo deducir que IOCON_FUNCx corresponde al registro PINSEL que figura en el manual. Debido a que si inspecciono IOCON_FUNC1, haciendo ctrl+click sobre ella, me lleva a la declaracion siguiente--->
#define IOCON_FUNC0             0x0 /*!< Selects pin function 0 */
#define IOCON_FUNC1             0x1 /*!< Selects pin function 1 */
#define IOCON_FUNC2             0x2 /*!< Selects pin function 2 */
#define IOCON_FUNC3             0x3 /*!< Selects pin function 3 */

Mirando el manual puedo justificar las lineas que agregue, mencionadas al principio. A lo primero hice un copypaste violento de la linea original correspondiente al ADC0 cambiando  únicamente el numero de puerto y pin, sin tener en cuenta su función y por supuesto que solo funcionaron los adc de 0 al 3 y los demas no.

Si esto no se hace así me gustaría escuchar consejos.

Saludos

Joel

Buen dia,

Cada pin del uC tiene cuatro posibles modos .... te fijaste que en el puerto que estes usando esto este configurado

Otra cosa

con las primeras librerias de NXP 2010 en alguna parte del codigo , encontre hardcodeado el canal 0 del conversor , fijate que no hayan dejado algo asi con el puerto 0

Espero algo te sirva!!! Contame si pudiste resolverlo.

Jorge
Reply all
Reply to author
Forward
0 new messages