Newsgroup: it.hobby.elettronica.digitale
Titolo: Re: Aiuto per decodifica protocollo IR condizionatore comfee

  ho registrato alcune forme d'onda del telecomando del condizionatore
 
 
http://it.tinypic.com/r/fbepso/8
 
 
  se servono piu' dettagli posso fornirli, comunque tra l'una e l'altra ci sono sempre solo una differenza (maggiore temperatura, maggiore velocita ventola o
  acceso/spento).
 
  Avete idea almeno della modulazione e del numero di bit complessivi trasmessi ?
 
  Alla più brutta programmerò il pic per riprodurre quelle tre o 4 forme d'onda che mi servono...
 
  Giulia
 
 


 
ho buttato giu questo codice :
IRSend() viene chiamata via interrupt(tick) ogni 528uS circa(ritoccabile con il valore di preload del timer).
 
IRStatus e' un contatore che gestisce i vari stati della trasmissione (0 = nessuna trasmissione da effettuare)
IRSendbuff e' un array di 48 char (uno per ogni bit) il valore di ogni singolo char e' il numero di tick della durata del segnale basso(1 per bit=0, 3 per bit = 1).
 
 
All'analyzer la forma d'onda sembra quella presa con l'oscilloscopio.
Certo se riuscissi a decodificare il significato dei bit e non solo a riprodurlo.
 
void IRSend(){
     if (!IRStatus){ //IRBuffer e' stato caricato? Se si IRStatus = 1
         GP4=0;
         return;
     }
     if (IRStatus < STARTTICKS){ // Impulso di Start di lunghezza n volte interrupt
             GP4=1;
             IRStatus++;
             return;
     }
     if (IRStatus >= STARTTICKS & IRStatus <= (STARTTICKS*2) ){ //Pausa di lunghezza equivalente a start.
             GP4=0;
             IRStatus++;
             return;
     }
     if (IRStatus == (STARTTICKS*2+1)){  //Fronte salita Primo Bit
             GP4=1;
             IRStatus++;
             return;
     }
     if ((IRStatus >= (STARTTICKS*2+1)) & (IRStatus <= (STARTTICKS*2+1+48))){  // 48 bit successivi + Bit finale.
             if(IRSendBuff[IRStatus-(STARTTICKS*2+2)] == 0){
                 GP4=1;
                 IRStatus++;
                 return;
             }
             GP4=0;
             IRSendBuff[IRStatus-(STARTTICKS*2+2)]--;
             return;
     }
     if (IRStatus == (STARTTICKS*2+1+48+1)){ //Chiusura con reset del counter IRStatus.
             GP4=0;
             IRStatus=0;
             return;
     }
 
 
     }

 >>>>>>  Cercati il sito di "ocsan"  e' un polacco (mi pare) che ha
inventato un lettore di codici IR per telecomando, ed ha un bel link che
spiegano la teoria dei vari protocolli piu usati
il tuo sembra un "protocollo" NEC  prova a contare i bit se sono 8+8  e 8+8
salut
 
 

 il tuo sembra un "protocollo" NEC  prova a contare i bit se sono 8+8  e 8+8
 
Mi hai dato troppe poche indicazioni puoi essere piu' preciso ?
 
Comunque ho decodificato i protocollo, sono 6 byte , con coppie una complementare alla altra
quindi 3 byte utili.
 
l'unita di conto sono circa 512 uS  4Mhz/128
 
1 unita per lo zero 3 unita per l'uno precedute da un impulso di un unita'.
 
Il condizionatore si accende correttamente.
 
Giulia
 
 

>>> trasmette in formato "Manchester"
saluti 
 
 

>>>   Eccolo qua:     
http://www.ostan.cz/IR_protocol_analyzer/
 
saluti 
 
 

 >>>>>  Una volta letto il sito, installato il programma, e costruito il
sensore, ci dici come viene riconosciuto il tuo telecomando?
grazie
 
 

>>>> "chip" originali e
 
Che sono loro stessi dei microcontrollori (la prima cosa che ho fatto e' scaricare il datasheet)!!
 
 
Giulia

>>>> a quali ti riferisci ?
se ti riferisci al TDA3010 e famiglia quella e' "logica cablata"
per micro si intende un codice che corre a muovere registri e cosette vaie