Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PEPA_P_I_G
Informática Industrial
PROBLEMA 2.
Realizar un programa de C para el LPC4088 que lea un carácter ASCII-hex por P0 cada 500ms (timer1). Cuando ha recibido 8
caracteres debe convertirlo a número y enviarlo por P1, escribiendo un flanco de subida en P0.15 de 10ms el período. Se debe
definir una función de C para la conversión de una cadena ASCII-hex (8 caracteres) a un número.
Crear una función en ensamblador para convertir el código ASCII en un valor hexadecimal: uint32_t ascii_hex (uint32_t codascii,
uint32_t valor_a_restar). Ejemplo: 8_ASCII:16_[0x31][0x46]…[0x31][0x30] -> w: [0001, 1111,…, 0001,0000]
Para configurar el timer:
1. Resetear el timer 1
2. Activar el bit de interrupción del match 0 en el registro MCR
3. Programar el temporizador para que cuente ms, es decir poner PR a la preescala correspondiente a un PCLK de 60MHz
4. Poner el registro match del timer1 (MR0) a las milésimas de segundo que correspondan.
5. Borrar el indicador de interrupción del MR0 en el IR.
6. Poner en marcha el timer 1 (TCR a 1)
7. Esperar a que se cuenten las milésimas indicadas, testeando el bit IR de MR0.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1673623
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
PROBLEMA 3.
En una aplicación, un microcontrolador LPC4088 recibe datos desde un convertidor A/D por el canal 2, sincronizado con el flanco
negativo de una señal de reloj que se recibe por el pin P2.0. La entrada analógica corresponde con un sensor de presión que tiene
una precisión de 10 mv/bar. Se debe calcular la presión en unidades físicas (bar) y enviar el word desde el microcontrolador hacia
el exterior a través del puerto P0.
Escribir un programa para el microcontrolador, que funcione como se ha descrito. La recepción de cada dato de entrada
(adquisición analógica) y el envío de cada dato de salida debe hacerse dentro de una función de interrupción que se ejecutará
cada vez que llegue un flanco negativo al pin P2.0. Recuerda que:
1. Las interrupciones de los pines de los puertos P0 y P2 se gestionan a través de la función de servicio de interrupción
GPIO_IRQHandler.
2. Hay que habilitar la interrupción del GPIO (GPIO_IRQn) y programar la prioridad en el NVIC y borrar peticiones pendientes
por seguridad.
3. Para habilitar una interrupción por flanco de bajada en un pin del puerto P2 hay que poner a 1 el bit correspondiente del
registro ENF2. Borrar en el CLR2 algún posible aviso de interrupción.
4. Hay que habilitar las interrupciones en el procesador __enable_irq().
5. Dentro de la función de interrupción, para saber cuál de los pines del puerto P2 ha generado la interrupción, debe
consultarse el registro STATF2 (Es mejor consultarlo siempre, aunque como en este caso sólo un pin del puerto P2 pueda
provocar interrupción).
6. La función de interrupción debe borrar el flag de petición de interrupción del NVIC.
PROBLEMA 4.
Realizar un subprograma en ensamblador para el LPC4088, que a partir de un halfword en binario natural, obtenga sus caracteres
hexadecimales. Estos caracteres deben agruparse en un word. La subrutina tiene dos parámetros el dato a convertir y el resultado
de la conversión. Esta subrutina debe cumplir el estándar AAPCS.
Ejemplo: hw:2_[0100,0000,1111,0010] -> w:16_[0x34,0x30,0x46,0x32]
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-1673623
Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.