在线情况
楼主
  • 头像
  • 级别
    • 积分4
    • 经验49
    • 文章3
    • 注册2011-08-08
    求msp430f2274使用内部AD读取正弦波的例程(付我写的)
    [LINE-HEIGHT=22px][FACE=Helvetica, Arial, sans-serif][SIZE=14px]求msp430f2274使用内部AD读取正弦波的例程,最好能有读取波形然后存储在MEM中再原样输出的例程,谢谢,自己弄了一个星期了没出来[/SIZE][/FACE][/LINE-HEIGHT][P][LINE-HEIGHT=22px][FACE=Helvetica, Arial, sans-serif][SIZE=14px][LINE-HEIGHT=normal]unsigned int ad_value[];

    void delay()
    {
    int i;
    for(i=0;i<10;i++);
    }

    void main( void )
    {
    int i=0;
    char ad=0;
    // char ad_val_temp[100]={0};
    WDTCTL=WDTPW+WDTHOLD; //关看门狗
    BCSCTL1 =CALBC1_16MHZ; //设定DCO为16MHZ
    DCOCTL =CALBC1_16MHZ;
    P2SEL=0x01; //P2.0输入
    P2DIR=0;

    ADC10CTL0&=~ENC;//关闭转换
    ADC10CTL0=REFON+REF2_5V+ADC10SHT_2+ADC10ON; //打开参考,2.5V,启动AD模块
    ADC10CTL1=INCH_0+SHS_1+CONSEQ_2;//选通道0,AD启动信号来源选TA.OUT1,选单通道连续采样
    ADC10CTL1=ADC10SSEL_3+ADC10DIV_0;//时钟源选SMCLK时钟并1分频
    ADC10CTL0|= ENC+ADC10IE; //转换,中断使能

    /*存波形*/
    while(i<100)
    {
    delay();
    ADC10CTL0|=ADC10SC;//开启转换
    while((ADC10BUSY&ADC10IFG)==0)//等待转换完成
    {
    ad_value[i][LINE-HEIGHT=normal]=ADC10MEM;
    i++;
    ADC10CTL0|=ADC10IFG;
    }
    }

    }[/LINE-HEIGHT][/i][/SIZE][/FACE][/LINE-HEIGHT][/LINE-HEIGHT][/P]
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
      • 积分4
      • 经验49
      • 文章3
      • 注册2011-08-08
      [P][FACE=宋体][SIZE=12px]#include <msp430x22x4.h>[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]//unsigned char ad_value[];[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]int k=0;[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]unsigned int ad_temp[200];[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]
      [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]void main()[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]{[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  WDTCTL=WDTPW+WDTHOLD;                   //关看门狗[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  BCSCTL1 =CALBC1_16MHZ;                   //设定DCO为1MHZ[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  DCOCTL  =CALBC1_16MHZ;[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  P2SEL=0x01; //P2.0输入[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  P2DIR=0;[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px] // TACTL=TASSEL_2+MC_0+;//增计数[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  /**********************ADC10*************************/[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  ADC10CTL0 &=~ENC;//关闭转换[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  ADC10CTL0=REFON+REF2_5V+ADC10SHT_2+ADC10ON; //打开参考,2.5V,启动AD模块[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  ADC10CTL1=ADC10SSEL_3+ADC10DIV_1;//时钟源选SMCLK时钟并2分频[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  ADC10CTL1=INCH_0+CONSEQ_2;//选通道0,AD启动信号来源选TA.OUT1,选单通道连续采样[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  ADC10CTL0|= ENC+ADC10IE; //开启转换,中断使能[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px] [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]//********************读波形***********************/[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  while(1)[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  {[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]      _EINT();[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]      ADC10CTL0 |=ADC10SC;[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]      _BIS_SR(LPM0_bits);[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  } [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]} [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]//*********************取波形*********************/[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]  [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]
      [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]#pragma vector= ADC10_VECTOR[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]__interrupt void ADC10ISR(void)[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]{   [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]      [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]     while(k<200)[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]     {[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]      ADC10CTL0&=~ADC10SC;[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]      ad_temp[k] =ADC10MEM;[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]      k++;[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]      ADC10CTL0|=ADC10SC;[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]     }    [/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]}[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=12px]这个是修改好了的,能捕获波形数据存在数组里面,然后我想外接DAC0832让他输出,请问怎么操作[/SIZE][/FACE][/P][P][FACE=宋体][SIZE=9pt]
      [/SIZE][/FACE][/P]
      微控网感谢您的参与
      在线情况
      3
      • 头像
      • 级别
      • 门派
      • 职务总版主
      • 声望+9
      • 财富5
      • 积分3065
      • 经验390701
      • 文章6744
      • 注册2006-03-07
      你好
      [1]请问楼一的代码是“弄了一个星期了没出来”?有错误的代码吗?
      [2]“这个是修改好了的”居然你有好的代码了,为何楼一又贴出有问题的呢?
      请楼主编辑好你的原贴子,免得重复发贴,也能让别人看得明白些。

      如果想让8位的DAC输出的话,你得将10位的ADC数据精简为8位输出了。可以去掉低两位,保留高8位,这样只需向DAC输出8位数据就可以实现了。
      [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
      Powered by LeadBBS 9.2 .
      Page created in 0.1719 seconds with 5 queries.