#include <p24FJ64GA002.h>
#include "types.h"
#include "librtc.h"
#include "libdac.h"
関数 | |
void | DAC_init (void) |
void | DAC_setvalue (unsigned char buf) |
void | __attribute__ ((interrupt, auto_psv)) |
変数 | |
unsigned char | dac = 0 |
void __attribute__ | ( | (interrupt, auto_psv) | ) |
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 = 0 |
参照元 DAC_init(), と DAC_setvalue().