IR decoder

9 Anni 1 Settimana fa #1 da Claudio_F
IR decoder è stato creato da Claudio_F
Su Internet ho trovato molti esempi su come realizzare un decodificatore di telecomandi IR, ma il software non sempre è chiaro e spesso in assembler, c'è qualche esempio con la scheda Freedom II

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Claudio_F
  • Premium Member
  • Premium Member
Di più
9 Anni 1 Settimana fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic IR decoder
Salve Claudio,

un progetto che puoi usare con Freedom II lo trovi nel seguente articolo .

Lo devi ricompilare con il PIC che vuoi usare.

Saluti,

Mauro
Ringraziano per il messaggio: Claudio_F

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
9 Anni 5 giorni fa #3 da Claudio_F
Risposta da Claudio_F al topic IR decoder
Ho letto l'articolo "UP0004-IT_Ricevitore_IR_ad_autoapprendimento" e naturalmente funziona, ma preferirei non avere il limite di 4 canali e usare l'ingresso CCP. Essendo completamente a digiuno sull'argomento ho seguito l'esempio a pag. 453 del tuo libro XC8 Step by Step. Con alcune modifiche ho buttato giù il listato che allego. ci sono alcuni punti che non vanno:
1) benche i valori letti dell'ampiezza degli impulsi siano corretti (vedi tabella allegata) poi la routine del display mostra sempre tutti 0.
2) una volta mostrati i valori dovrebbe ripredisporsi a leggere un nuovo codice. Suggerimenti? Grazie!
Allegati:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Claudio_F
  • Premium Member
  • Premium Member
Di più
9 Anni 3 giorni fa #4 da fer_ver
Risposta da fer_ver al topic IR decoder
Ciao Claudio_F,
condivido la tua scelta di utilizzare il modulo CCP, quando ho realizzato il ricevitore IR ad autoapprendimento, Mauro non aveva ancora scritto XC8 step by step e non ero a conoscenza della potenzialità e programmazione di tale modulo.

Credo che leggi tutti 0 perché nell' istruzione:

if(step[conta]<<0x0300){ //800 dec

hai utilizzato due << anziché uno solo.

Inoltre aggiungerei alla fine dell'istruzione
for (conta = 12; conta > 0; conta--) {
....
.....
}
il seguente codice:

delay_ms(1000);
// Imposto la modalita' Capture sul fronte di discesa
CCP1CONbits.CCP1M0 = 0;
CCP1CONbits.CCP1M1 = 0;
CCP1CONbits.CCP1M2 = 1;
CCP1CONbits.CCP1M3 = 0;
edge = FALLING_EDGE;

in modo da fermare per un secondo il display e permettere una nuova lettura.

Tienici aggiornati ;)

Ciao Renato

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • fer_ver
  • Avatar di fer_ver
  • Premium Member
  • Premium Member
Di più
9 Anni 1 Giorno fa #5 da Claudio_F
Risposta da Claudio_F al topic IR decoder
Grazie Renato, il suggerimento era corretto, ora esegue correttamente la lettura(allego il sorgente corretto) resta qualche problema nel prepararsi ad una nuova lettura dopo la decodifica, ma probabilmente devo inizializzare qualche variabile. Lo step successivo sarà quello di verificare se invece di 12bits ne vengono trasmessi 15 o 20, che sono gli altri due formati del protocollo Sony. Utilizzo questo protocollo perché a casa ho tutto Sony, era una mia fissa.
Ti metterò al corrente degli ulteriori sviluppi.

Approfitto per segnalare una piccola svista sul libro XC8_step_by_step. A pagina 455 nell'esempio sull'uso del CCP, ci sono queste due linee:

// Disabilito l'interrupt globale
INTCONbits.GIE = 1;

chiaramente è = 0. Me ne sono accorto perché se premevo i tasti sul telecomando il display continuava ad aggiornarsi.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Claudio_F
  • Premium Member
  • Premium Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login