1456|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

msp430单片机ad采样1khz信号,如何用12864显示信号... [复制链接]

采样得到的结果是存在什么地方的?
adcmen0貌似只能存一个数据,多个数据存储怎么实现?
求大神来个程序啊!

 

在ad中断中读取 adcmen0 并存到数组或者flash中
一个例子
//*****************************************************************************
// MSP-FET430F261x Demo - ADC12, Single Channel Extended Sample, TA1 Trigger
//
// Description: Sample and convert A0 using Timer_A as sample trigger in
// Extended Sample mode. Put "Num_of_Results" ADC12MEM0 values in results[]
// and Light LED (P1.0) when done.
//
// MSP430F2618
// ---------------
// | |
// Vin -->|P6.0/A0 |
// | |
//
// R. B. Elliott / H. Grewal
// Texas Instruments Inc.
// Feb 2005
// Built with IAR Embedded Workbench Version: 3.21A
//*****************************************************************************
#include <msp430x26x.h>
#define Num_of_Results 512
int results[Num_of_Results] = {0};
void ADC_Init(void);
void main(void)
{
WDTCTL = WDTPW | WDTHOLD; //看门狗 失效
ADC_Init(); //初始ADC12
ADC12CTL0 |= ENC; // 开始转换
__bis_SR_register(LPM0_bits + GIE); // 进入LPM0
}
void ADC_Init(void)
{
P1DIR = 0xff; // set port to outputs 用来观察 无用
P1OUT = 0; // reset port outputs 无用
P6SEL |= 0x01; // select A0 input 设置采集的口
ADC12CTL0 = ADC12ON+REF2_5V+REFON; // Setup ADC12 各种设置
ADC12CTL1 = CONSEQ_2+SHS_1; // Timer triggers sampling 各种设置
ADC12MCTL0 = INCH_0 + SREF_1;
ADC12IE = 0x0001; // Enable ADC12IFG.0 中断使能
TACCR0 = 1500; // Delay to allow Ref to settle
TACCTL0 |= CCIE; // Compare-mode interrupt.
TACTL = TASSEL_1 | MC_1; // TACLK = ACLK, Up mode.
__bis_SR_register(LPM3_bits + GIE); // Wait for delay, Enable interrupts
TACCTL0 &= ~CCIE; // Disable timer
P2SEL |= BIT3; // Set for Timer A1
P2DIR |= 0x08;
TACCR0 = 7; // Init TACCR0 w/ sample prd=CCR0+1 设置ta 定时触发
TACCR1 = 4; // Trig for ADC12 sample & convert
TACCTL1 = OUTMOD_3; // Set/reset
TACTL = TACLR | MC_1 | TASSEL_1; // ACLK, clear TAR, up mode
}
// Timer_A0 Interrupt Service Routine
#pragma vector=TIMERA0_VECTOR
__interrupt void ta0_isr(void)
{
TACTL = 0;
__bic_SR_register_on_exit(LPM3_bits);
}
// ADC12 Interrupt Service Routine
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
static unsigned int index = 0; //一个不断进入中断 但是值保持的变量 重要
results[index++] = ADC12MEM0; // Move results 将的得道 的结果存到数组
if (index == 512)
{
ADC12CTL0 &= ~ENC; // Stop conversion 关ad
ADC12CTL0 = 0;
ADC12IE = 0;
index = 0;
P1OUT |= 0x01;
}
}

 

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表