Hola de nuevo amigos foreros, les vengo a compartir mis problemas con una libreria que me encuentro armando, para el uso de un teclado PS2 con PIC, el código en su mayoria ha sido desarrollado por otra persona, pero lo que yo quiero es convertirlo en una librería que se pueda añadir a cualquier programa, solo que se me han presentado un para de dudas que espero alguien me pueda aclarar.
Esta librería necesita el uso de la interrupción externa por RB0, y llega un momento en el que después de leer 11 bits, debe acceder a las tablas de decodificación para determinar que tecla se oprimio, bien, de por si esta interrupción es bastante larga, y para la decodificación se debe llamar a una función llamada decode(); lo cuál me genera un warnning debido a la llamada de una función dentro de la rutina de interrupción. Lo que normalmente hago dentro de una interrupción es activar una bandera, y en la función main() hago lo que se deba hacer, pero en este caso no puedo hacer eso, debido a que en la libreria no existe el main()
Una solución a simple vista, es que el usuario chequee esa bandera desde su main() y mande entonces a la función decode(), pero esta solución no es viable, ya que perdería el sentido manejar una libreria independiente. Otra sería meter todo el código dentro de la interrupción, pero dicha interrupción quedaría extremadamente grande y se tardaría muchísimo en atender.
La pregunta es: Sabe alguien como puedo saltar a esa función desde mi interrupción conservando la independencia de mi libreria?, se que suena imposible, pero no pierdo la esperanza.
Agradezco a toda la gente que pueda proporcionarme conocimiento nuevo y respuesta a mi pregunta. Gracias!!!