Control de un LCD 16x2 con la tool-chain winARM

El siguiente código fue generado utilizando WinARM e Insight. El framework se basó en una aplicación ejemplo de la propia tool-chain y se agregó el código para manejar un LCD de 16 x 2. NOTA: El siguiente código corre siempre y cuando se compile sin optimización, es decir, con -O0 ya que de otra manera por alguna razón falla (probablemente retardos muy lentos). También se utilizó una tarjeta OLIMEX LPC-E2129, y se depuró en RAM con un wiggler JTAG para el LPT de esa misma empresa. El propio código indica los puertos que se utilizaron. El código fuente lo puedes ver aquí

Dic-09

Ya sé porqué no funciona con la optimización: El optimizador elimina las variables de retardo. Para evitarlo hay que hacerlas 'volatile':

volatile int delay;

Con eso se está forzando al compilador a no optimizarlas.

Comentarios

Entradas populares de este blog

Las rutinas de retardo se escriben en ensamblador

Uso de interrupciones en el LPC21xx

Programación en C para sistemas embebidos