搜索
bottom↓
回复: 6
打印 上一主题 下一主题

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

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 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后,正弦波能够输出,但是频率始终上不去!最多也就几百小弟纠结好久了,还望各位大哥,各位前辈指点!谢谢了!

此致
敬礼

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

2
发表于 2013-7-17 22:11:05 | 只看该作者
正弦波一般不是这么产生的。一般是输出方波,然后通过一个带通来得到正弦波。

出0入0汤圆

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

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

出0入0汤圆

4
发表于 2013-7-18 07:26:20 | 只看该作者
频率还和sinrom大小有关

出0入0汤圆

5
发表于 2016-6-12 08:26:15 | 只看该作者
单靠中断频率当然上不去,需要用DMA(不知道430有没有)才能输出频率比较高的信号

出0入0汤圆

6
发表于 2016-6-12 12:28:07 | 只看该作者
DAC转换需要时间的,不是一设置寄存器马上输出马上就跟着变了。

出0入0汤圆

7
发表于 2019-7-26 17:20:14 | 只看该作者
要用DMA  用定时器触发模式。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 08:53

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

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