
マクロ定義 | |
| #define | DAC_STDPWM |
関数 | |
| void | DAC_init (void) |
| void | DAC_setvalue (unsigned char buf) |
変数 | |
| unsigned char | dac |
| void DAC_init | ( | void | ) |
参照先 dac, と DAC_setvalue().
参照元 main().
{
dac = 0;
#if defined(DAC_STANDARD)
/* 内蔵 4bit DAC : 精度が悪くて、思ったよりも全然使い物にならない... */
CVRCON = 0b0000000011100000;
#elif defined(DAC_PWM)
/* PWMを想定して回路を設計していなかったので、出力が非線形すぎて使い物にならない (^^; */
OC5CON = 0b0000000000000110;
RPOR7bits.RP14R = 22;
#elif defined(DAC_STDPWM)
/* 内蔵 4bit DACを使って、PWM風に精度を拡張してみる... (^^;;; */
CVRCON = 0b0000000011100000;
/* Timer2に寄生する */
OC4R = 0x0001;
OC4CON = 0b0000000000000001;
IPC6bits.OC4IP = 5;
IEC1bits.OC4IE = 1;
IFS1bits.OC4IF = 0;
OC5R = PR2 >> 1; /* 50% Duty */
OC5CON = 0b0000000000000001;
IPC10bits.OC5IP = 5;
IEC2bits.OC5IE = 1;
IFS2bits.OC5IF = 0;
#endif
DAC_setvalue(0x80);
return;
}


| void DAC_setvalue | ( | unsigned char | buf | ) |
参照先 dac.
参照元 DAC_init(), と EXTMETER_main().
{
dac = buf;
#if defined(DAC_STANDARD)
CVRCONbits.CVR = dac >> 4;
#elif defined(DAC_PWM)
OC5RS = (long)((long)dac * (long)PR2) >> 8;
#elif defined(DAC_STDPWM)
OC5R = (((dac & 0x0f) * PR2) >> 4) + 2;
#endif
return;
}

| unsigned char dac |
参照元 DAC_init(), と DAC_setvalue().
1.7.1