TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: superprp en 06 de Octubre de 2008, 06:00:35
-
En un sistema en el que hay mas de 5 interrupciones y se activan por prioridad, ¿como se hace la gestión para que si estás en una interrupción mas prioritaria y te interrumpe una menos prioriataria (no la atiendes, claro está)?, como hacer para atenderla al acabar la mas prioritaria, o de que forma poder interrumpir a la más prioritaria.
-
Hola.
En que lenguaje de programacion?
-
en c30, pero bueno, no deja de ser c
-
:? No manejo el C30 (no he hecho ningun programa con el), pero en CCS hay una directiva de compilacion que asigna la prioridad de las interrupciones: #priority xxx. De pronto el C30 cuenta con algo similar.
Saludos
-
si, si puedo asignar prioridad a las interrupciones, pero si estoy atendiendo a la mas prioritaria y de repente me interrumpe una menos prioritaria, esa no se atiende, ni se atenderá cuando acabe de ejecutarse el código de la primera interrupción, como puedo solucionar esto?
-
Hola.
Pues no se si se pueda en ese compilador, pero se me ocurre que al entrar en la interrupcion de mayor prioridad se deshabilitan las interrupcion de mayor prioridad y se habilitan las de menor prioridad. Al final de cada funcion de atencion a interrupcion, se deberian habilitar las interrupciones nuevamente.
Me parece logico que si se atiende una interrupcion de alta prioridad se deshabiliten las de baja prioridad. Siempre he sido partidario de demorarme lo menos posible dentro de una interrupcion, de pronto el codigo de la funcion de atencion es demasiado largo y eso hace que tengas esos conflictos.
Saludos
-
no no, el tiempo en el que estoy en una interrupción es apenas 40us, no es mucho la verdad, pero que pasa, que hay mas de 5 interrupciones y éstas interrumpen muy rápido, kizas interrumpen dos cada 1ms aprox., otra cada 5ms, otra entre 500us y 50 ms, y así, entonces al cabo de unos segundos, es posible que si tardas 40us aprox. por cada interrupcion, al tener que atender tantas se te pueda interrumpir una estando en la otra... y todas son igual de prioritarias, aunque yo les de diferente prioridad
-
:shock: :shock: :shock:
Es rapido, claro .....
tocaria gestionar la prioridad por software como te explique antes, de pronto asi pueda funcionar.
Saludos