转:430的一些经验

[复制链接]
2162|4
 楼主| msp430ing 发表于 2011-5-12 16:23 | 显示全部楼层 |阅读模式
—————————————————————————————————
430不能像51一样,define 一位的名字,却可以define这一位的掩码,只需要需要记住是对那个port的
#define Ref (0×01) // P1.0 = Reference
#define Sensor (0×80) // P1.7 = Sensor
define之后就可以这样用
P1OUT &= ~(Ref + Sensor); // Ref set
P1DIR |= Ref + Sensor; // Ref output
—————————————————————————————————
delay的中断实现,低功耗
主函数中定义TA的计数,但不开中断:
TACTL = TASSEL_2 + MC_2 + TACLR; // 连续计数模式,SMCLK~1MHz, 也不一定要clear TAR
用到delay的地方设置delay间隔,比如用CCR1:
CCR1 = TAR + 5000; // CCR1 ~ TAR+5ms
使能CCR1的中断
CCTL1 = CCIE;
低功耗,等待delay时间到
LPM0; // Wait for CCR1 interrupt
下面是delay时间到了之后做的任务
中断函数里:结束低功耗功耗
—————————————————————————————————
用好ADC12
记住CTL0是内核控制,包括开AD内核,选参考电压,选MSC表示非单次模式的每次不需要重新触发,设定采样时间,及ENC和SC信号
CTL1是外围控制——时钟源、触发源SHI选择、SAMPCON来源的选择,起始存储器地址,采样模式:
所以总是先用CTL0再用CTL1,再用CTL0
频率问题:
!AD转换,一次采样转换的总时间是 重要的,这是由有用信号的频率决定的,想要的信号频谱越宽,越要增大ADC频率。
不能忽略的是,采样时间,要能保证电容充电稳定,(充电时间常数远远小于有用信号的周期时可以达到稳定的充电电压),而Tau是由内部电阻电容和信号源电阻共同决定的
3B1105 发表于 2011-5-13 12:51 | 显示全部楼层
很好的经验之谈啊!
加班加点 发表于 2011-5-13 13:12 | 显示全部楼层
受益匪浅啊!
huzixian 发表于 2011-5-14 22:31 | 显示全部楼层
受教了
dfl448866 发表于 2011-5-15 20:09 | 显示全部楼层
谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

730

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部