MSP430: configurando múltiples entradas para el mismo ISR

1

MSP430F2274

Tengo cuatro botones que deben estar vinculados a la misma rutina de servicio de interrupción. Están vinculados a P1.0 - P1.3. El primer botón está configurado y funciona muy bien con este código de inicialización:

                                        ; configure switches
        bic.b  #0x01,&P1SEL             ; select GPIO
        bic.b  #0x01,&P1DIR             ; configure P1.0 as inputs
        bis.b  #0x01,&P1OUT             ; use pull-up
        bis.b  #0x01,&P1REN             ; enable pull-up
        bis.b  #0x01,&P1IES             ; trigger on high to low transition
        bis.b  #0x01,&P1IE              ; P1.0 interrupt enabled
        bic.b  #0x01,&P1IFG             ; P1.0 IFG cleared

Quiero aplicar la misma configuración a los cuatro botones, así que la cambié a:

                                        ; configure switches
        bic.b  #0x0F,&P1SEL             ; select GPIO
        bic.b  #0x0F,&P1DIR             ; configure P1.0 as inputs
        bis.b  #0x0F,&P1OUT             ; use pull-up
        bis.b  #0x0F,&P1REN             ; enable pull-up
        bis.b  #0x0F,&P1IES             ; trigger on high to low transition
        bis.b  #0x0F,&P1IE              ; P1.0 interrupt enabled
        bic.b  #0x0F,&P1IFG             ; P1.0 IFG cleared

Este fue el único cambio, y rompió el programa.

La ISA se configura así:

P1_ISR:     bic.b   #0x01,&P1IFG            ; clear the interrupt flag
            WALK_ON                         ; turn the WALK on
            reti                            ; end service routine

; ... some other unrelated stuff ...

            .sect   ".int02"                ; Port 1 interrupt Vector
            .word   P1_ISR
    
pregunta AaronF

0 respuestas

Lea otras preguntas en las etiquetas