完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想实现定时器触发ADC采样,定时器10us触发一次adc采样,采样完成后触发中断,中断处理函数中保存采样数据到buffer,求大神给思路,有例子更好,百度搜索不到有用的例子,还有按照430手册配置,也没有配置成功,最后我也是看的云里雾里
|
|
相关推荐
1 条评论
5个回答
|
|
听你的要求,好像是用到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; // 开始转换 初始化里有采样时间 这里在研究一下 满足你的要求应该没有问题 |
|
|
|
谢谢,我已经弄好了,我用的是定时器触发ad采样,定时器会一直工作,当需要采样的时候,使能adc的enc,然后会不断进入adc中断,采样数据存入buffer,我这个不用进入timer的中断,timer只是定时采样ad的时候触发信号,不过仍然谢谢你啊,分就给你了
|
|
|
|
楼主可否把写好的代码给参考下
|
|
|
|
#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; } |
|
|
|
好久没上论坛了,这个是源代码
|
|
|
|
只有小组成员才能发言,加入小组>>
3089个成员聚集在这个小组
加入小组3117 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
4166 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2390 浏览 1 评论
4861 浏览 1 评论
2614 浏览 1 评论
1682浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
4166浏览 2评论
3119浏览 1评论
1873浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-2 15:24 , Processed in 1.354595 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号