Intentando decodificar datos seriales (codificados usando un método patentado) desde un módulo de RF.
Habiendo alternado entre muestreo rápido (4x el más rápido) y últimamente un método basado en interrupciones, he llegado a un punto muerto y no estoy seguro de lo que estoy haciendo mal, porque aparentemente las personas han tenido éxito en la decodificación de datos de RF de banda ISM (Manchester, NRZ , VirtualWire y HT12E / PT2260-62 codificado), en software.
En mi caso, el AGC de los módulos de RF (que no tengo idea de cómo apagar, ya que no hay hoja de datos, y la compañía no responde a los correos electrónicos ... una marca barata del este de Asia) capta el ruido y tiene las transiciones de nivel más rápidas en duraciones ~ 40us, aunque las transiciones válidas (datos codificados) no son menores que 400us. Mi ISR tiene la tarea elemental de medir la duración del último estado para rechazar el ruido no esencial y guardar solo las transiciones que podrían ser parte de los datos codificados. Hasta ahora, no he usado una cola circular (que es lo que planeo como el siguiente paso), pero antes de hacer eso, hice un pequeño experimento. En el ISR compruebo el estado de una bandera para ver si es verdadera, y si es verdad, hago Serial.print ("x"), de lo contrario, la configuro como verdadera. En el bucle (), compruebo si el indicador es verdadero, luego hago Serial.print ("-") y lo configuro como falso. La bandera se declara volátil. Encuentro que tengo flujos continuos muy largos de "x" s y muy raros "-". Mi ISR se está activando en cada transición del pin-2 (es decir, la interrupción externa # 0).
Ahora mi pregunta es, si agregar una cola realmente solucionaría mi problema, porque aparentemente el ISR se está ejecutando con demasiada frecuencia y por lo tanto está matando a mi ciclo () de ciclos. Al contar la distancia entre la "x" y "-", esperaba encontrar la longitud de cola ideal, pero no puedo encontrar un patrón. ¿Hay algo intrínsecamente incorrecto en mi enfoque?
Aquí encontrará un resumen del código fuente .