Professional Documents
Culture Documents
Prctica: 6
Interrupts
I. Objetivo ............................................................................................................................ 1
1.1 Material y equipo utilizado ........................................................................................................... 1
II Introduccin terica .............................................................................................................. 1
III Desarrollo ........................................................................................................................... 3
Cuestionario .............................................................................................................................................. 3
Preguntas generales de interrupcin ..................................................................................................... 3
Rutina de servicio de interrupcin ........................................................................................................ 4
Lab 5a Push Your Button ...................................................................................................................... 6
Lab 5b Can you make a Watchdog Blink? .......................................................................................... 10
IV Conclusin .......................................................................................................................... 11
V Bibliografa.......................................................................................................................... 11
1
I. Objetivo
Crear un proyecto CCS que use una interrupcin para alternar el LE5 cuando se presiona un botn.
Esto requiere que crees: Cdigo de configuracin que habilita la interrupcin GtLO y GtLO LSR
para el botn pulsador, tambin se crear el cdigo para manejar todos los vectores de interrupcin.
1 Computadora
1 MCU MSP430FR4133 LauchPad Development Kit
Code Composer Studio (con MSPWARE, libreras proporcionadas en el workshop del MSP430).
II Introduccin terica
Las prioridades de interrupcin son fijas y definidas por la disposicin de los mdulos en la cadena
de conexin, como se muestra en la Figura 1-2. Las prioridades de interrupcin determinan en qu
interrupcin se acta cuando ms de una interrupcin est pendiente simultneamente.
Reinicio de sistema
(No) enmascarable
Mscara
2
GPIO_clearInterruptFlag () elimina el bit IFG asociado a nuestro pin (por ejemplo, P1.1). Esto
no es necesario, pero se usa comnmente justo antes de una llamada para "habilitar" una
interrupcin. Limpiara el IFG antes de configurar IE si desea ignorar cualquier evento de
interrupcin anterior; en otras palabras, por supuesto la bandera primero si solo te importan las
interrupciones que sucedern ahora o en el futuro.
Finalmente, una vez que haya habilitado cada interrupcin individual, la interrupcin global debe
estar habilitada. Esto se puede hacer de varias maneras. Los dos mtodos ms comunes usan
funciones de compilacin intrnsecas:
__bis_SR_register (GIE) ordena al compilador que establezca el bit GIE en el registro de estado
3
- SR = registro de estado
III Desarrollo
Cuestionario
Preguntas generales de interrupcin
2. Por qu mantener el ISR corto (es decir, no hacer mucho procesamiento en ellos)?
Las interrupciones.
Son mucho ms eficientes. polling empata la CPU; lo que es peor, consume energa esperando
que ocurra un evento.
Flujo de interrupcin
IFG
7. Escribe el cdigo para habilitar una interrupcin GPIO para el Port.Pin listado?
PIN GPIO para usar: FR4133 = P1.2.
GPIO_setAsInputWithPullUpResistor(GPIO_PORT_1, GPIO_PIN2);
GPIO_InterruptEdgeSelect(GPIO_PORT_P1,GPIO_PIN2,GPIO_LOW_TO_HIGH_TRANSIST
ION);
8. Escriba la lnea de cdigo requerida para activar las interrupciones de forma global:
FR4133
Digamos que su CPU est en el medio del GPIO Port 2 ISR, puede ser interrumpido por
una nueva interrupcin de temporizador de intervalo WDT? Si es as, hay algo podras
hacer con tu cdigo para permitir que esto suceda?
No, es por default, Los interruptores MSP430 son deshabilitados cuando se ejecuta un ISR. para
habilitar esto, puede configurar el anidamiento de interrupcin (aunque esto no se recomienda).
msp430fr4133.h
5
#pragma vector=PORT1_VECTOR
Los puertos del GPIO son interruptores agrupados. Es mejor para leer el registro P1IV que puede
encargarse de multiples pines de interrupcin usando estados de switch/case.
12. Cmo transfiere un valor a (o sale de) e interrumpe la rutina de servicio (ISR)?
Los interruptores no pueden pasar argumentos, necesitas usar una variable global.
Como aprendimos anteriormente, la mayora de las interrupciones MSP430 estn agrupadas. Por
ejemplo, las interrupciones del puerto GPIO estn todas juntas.
13. Para interrupciones dedicadas (como el temporizador de intervalo WDT), la CPU borra
el indicador IFG al responder a la interrupcin. Cmo se borra un bit IFG para
interrupciones grupales?
14. Crear ISR para interrupciones agrupadas es tan fcil como seguir una 'plantilla'.
#pragma vector=PORT1_VECTOR
Ahora bien si no estamos seguros de lo que est pasando, nos vamos a los registros donde
podremos ver si en verdad se est detectando una interrupcin observando los valores de P1IE y
GIE cambiando su valor de 0 a 1 al haber una interrupcin.
8
Enseguida se modifica la funcin: __interrupt void pushbutton_ISR (void), esto con el fin de
manipular que hacer al detectar una interrupcin por el mismo botn, el codigo modificado es el
siguiente:
9
Finalmente quitamos todos los breakpoints, compilamos, depuramos y damos click en run, para
posteriormente presionar el botn y visualizamos que el LED prende y al presionar nuevamente,
el LED se apaga.
10
Compilamos, depuramos y damos click en run y visualizamos que el LED prende y apaga en un
intervalo de tiempo que puede ser modificado con los clockdivider dentro del cdigo.
11
IV Conclusin
V Bibliografa
www.ti.com
Datasheet.
Users guide.
Workshop.