La parte que lee la trama de datos es esta:
while(input(REC_IR)==1); // Espera al 1er bit de START (flanco de bajada)
delay_us(8400);//Saltamos el
delay_us(4200);//bit de inicio.
delay_us(263);//Nos situamos a la mitad del primer nivel del primer bit.
while((nbit++ != 16) && (state == 0)){
// 8 bits DIR + 8 bits COMANDO.
// nbit varía de 0 a 15 = 16 bits
if(input(REC_IR)==0){//Todos los bit empizan por 0 (invertido).
delay_us (526);//Sobrepasamos la mitad del primer nivel.
if(input(REC_IR) != 1)//Si no es un 1, no es codigo Samsumg.
state=1;
delay_us (526);//Si sigue siendo un 1, es un 1, sino es un 0.
if(input(REC_IR)==0){
bit=0;//Es un cero.
}else{
bit=1;//Es un uno
delay_us(1048);//Sobrepasamos el nivel alto (invertido) del 1.
if(input(REC_IR) != 0)
state=1;
}
}else{
state=1;//No es codigo JVC.
}
shift_left(data,2,bit);// 2·8=16bits, bit=0 ó 1
}
Sucede que si acorto el numero de bits a 10, me funciona el programa con algunas teclas del mando.
No encuentro forma de ver la trama que me envia el mando, en el osciloscopio analogico que tengo no se ve bien, y no tengo un analizador logico.
Estoy usando un mando universal, quizas la trama no sea igual a la original...
Un saludo.