PCINT0 interrumpir en attiny

1

Empecé a trabajar con AVRs hace unos días. Comenzó con ensamblador y simulando en Proteus.

Mi objetivo actual es habilitar la interrupción de cambio de pin en PCINT0, que es PB0 en mi attiny13 . En este momento estoy siguiendo el problema. He habilitado external interrupt request , pero no puedo hacer que el chip active la interrupción en el pin PCINT0.

Elcódigoes

.deviceattiny13;---Codesegment---.CSEG.ORG$0;interruptvectortablerjmpReset;resethandlernop;IRQ0rjmpPCINT;PCINT0(pinINT0toINT5)PCMSK,MCUCRnop;Timer0overflownop;EEPROMreadynop;Analogcomparatornop;Timer0compareAnop;Timer0compareBnop;watchdognop;ADCconversion.ORG0x10;staringafterinterruptvectortablerjmpStartPCINT:retiReset:ldir16,low(RAMEND)outSPL,r16sei;enablinginterruptsStart:ldir16,0b000000outDDRB,r16inr16,MCUCR;changetriggeringedgefortheinterruptorir16,0x03outMCUCR,r16ldir16,0x60outGIMSK,r16;PCIEoutGIFR,r16ldir16,0x01outPCMSK,r16Loop:rjmpLoop

EnlaseccióndespuésdeetiquetarStart,todoslosregistrosymarcasquehabilitanlasinterrupcionesseconfigurandeacuerdoconlas hoja de datos 44 a 47. Estos son I en SREG , ISC00 y ISC01 en MCUCR , PCINT0 en PCMSK , PCIE, INT0 en GIMSK y PCIF en GIFR .

La depuración en Proteus, sin embargo, muestra que se está activando INT0 (segundo vector), pero no PCINT0 (tercer vector).

¿Puedes decirme, por favor, qué estoy haciendo mal?

Actualizar

Se sugirieron varios cambios en el código en los comentarios y así es como he modificado el código, que todavía no causa una interrupción al presionar el botón mientras simulaba en Proteus.

Reset:
    ldi r16, low(RAMEND)
    out SPL, r16


Start:
    ldi r16, 0b000000
    out DDRB, r16       ; port B input/output
    ldi r16, 0x20
    out GIFR, r16       ; clearing interrupt flag
    out GIMSK, r16      ; Pin change interrupt enable
    ldi r16, 0x01
    out PCMSK, r16      ; enable PCINT0
    sei

Actualización 2

Estoy usando Proteus 8 v8.1 con simulación avanzada en Windows 8 (x64), luego de eso actualicé a Proteus 8.4. El resultado sigue siendo el mismo.

    
pregunta hrust

0 respuestas

Lea otras preguntas en las etiquetas