msp430F149 用DA转换模块输出正弦波,为什么频率上不去,附有程序,求大神指教

2019-03-24 13:04发布

这是我的主函数,想产生1000HZ的正弦波,为什么频率调不上去,求指教
void main(void)
  {
      
    WDTCTL=WDTPW+WDTHOLD;// 禁止看门狗定时器
  // 设置系统时钟,使用外接晶振 :8MHz,使单片机的时钟源设为 XT2//
   BCSCTL1 &=~XT2OFF;//首先打开外部晶体振荡器。也就是XT2OFF清零。
  do
  { IFG1 &=~OFIFG;//清除晶体振荡器失效标志OFIFG
  for(i=0xFF;i>0;i--);  //等待50us等待晶体振荡器正常工作
  }
  while((IFG1 & OFIFG)!=0);//等OFIFG等于0的时候结束,说明晶体振荡器正常工作了
   BCSCTL2=SELM_2+SELS;                 //选择MCLK、SMCLK为XT2
  //初始化端口//
     P6DIR |= BIT2;P6OUT |= BIT2;  //关闭电平转换
   
    Set_IO();                   //设置IIC端口
   P1DIR|=BIT0+BIT1;
  //设置Timer_a//
  TACTL =TASSEL1+TACLR;// 选择SMLK为时钟,定时器清除
  //TACTL |=TASSEL1+TACLR;// 选择SMLK为时钟,定时器清除
  CCTL0=CCIE;
  TACCR0=32;
  _EINT(); //中断允许
  TACTL |=MC0;//选择up,16位模式
   }
     //Timer_A中断服务子程序
     #pragma vector=TIMERA0_VECTOR
     __interrupt void Timer_A(void)
{
         
          SampleTimes=(SampleTimes+1)%100;
          DAC_Val=SinTable[SampleTimes];     

          Write_DAC(DAC_Val);            //写入DAC   
           

} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
sjunbasketball
1楼-- · 2019-03-24 19:11
 精彩回答 2  元偷偷看……
cuice15
2楼-- · 2019-03-24 22:50
< :TI_MSP430_内容页_SA7 --> 先谢谢你!我是个初学者,用的149的开发板,上面有DA转换模块,芯片是DAC5571。我算了一遍,把程序里的延迟和DAC5571的更新速度都算上,得出32个数据的最大才能产生160HZ的正弦波,应该是我算错了吧?可不可以再帮我想想,再次谢谢!

一周热门 更多>

相关问题

    相关文章