怀化学院mspTI杯经验座bycrk

上传人:jiups****uk12 文档编号:54218546 上传时间:2018-09-09 格式:PPT 页数:13 大小:369.50KB
返回 下载 相关 举报
怀化学院mspTI杯经验座bycrk_第1页
第1页 / 共13页
怀化学院mspTI杯经验座bycrk_第2页
第2页 / 共13页
怀化学院mspTI杯经验座bycrk_第3页
第3页 / 共13页
怀化学院mspTI杯经验座bycrk_第4页
第4页 / 共13页
怀化学院mspTI杯经验座bycrk_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《怀化学院mspTI杯经验座bycrk》由会员分享,可在线阅读,更多相关《怀化学院mspTI杯经验座bycrk(13页珍藏版)》请在金锄头文库上搜索。

1、430经验分享,周华 http:/,多通道信号测量,方案概述 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个子工程,一个主工程,所有功能单个调试没问题了然后才将代

2、码合体。 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_c

3、ycles(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,基础模块没

4、准备,比赛时会做不必要的工作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(2

5、34);printf(“rn“); http:/ 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上 注意使用捕获功能后,要设置拉 电阻,否则没有信号也会

6、捕获噪 声 提高捕获测频稳定度:使用 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 s

7、th; 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),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号