搜索
bottom↓
回复: 6

请教大家一个MSP430F169中DAC产生正弦波的问题

[复制链接]
(244255208)

出0入0汤圆

发表于 2013-7-17 21:08:33 | 显示全部楼层 |阅读模式
RT,小弟才学习430不久,我想用169内部的DA通过查询正弦波码表要产生正弦波,代码如下

#include <msp430x16x.h>


#define uint unsigned int
#define uchar unsigned char

uint Sin_tab[100] = {
         0x7FF,0x880,0x900,0x97F,0x9FC,0xA78,0xAF1,0xB67,0xBD9,0xC48,0xCB2,0xD18,0xD79,0xDD4,0xE29,0xE77
,0xEC0,0xF01,0xF3C,0xF6F,0xF9A,0xFBE,0xFDA,0xFEE,0xFFA,0xFFE,0xFFA,0xFEE,0xFDA,0xFBE,0xF9A,0xF6F
,0xF3C,0xF01,0xEC0,0xE77,0xE29,0xDD4,0xD79,0xD18,0xCB2,0xC48,0xBD9,0xB67,0xAF1,0xA78,0x9FC,0x97F
,0x900,0x880,0x7FF,0x77E,0x6FE,0x67F,0x602,0x586,0x50D,0x497,0x425,0x3B6,0x34C,0x2E6,0x285,0x22A
,0x1D5,0x187,0x13E,0x0FD,0x0C2,0x08F,0x064,0x040,0x024,0x010,0x004,0x000,0x004,0x010,0x024,0x040
,0x064,0x08F,0x0C2,0x0FD,0x13E,0x187,0x1D5,0x22A,0x285,0x2E6,0x34C,0x3B6,0x425,0x497,0x50D,0x586
,0x602,0x67F,0x6FE,0x77E
};


uint num;

void main()
{
        uint t;
        WDTCTL =WDTPW + WDTHOLD;
        BCSCTL1 &=~XT2OFF;
        do
        {
                IFG1 &=~OFIFG;
                for(t=0xff;t>0;t--);
        }
        while((IFG1 & OFIFG) !=0);
        IFG1 &=~OFIFG;
        BCSCTL2 |= SELS+DIVS_3;
        ADC12CTL0 = REF2_5V + REFON;
        DAC12_0CTL = DAC12IR + DAC12AMP_5 + DAC12ENC;
        TACTL |=TACLR;
        //P6DIR |=BIT6;
        //P6OUT &=~BIT6;
        CCR0 =100-1;
        TACTL |=TASSEL_2 + MC_1;
        CCTL0 |=CCIE;
        _EINT();
        while(1)
        {
                _NOP();
        }
        //_BIS_SR(LPM0_bits);
}

#pragma vector = TIMERA0_VECTOR
__interrupt void tiemr(void)
{
        DAC12_0DAT = Sin_tab[num];
        num++;
        if(num==100)
        {
                num=0;
        }
        //DAC12_0CTL |=DAC12ENC;
}

我单独测得时候,不适用DA,引脚输出的频率和定时器理论上的值是一样的,但是加上DAC后,正弦波能够输出,但是频率始终上不去!最多也就几百小弟纠结好久了,还望各位大哥,各位前辈指点!谢谢了!

此致
敬礼
(244251456)

出0入0汤圆

发表于 2013-7-17 22:11:05 | 显示全部楼层
正弦波一般不是这么产生的。一般是输出方波,然后通过一个带通来得到正弦波。
(244246648)

出0入0汤圆

 楼主| 发表于 2013-7-17 23:31:13 | 显示全部楼层
jetlib 发表于 2013-7-17 22:11
正弦波一般不是这么产生的。一般是输出方波,然后通过一个带通来得到正弦波。 ...

嗯,这个我知道,通过一个低通滤波器。,我是想用纯软件来实现,还是谢谢了
(244218141)

出0入0汤圆

发表于 2013-7-18 07:26:20 | 显示全部楼层
频率还和sinrom大小有关
(152630546)

出0入0汤圆

发表于 2016-6-12 08:26:15 | 显示全部楼层
单靠中断频率当然上不去,需要用DMA(不知道430有没有)才能输出频率比较高的信号
(152616034)

出0入0汤圆

发表于 2016-6-12 12:28:07 | 显示全部楼层
DAC转换需要时间的,不是一设置寄存器马上输出马上就跟着变了。
(54188907)

出0入0汤圆

发表于 2019-7-26 17:20:14 | 显示全部楼层
要用DMA  用定时器触发模式。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-4-13 21:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表