—————————————————————————————————
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是由内部电阻电容和信号源电阻共同决定的 |