Prezentarea pe scurt a proiectului:
ATMEGA16(placa de baza):
Receptor IR TSOP1138:
LCD 16*2 alfanumeric
Receptor IR:
Interfata LCD:
Placa de baza:
Descrierea codului aplicaţiei (firmware):
1. Protocolul decodat este protocolul NEC :
a) semnalul primit de la receptor (1 sau 0 logic):
b) portocolul care desmneaza aparatul de la care a venit semnalul (bitii de adresa) si comanda data de acesta (bitii de comanda)
2) functiile folosite pentru decodarea semnalului:
void ResetIR(); in cazul aparitiei unei erori reface starea initiala(sterge orice date primite: adrese comenzi)
void RemoteInit(); activeaza intreruperile, seteaza timer-ul si vectorul pe care se vor primi adrese si comenzi
unsigned char GetRemoteCmd(char wait); dupa executarea unei rutine de tratare a intreruperii (la primirea unei comenzi corecte) se intoarce codul comenzii, altfel se intoarce (RC_NONE)⇒ nu s-a primit nimic sau un char. invalid
3) functiile pentru interfata cu LCD-ul:
void LCDInit(uint8_t style); functia de initializare a modulului LCD: activarea modului pe 4 biti, setarea porturilor I/O. void LCDWriteString(const char *msg); functia ce scrie un sir de caractere.
void LCDWriteInt(int val,unsigned int field_length); functia ce scrie un intreg void LCDGotoXY(uint8_t x,uint8_t y); functia ce plaseaza cursorul pe LCD
Low level:
void LCDByte(uint8_t,uint8_t); functia ce trimite un byte la LCD
#define LCDCmd ( c ) (LCDByte(c,0)) definitii pt a detecta daca byte-ul este comanda sau data
#define LCDData(d) (LCDByte(d,1))
void LCDBusyLoop(); functie ce asteapta ca LCD-ul sa execute oricare functiile de mai sus
arhiva cu soft-ul : soft.zip
Interfata LCD si Receptorul IR (TSOP 1738 nu mai este in stocul magazinelor): using-ir-remote-with-avr-mcus
Programul de la care am pornit pentru decodare: using-ir-remote-with-avr-mcus-part-ii
Protocolul de decodare NEC : nec.htm