资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
430经验分享,周华 http:/e.9crk.com,多通道信号测量,方案概述 while(1)f=CAP测频;(检测到两个上升沿)CCR0=8000000/(f*100);AD触发源设置为T0.0DTC1=2;CONSEQ_1;INCH_x=最高通道dat200=ad();处理dat数组得到相位和vpp CAP测方波频率f2、占空比;(上升沿与下降沿中断) 单通道采集VPP,采样频率根据f2设定。显示、串口发送所有数据; ,1.整个循环的时间分析 2.测方波信号的管脚需要先使用cap,后使用AD转换,只有串口接收脚P1.1符合条件。 3.调试技巧:建立N个子工程,一个主工程,所有功能单个调试没问题了然后才将代码合体。 4.Debug:单步、断点、运行到当前行行、全速运行、Expression、variant、Memory、Register 5.IAR:快速、math.h(CCS5的BUG)、支持软件仿真CCS:对仿真更好的支持,数据查看更稳定,支持多个断点,#include“math.h“ void main(void) volatile double b=sin(1); 查表解决、使用IAR 6.注意代码被优化: void delay(long time)while(time-); 正确写法:void delay(volatile long time)while(time-); _delay_cycles(8000000) _NOP(); char i; i+; volatile char i; i+; 7.变量初始化 8.大数组(固定不变的)使用const存放到flash里。const char dat1000;,9,相位的测量,1,RAM是否够用内存区有两种用途:从低到高用于放数据,从高到低用 于堆栈。0x200变量-堆栈0x400512B=256个整数 CCS默认堆栈占用0x80B IAR 0x50B设置:右击工程属性-msp430 Linker-basic options-stack , heap不用管 2,用哪种采样模式,定时采样只来自TA0,容易存在的问题,1,基础模块没准备,比赛时会做不必要的工作CH452简化采用4线16键方案按键置数界面显示方案12864 3根线 PSB拉低 2,避开复用IO复用注意 拉电阻很微弱 (开始能用,后面不能用,有时能用) 跳线帽P2.6 XIN P2.7 XOUT 默认SEL=1,3,DTC 问题ADC10CTL0 ,加速调试,串口介绍 波特率只使用9600,但注意速度慢带来的影响 我们使用的launchpad有两种 使用完串口,如果要复用,关中断、P1SEL1、P1SEL2,#include“uart.h“ uart_init(9600); uart_float(1.23);printf(“rn“); uart_uint(234);printf(“rn“); http:/e.9crk.com msp430板块,捕获,P1.1 TA0.0 CCI0A P1.2 TA0.1 CCI1A P1.5 TA0.0 无捕获 P1.6 TA0.1 无捕获 P2.0 TA1.0 CCI0A P2.1 TA1.1 CCI1A P2.2 TA1.1 CCI1B P2.3 TA1.0 CCI0B P2.4 TA1.2 CCI2A P2.5 TA1.2 CCI2B,TAn.x对应CCIxA或CCIxB,到 底对应A还是B,就看CCIS_x位了 TAn.x对应TAnCCRx,其设置 位在TAnCCTLx上 注意使用捕获功能后,要设置拉 电阻,否则没有信号也会捕获噪 声 提高捕获测频稳定度:使用 32.768kHz手表晶振,定时器,G2553有两个定时器TA0 TA1,为了让程序兼容只有一个定时器的芯片,所以TI的头文件将TA0就当做TA用了 中断源有四个 CCR0 独占一个中断向量(中断函数), CCR1 CCR2 TAIE(溢出中断) 三个公用一个TIMERn_A1,通过查询TAIV的值去判断是谁的中断,如果不读TA0IV的值,就必须手动清除中断标志位比如TAIFG CCIFG TAnIV只能读一次,被read时清除了所有标志:if(TAIV=2)do sth;else if(TAIV=4)do sth;else if(TAIV=10)do sth; ERROR!,matlab上位机,osc.m s=serial(COM12); fopen(s); t=timer(TimerFcn,display1(s),ExecutionMode,fixedSpacing,Period,0.3); start(t); display1.m function =display1(s) x=fread(s,400); for i=0:1:99y1(i+1)=x(4*i+1)+x(4*i+2)*256;y2(i+1)=x(4*i+3)+x(4*i+4)*256; end subplot(1,2,1); plot(y1); subplot(1,2,2); plot(y2);,matlab使用完记得释放串口,否则将导致串口不能用停止刷新显示 stop(t) 释放串口 fclose(s),
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号