TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: pfc_18f4550 en 03 de Septiembre de 2012, 05:42:15
-
Hola buenos días,
Estoy empezando a familiarizarme con los PIC's, llevo unos días estudiando el micro y ahora he empezado a hacer pruebas. He configurado el timer 0 y su interrupción. Tengo 1 problema-duda, yo declaro un volatile unsigned char flag_1ms, que lo pongo a uno en la interrupción, vuelvo a cargar el registro al timer y limpio el flag de interrupción. En el programa principar hago que uno de los ports cambie de estado cada vez que se cumple el flag_1ms que activa la interrupción, hasta aquí todo bien(todo esto en el main).
Si quito el while 1 del main y lo pongo dentro de una función que llama el main, pongo el mismo código quitado del main. La variable flag_1ms me da error y no se como la tengo que declarar para poderla llamar desde cualquier .c y que sea compatible con la interrup.
gracias por vuestra ayuda. :o
-
para declararla de otro .c distinto tienes que poner extern volatile unsigned char flag_1ms;
-
Hola de nuevo,
Ya he resuelto la duda, he encontrado un post en el foro de hace un tiempo en el cual esta explicado muy bien.
El problema esta en que en el main lo tenia que declarar como volatile unsigned char (declararla como global).
En mi otro archivo del programa lo he tenido que declarar como extern volatile unsigned char y me compila sin errores. Ahora se me plantea una pregunta que seguramente la respuesta sea fácil da igual el orden?
Es lo mismo poner extern volatile que volatile extern??
gracias a micro_cadaver por la aclaración en el post donde he encontrado la respuesta.
Un saludo y gracias
-
Muchas gracias MerLiNz, justo cuando estaba publicando como lo he podido solucionar he visto tu respuesta.
Muchas gracias :o
-
Si, es lo mismo, creo que si pones tambien char unsigned tambien es lo mismo que unsigned char.