请问MSP430定时器触发ADC采集怎么实现?

2019-07-15 15:13发布

我想实现定时器触发ADC采样,定时器10us触发一次adc采样,采样完成后触发中断,中断处理函数中保存采样数据到buffer,求大神给思路,有例子更好,百度搜索不到有用的例子,还有按照430手册配置,也没有配置成功,最后我也是看的云里雾里 本主题由 一只耳朵怪 于 2019-4-10 10:38 审核通过
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
xia534228
1楼-- · 2019-07-15 20:44
听你的要求,好像是用到2个中断?定时器一个,AD一个,
我之前做过类似的东西AD模块的初始化是这样的,我用的是MSP430F149[C] 纯文本查看 复制代码
P6SEL |= 0x01;                            // 使能ADC通道    ADC12CTL0 = ADC12ON+SHT0_8+MSC;           // 打开ADC,设置采样时间    ADC12CTL1 = SHP+CONSEQ_2;                 // 使用采样定时器    //ADC12IE = 0x01;                           // 使能ADC中断    ADC12CTL0 |= ENC;                         // 使能转换    ADC12CTL0 |= ADC12SC;                     // 开始转换
初始化里有采样时间 这里在研究一下 满足你的要求应该没有问题
皮皮鲁鲁鲁皮
2楼-- · 2019-07-16 02:13
谢谢,我已经弄好了,我用的是定时器触发ad采样,定时器会一直工作,当需要采样的时候,使能adc的enc,然后会不断进入adc中断,采样数据存入buffer,我这个不用进入timer的中断,timer只是定时采样ad的时候触发信号,不过仍然谢谢你啊,分就给你了
Tussi
3楼-- · 2019-07-16 05:51
楼主可否把写好的代码给参考下
王小琳子
4楼-- · 2019-07-16 06:45
#include "main.h"
void adc_init(void)
{
    ADC10CTL0 = ADC10SHT_1 + ADC10ON; // ADC10ON, interrupt enabled
    ADC10AE0 |= 0x02;                         // P7.5 ADC option select
    ADC10AE0 |= 0x04;                         // P6.0 ADC option select
    ADC10AE0 |= 0x08;                         // P6.3 ADC option select
}
//只有在采集电流数据的时候开始中断
void Adc_Irq_Enable(void)
{
    sys.ad_aindex = 0;
    sys.ad_dindex = 0;
    ADC10CTL1 = SHS_1 + INCH_2 + CONSEQ_2; //单通道连续转换
    ADC10CTL0 = ADC10SHT_1 + ADC10ON + ADC10IE;
    ADC10CTL0 |=  ENC;
    TACCR0 = 20-1;                          // PWM Period
    TACCTL1 = OUTMOD_3;                       // TACCR1 set/reset
    TACCR1 = 10;                            // TACCR1 PWM Duty Cycle
    TACTL = TASSEL_2 + MC_1 + ID_3;                  // ACLK, up mode
}
void Adc_Irq_Disable(void)
{
    ADC10CTL1 = INCH_2;
    ADC10CTL0 = ADC10SHT_1 + ADC10ON;
}
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
        ad_abuffer[adindex] = ADC10MEM;
}
liangxxxxx
5楼-- · 2019-07-16 12:27
 精彩回答 2  元偷偷看……

一周热门 更多>