Hola compañeros, estoy tratando de recepcionar los datos de un receptor infrarrojo utilizando el pic12f629.
Para lograr recepcionar los datos utilizo interrupciones externas y el timer0 (el timer0 esta configurado con un prescaler de 128, con flanco de bajada y utilizo un resonador ceramico de 4Mhz).
El receptor IR cumple con la norma NEC 32. Mediante un osciloscopio, determine que el bit start tiene un periodo de 13,2 mseg aprox, el cero logico 1,12mseg aprox y el uno lógico 2,1 mseg aprox.
Los datos que envia el IR son de la siguiente forma:
BIT-START + 00000000 11111111 xxxxxxxx xxxxxxxx (x: depende del dato).
El bit start lo recepciono deforma precisa (no tengo problemas con el),el problema radica con los bit siguientes (lo se por que el timer0 cuenta 103 veces.....en tiempo seria 103*128*10^-6 = 13,18 mseg casi 13,2 mseg que predice el osciloscopio).
Para determinar el 0 logico el timer cuenta 8 veces (este valor se lo he pedido al pic y siempre me da el numero 8..........8*128*10^-6 = 1,02 mseg ...lo cual estaría dentro del valor de la norma).
Segun calculo el 1 lógico el timer debiera contar hasta 17 o 18 veces.
Como dije el bit start lo recepciono bien

Cuando le pido que me envié los 8 bits siguientes que debieran ser 00000000 me entrega 00001111

Lo que he hecho es pedirle los tiempos de esos 8 bit y siempre me entrega que los ceros el timer cuenta hasta 8 y los 1 hasta 17.
Realmente no se lo que pasa (he leido el datasheet muchas veces)......lo que he pensado es lo siguiente:
1.- no esta tomando bien las interrupciones.
2.- quizás no alcanza hacer la rutina de comparación en el tiempo antes de una nueva interrupción (esto no creo mucho que pueda ser ya que al simular, y exagerando la frecuencia de los datos, le sobra tiempo al pic

.......las instrucciones las cumple en 1useg y a lo mas son 15 lineas de procedimiento...asi que no creo mucho que sea esto ).
3.- quizás sea el resonador

Realmente no se que pueda ser.
El programa lo hice en assembler y simulado me funciona bien pero en la realidad no.
Cualquier ayuda me seria de utilidad.
Saludos!!