Estoi trasteando con el protocolo RC5 de philips pero no consigo que ande. E probado con un compatible a los TSOP17xx, creo que se llama TFMS5300 -
http://www.alldatasheet.com/datasheet-pdf/pdf/TEMIC/TFMS5300.html - (demodula a 30 khz pero ese no es el problema creo por que le llega la señal), y luego con un IS1U61 -
http://www.alldatasheet.com/datasheet-pdf/view/SHARP/IS1U621.html - que este si es ya para 38khz (como los TV, creo ...). Y este código que encontre y modifique para ver en el LCD en vez de el terminal de Win por rs232:
//***************************************************
// CCS Compiler
// Receptor IR (código RC5 de Philips)
//
// Autor : HEILIG Yves ; Editado por RaDoN
//***************************************************
#include "16F877.h"
#fuses XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)
// #use rs232(baud=115200, xmit=PIN_B6, rcv=PIN_B7)
#define REC_IR PIN_B6 // Entrada TSOPxxxx
#include "Dani_LCD.h"
#ORG 0x1F00,0x1FFF {} //for the 8k 16F876/7
//**********************
// Programa Principal
//**********************
main() {
int1 bit;
int i, nbit, error;
byte buffer[2];
lcd_init();
printf(lcd_putc,"fReceptor IR: PHILIPS
"
;
while(TRUE)
{
buffer[0]=0;
buffer[1]=0;
error=0;
nbit=0;
i=0;
while( i++ != 4)
{ // Test si REC_IR au repos prolongé
if(REC_IR == 0) i=0;
delay_us (889);
}
while(input(REC_IR)==1); // Atiende el el bit START
delay_us(444); // se posiciona al medio
while((nbit++ != 13) && (error == 0))
{
delay_us (889);
if(input(REC_IR)==0)
{
delay_us (889);
if(input(REC_IR) != 1) error=1;
bit=0; // es un 0
}
else
{
delay_us(889);
if (input(REC_IR) != 0) error=1;
bit=1;
}
shift_left(buffer,2,bit); // et on le pousse dans le buffer
}
if(error) printf(lcd_putc,"fError
"
;
else
{
printf(lcd_putc,"%x %x Pulso %d
",buffer[1],buffer[0],buffer[0]);
}
}
}
P.D: tb he probado con varios mandos a distancia