Hola, ¿me pueden dar alguna idea de cómo encararlo y particularmente la detección de interrupciones por flanco?. Gracias.
Hola Rosana,
Yo de nuevo :-). Me parece que no tenes que preocuparte por el tema de los flancos porque ya tu hardware se encarga de generarte la interrupción flanco().
Vos al implementar la rutina ya estás trabajando por flancos. A mi lo que se me ocurrió es llevar un contador de tiempo y en flanco me pregunto cuanto tiempo pasó desde la última interrupción. Como se dispara en el flanco de subida, solo es invocada con un nuevo "dígito". Lo único que no me queda claro es cuanto se supone que dura en 0 luego de un dato. Lo que hice con eso es tomar que es un pulso de bajada y así no pierdo tiempo entre datos, pero eso fue una conjetura para facilitar.
Otra cosa que facilita mucho es usar un byte como registro y vas haciendole shift a la derecha a los datos a medida que entra, así te quedas con los últimos 8 siempre y si te faltan, tenes ceros (porque luego de un M inicializo el registro nuevamente)
Espero que ayude. De nuevo, se agradecen comentarios :-)
Yo de nuevo :-). Me parece que no tenes que preocuparte por el tema de los flancos porque ya tu hardware se encarga de generarte la interrupción flanco().
Vos al implementar la rutina ya estás trabajando por flancos. A mi lo que se me ocurrió es llevar un contador de tiempo y en flanco me pregunto cuanto tiempo pasó desde la última interrupción. Como se dispara en el flanco de subida, solo es invocada con un nuevo "dígito". Lo único que no me queda claro es cuanto se supone que dura en 0 luego de un dato. Lo que hice con eso es tomar que es un pulso de bajada y así no pierdo tiempo entre datos, pero eso fue una conjetura para facilitar.
Otra cosa que facilita mucho es usar un byte como registro y vas haciendole shift a la derecha a los datos a medida que entra, así te quedas con los últimos 8 siempre y si te faltan, tenes ceros (porque luego de un M inicializo el registro nuevamente)
Espero que ayude. De nuevo, se agradecen comentarios :-)