Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Interrupciones con mplab C18


       



#1  Interrupciones con mplab C18
inwe
Ubicación: España
Registrado: 13 Jul 2008
Mensajes: 1
citar
hola buenas, tengo que hacer un programilla usando dos interrupciones, una del timer y otra por cambio de estado en un pin. He estado mirando y visto que hay dos tipos de interrupciones las de alta y baja prioridad, las de baja solo guardan el pc y las de alta guardan todo el contexto (pc, wreg, bsr, status) y mi duda es cuando se usa cada tipo. Tambien tengo dudas en como asignar prioridad teniendo varias interrupciones y como programar la rutina de servicio, si hay que programar varias o dentro de la misma mediante if comprobar los flags y atendiendo la que se ha producido
Rolling Eyes

#2  
Ardogan
Ubicación: Argentina
Registrado: 19 Ago 2006
Mensajes: 471
citar
Exactamente, tenés que testear los flags de interrupción (xxxIF) para ver cual interrupción es la que se activó.
No quiero dejar de hacer la distinción entre prioridad y cantidad de rutinas de interrupción. La prioridad simplemente establece que interrupción se atiende primero, lo que no está relacionado con cuántas rutinas de interrupción disponibles hay.
La cantidad de rutinas de interrupción viene dada por el vector de interrupciones, que en este caso es de tamaño 2.
En pics de gama alta hay más niveles de prioridad y se escriben rutinas de interrupción por separado para cada módulo (SPI, IC, OC, CN, UART, CAN, Timers, etc).

Las recomendaciones para escribir rutinas de interrupción son a grandes rasgos: que no sean grandes porciones de código, usarlas para escribir algún dato o setear algún flag que sea chequeado por el programa principal, tener cuidado de guardar y recuperar los registros que uno usa (si usas el C18 el compilador se encarga), recuerda declarar como "volatile" los registros SFR que use la interrupción, y no hay mucho más que eso.

Cuando usar uno u otro tipo... bueno, en mi corta experiencia he usado algunos pines para detectar fallas de periféricos, a eso le puse alta prioridad.
Después hay que analizar cada cuanto tiempo se producen las interrupciones y cuanto se tarda en atenderlas, y que tan prioritario es atenderlas.

Por ahí si ponés tus fuentes de interrupción y sus características sería interesante debatir cuál debería tener alta prioridad y cual baja en este tema.

Saludos

 Responder



 Otros temas de interés 
No hay mensajes nuevos Detectar cambio de estado (VB)
No hay mensajes nuevos Estado inicial de 555
No hay mensajes nuevos Aumentar potencia en bobina tesla de estado solido
No hay mensajes nuevos amplificador para electromiografo
No hay mensajes nuevos Diseño de un relé de estado solido DC

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||
Contacto | Acerca de | Ayuda | Normas de la Comunidad | Privacidad | Mapa de los foros
© Foros de Electrónica - Comunidad Internacional de Electrónicos