/********************************************************************
Author : ADI - Apps www.analog.com/MicroConverter
Date : Sept. 2005
File : DACsine.c
Hardware : Applicable to ADuC702x rev H or I silicon
Currently targetting ADuC7026.
Description : DAC outputs a sine wave on pin 10 (DAC1). S1.8 must be off
DAC is updated with core clock frequency 45MHz.
********************************************************************/
#include<ADuC7026.h>
void sys_clk_init(void)
{
PLLKEY1=0xAA;
PLLCON=0x11; //PLL配置
PLLKEY2=0x55;
POWKEY1=0x01;
POWCON=0x00; //CPU时钟配置为41.78MHz
POWKEY2=0xF4;
// while(!(PLLSTA & 0x01));
}
int main (void) {
// Table is placed in Flash/EE
const static unsigned short TableS[64] = {
0x07FF, 0x08C8, 0x098E, 0x0A51, 0x0B0F, 0x0BC4, 0x0C71, 0x0D12,
0x0DA7, 0x0E2E, 0x0EA5, 0x0F0D, 0x0F63, 0x0FA6, 0x0FD7, 0x0FF5,
0x0FFF, 0x0FF5, 0x0FD7, 0x0FA6, 0x0F63, 0x0F0D, 0x0EA5, 0x0E2E,
0x0DA7, 0x0D12, 0x0C71, 0x0BC4, 0x0B0F, 0x0A51, 0x098E, 0x08C8,
0x07FF, 0x0736, 0x0670, 0x05AD, 0x04EF, 0x043A, 0x038D, 0x02EC,
0x0257, 0x01D0, 0x0159, 0x00F1, 0x009B, 0x0058, 0x0027, 0x0009,
0x0000, 0x0009, 0x0027, 0x0058, 0x009B, 0x00F1, 0x0159, 0x01D0,
0x0257, 0x02EC, 0x038D, 0x043A, 0x04EF, 0x05AD, 0x0670, 0x0736
};
int i = 0;
sys_clk_init();
// DAC configuration
DAC1CON = 0x13; // DAC configuration
// range AVdd/AGND
// DAC1 is updated with falling edge of core clock
DAC1DAT = 0x08000000; // start from midscale
while(1){
DAC1DAT = (TableS[i] << 16);
i++;
i &= 0x03f;
}
return (0);
}