EINT1 hace que se cuelgue el LPC2129

Debido a una falla en el silicio, cuando se escribe a los registros EXTPOLAR y EXTMODE para configurar a EINT1, se corrompe el valor del registro VPBDIV, por lo que el sistema termina colgándose. NXP tiene un work-around que resuelve este problema. El documento completo se puede descargar de aquí, y a continuación muestro el ejemplo que me funcionó.

#define VPBDIV_VAL    1

void eint0_init()
{
 /* EINT0 (P0.14)
 *
 */
 PINSEL0|=(0x02<<28);

 EXTINT=0x0f;

 /*
 *
 */
 EXTWAKE=0;

 /* ¡¡ NO DEPURAR PASO A PASO LAS INSTRUCCIONES DEL BLOQUE INDICADO !!
 *
 */
 {
 /* workaround para la errata en la escritura de EXTPOLAR y EXTMODE
 *
 */
 VPBDIV=0;

 /* falling-edge sensitive
 *
 */
 EXTPOLAR=0;

 /* edge-sensitive
 *
 */
 EXTMODE|=0x02;

 VPBDIV = VPBDIV_VAL;
 }

 VICIntSelect&=~(1<<15);
 VICVectAddr4=(uint32_t)button_isr;
 VICVectCntl4=(15)|(1<<5);
 VICIntEnable|=(1<<15);
}
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s