Ensamblador - Duda sobre interrupciones i stack

 
Vista:

Duda sobre interrupciones i stack

Publicado por Xavi (1 intervención) el 03/07/2013 11:33:09
Hola a todos,

Imagino que mi pregunta será muy simple o sea que... mejor! Soy un aficionado a la programación en ASM de microcontroladores, sobretodo PIC aunque mi duda es muy general. Aviso que soy muy novato. La cosa es que por la sencillez de mis programas nunca había tenido mucha dificultad con el tema de interrupciones pero ahora me surge una duda.

Si lo tengo bien entendido al darse una interrupción, el valor actual del PC se mete en la pila, se carga en él la dirección del vector de interrupción y desde allí se sirve a la interrupción con la rutina ISR. Al final de esa rutina (en el caso de los PICs usando el comando RETFIE) se vuelve a cargar el PC con el valor de la pila y seguimos funcionando donde antes.

Qué quiero hacer yo? Pues quiero que desde la ISR se haga un salto incondicional a un bucle infinito del que solo se pueda salir a causa otra vez de interrupción. Entonces esta cosa que os parecerá tonta es nueva para mi y me surgen las dudas:

- Si no uso RETFIE (porque el final de la rutina de interrupción será un GOTO y no un RETFIE) tengo que hacer algo con el valor de la pila que se ha guardado allí? Qué hago? No domino mucho lo de trabajar con la pila.

- Creo que RETFIE (en el caso de los PICs) aparte de cargar el PC con el antiguo valor, también hace otras cosas como desinhibir las interrupciones. Supongo que todo eso lo tengo que hacer yo manual, no? Qué debería hacer para dejar todo como RETFIE sin usar RETFIE

En fin, espero haberme sabido explicar. Para más información estoy ahora con un PIC 18F14K50

Espero no haber hecho el ridículo! ;-)

Un saludo a todos!
Xavi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder