マクロ定義 | 関数 | 変数

C:/PIC/OpenSSM/libdac.h

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

マクロ定義

#define DAC_STDPWM

関数

void DAC_init (void)
void DAC_setvalue (unsigned char buf)

変数

unsigned char dac

マクロ定義

#define DAC_STDPWM

libdac.h27 行で定義されています。


関数

void DAC_init ( void   ) 

libdac.c47 行で定義されています。

参照先 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  ) 

libdac.c88 行で定義されています。

参照先 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

libdac.c36 行で定義されています。

参照元 DAC_init(), と DAC_setvalue().