MSP430G2553 Cómo guardar las señales IR recibidas

0

Estoy intentando guardar una señal recibida de mi receptor IR TSOP4838 . Configuré Timer0_A0 para que interrumpa cada borde (cayendo y subiendo). Lo que estoy tratando de hacer ahora es guardar el Tiempo y el estado (bajo / alto) de un estado (medio período) de la señal.

Para este propósito, creé una estructura que produce la duración y el tipo (Alto / Bajo). Pero parece que hay algo mal con mi código, porque cuando envío la señal a mi osciloscopio se ve completamente diferente (ver capturas de pantalla). Simplemente no puedo entender lo que está mal. FRAME_LENGTH se define como 35 (¿Cómo sé el tamaño de fotograma cuando quiero poder recibir todos los Protocolos que tienen diferentes longitudes de fotograma, verdad?)

        #pragma vector = TIMER0_A0_VECTOR
        __interrupt void Timer0_A0 (void)
        {

            if(edgeCount == 0){
                edgeCount++;
                TAR = 0;
            }else if(edgeCount == 1){
                rxData[pulseCount].duration = TACCR0;
                TAR = 0;
                if(P1IN & IR_Recv){
                    rxData[pulseCount].type = LOW_TYPE;
                }else{
                    rxData[pulseCount].type = HIGH_TYPE;
                }
                pulseCount++;
            }
            //Frame end received at [FRAME_LENGTH] -> stop timer
            if(pulseCount == FRAME_LENGTH){
                TAR = 0;
                Stop_Receive_PWM;
            }else{
                //Turn off cpu
                __bic_SR_register_on_exit (CPUOFF);
            }
        }

Señal original capturada con TSOP4838:

Salidadelaseñal(ALTAyamoduladaa38KHz)

Hazme saber si necesitas más detalles.

    
pregunta Bauer Marius

0 respuestas

Lea otras preguntas en las etiquetas