| 
 
| 最近刚刚开始接触430,因为对时钟频率要求较高,所以就选用了5438;初步目的是产生一正弦波,采用查表法,八位数据输出至DAC908进行数模转换,然后DAC908连OPA690进行电压转换;DAC908的时钟信号采用5438的主时钟,5438主时钟为外部XT2 25M晶振,现在有几个问题:1、这样的设计合理不合理,选用这三个芯片,特别是DAC908;2、编程后发现主时钟信号从P11.1输出,但是波形不是方波,但是频率是对的,能不能直接接到DAC908的时钟端;3、现在的情况是在OPA690输出测不到波形。程序如下,请大家看看有什么问题吗,万分感谢。 定时器采用增计数模式,到达设定值进中断取数据。
 #include "msp430f5438a.h"
 unsigned char SCRFaVolt[250]={};   //数据略
 int i=0;
 //函数Init_Clk(void)
 //功能:初始化主时钟,MCLK=XT2,SMCLK=XT2
 void Int_CLK (void)
 {
 WDTCTL = WDTPW + WDTHOLD;  // 关看门狗
 P5SEL |= BIT2+BIT3;  //端口功能选择晶振
 UCSCTL6 &= ~XT2OFF;  //使能晶体振荡器
 UCSCTL3 |= SELREF_2;  //FLLREF=REFO
 UCSCTL4 |= SELA_2;  //ACLK=REFOCLK,MCLK和SMCLK默认为DCO
 do
 {
 UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // 清除 XT2,XT1,DCO 错误标志
 SFRIFG1 &= ~OFIFG;                                     ;
 }
 while(SFRIFG1&OFIFG)                                   ; // 检测振荡器错误标志
 UCSCTL6 |= XT2DRIVE_3;  //XT2驱动模式最高
 UCSCTL4 |= SELS_5+SELM_5;  //MCLK和SMCLK时钟源为XT2;
 P11SEL |= BIT1;
 P11DIR |= BIT1;
 }
 //函数Init_TimerA0(void)
 //功能:初始化定时器A0
 void Int_TimerA0 (void)
 {
 TA0CTL |= TACLR;  //Timer_A清零
 TA0CTL |= TASSEL_2;  //Timer_A时钟源为SMCLK;
 TA0CTL |= ID_1;  //分频设为1
 TA0CCR0 = 16000-1;
 TA0CTL |= TAIE;
 TA0CTL |= MC_1;  //计数器为增计数模式
 }
 #pragma vector=TIMER0_A0_VECTOR
 __interrupt void Timer0_A0 (void)
 {
 P6OUT = SCRFaVolt[i];
 i++;
 if(i==250)
 {
 i=0;
 }
 }
 void main(void)
 {
 WDTCTL = WDTPW + WDTHOLD;  //关看门狗
 Int_CLK();
 P5DIR |= BIT4;  // 主电源
 P5OUT |= BIT4;
 P6DIR |= 0xff;
 Int_TimerA0();
 _EINT();
 while(1);
 }
 
 
 
 
 | 
 |