NEC IR Protokoll megvalósítása PIC-el
Sok projektben használok infra vevőt, így ideje volt elkészíteni egy saját adót is. A protokoll leírása megtalálható ebben a cikkben. A adatfolyam a PIC24EP családban található Output Compare modul segítségével egyszerűen előálítható, ezt szeretném most röviden bemutatni.
Output Compare modul
PWM jelek és impulzusok előállítására a legegyszerűbb mód a PIC OC modulját felhasználni. 35Mhz-es órajel esetén a 38kHz-es vivő előállításához a konfiguráció:
#define RP_OC1 0b010000
#define FCY 35000000LL
#define OC_DIVISOR FCY/38000
#define DUTY_CYCLE OC_DIVISOR/2
void Init_PWM()
{
RPOR2bits.RP39R = RP_OC1; //Kimenet az RP39/RB7 lábon
OC1CON1bits.OCTSEL = 0b111; //FCY az órajel forrása
OC1CON2bits.SYNCSEL = 0b11111; //Nincs szinkornizálás és trigger
OC1RS = OC_DIVISOR; //38kHz-hez az osztó
OC1R = 0; //0% kitöltés, ilyenkor nincs kel a kimeneten
OC1CON1bits.OCM = 0b110; //OC mód beállítása: PWM mód
}
void PWMOn()
{
OC1R = DUTY_CYCLE;
}
void PWMOff()
{
OC1R = 0;
}
Egy gombhoz tartozó jelsorozat küldéséhez a függvény:
void SendIRCode(long Code)
{
PWMOn();
__delay_us(9000);
PWMOff();
__delay_us(4500);
int i;
for(i = 0; i< 32; i++)
{
if(Code & GetMask(i))
{
PWMOn();
__delay_us(562);
PWMOff();
__delay_us(1685);
}
else
{
PWMOn();
__delay_us(562);
PWMOff();
__delay_us(562);
}
}
}
Facebook Comments