[资料分享] MSP430单片机ADC的功耗隐藏任务和LCD外接电阻问题

fish001   2018-2-21 17:20 楼主
     MSP430的定时器很给力,以前官网的选型表会写出Capture/Compare Register的个数,而弱化了Timer的概念,当然现在不会了。这个CCR是啥呢?就是捕获比较寄存器,当你看到CCR的个数有3~5个的时候,你是否很兴奋?我草,那你就悲剧了!真相就是大多数的430定时器就1个,尼玛,最普通的51都有两个!!
      最典型的CCR是有三个。一般情况下,TAR(或者TBR)是计数寄存器,它负责计数。其实说穿了也就是同步用的,当开启比较模式的时候,CCR0是被用来做周期寄存器的,而CCR1和CCR2是在CCR0的范围内与TAR(或者TBR)进行比较。其实比较一般也就是为了得到一个好的pwm模式,有了这样的一种定时器机制,寄存器简单,使用起来也很方便,可以随意更改占空比和周期,将CCR0修改即可修改周期,将CCR1或者CCR2修改即可修改占空比。定时器up模式下,产生的就是avr中所言的快速pwm,up/down模式则是相位修正pwm。虽然430定时器操作简单,但不可否认它比avr的定时器灵活得多,avr没有专门的周期寄存器,它并不能灵活的修改pwm的频率,只有在特定的几种模式下可以。
       很重要的一点,430的定时器CCR的修改都是及时更新的,并不像avr一样是下个周期更新或者像stm8或者stm32一样可以选择更新方式,更没有重装载寄存器。所以想要用430做spwm的朋友请注意了,如果想要得到正确的spwm波,更新CCR的时候一定要选择CCR0中断的时候。
说到中断,又有一个比较纠结的问题了,呵呵,一个定时器有两个中断向量,以TA0为例
TIMER0_A1_VECTOR  
TIMER0_A0_VECTOR
TIMER0_A1_VECTOR是比较中断1~4,还有溢出中断。也就是说当不操作CCR的时候,也就是没有启用比较捕获的时候,单纯想要使用TAR计数计到0xffff溢出,会触发的中断,会进到这个中断,当然一般也就是刚从51转过来,大脑还沉浸在51快乐时光里的犯2的人才会这么做。CCR1~CCR4的比较捕获中断也是进这个中断。而CCR0是进到TIMER0_A0_VECTOR,所以做spwm的朋友要开启这个中断。一般情况下比较模式也就是PWM模式有7种,而只开启CCR0不开启其他CCR的时候,只能用四种,常用一般也就三种,set强制拉到有效,toggle扳机也就是翻转,reset强制拉到无效。

ADC的功耗隐藏任务问题。
     想要低功耗,那就别用ADC,这个隐藏的功耗杀手,会不经意间给你来那么一下。当你进去深度睡眠的时候,想要测一下功耗却发现测出来的功耗与电气特性表上标明小于1uA相差了几百uA正要大骂TI坑爹的时候,你看看你的ADC关了木有~~~DC关了木有~~~C关了木有~~~关了木有~~~了木有~~~木有~~~有~~~(这是肥音)
ADC开启的时候会消耗将近200uA的电流,和深度休眠的差了200倍!!所以最好在使用完ADC之后,将其寄存器全部清空。哦,对了,不小心插一句,AVR有硬件模拟比较器,这个默认是打开的,为了节省功耗你可以每次上电都将ACSR寄存器的ACD置位。每个使用430的ADC的孩纸上辈子都是折翼的天使,而且掉下来都是脑袋先着地的,伤不起啊~

回复评论 (1)

LCD外接电阻问题 360截图20180221175412553.jpg
看到这里,很多人可能都会觉得我有点吹毛求疵,不见得大家都不明白,即便这个问题也一样,说来话长估计大家都明白。那我就长话短说。很多人使用lcd的时候都喜欢在R33、R23、R13、R03之间接上大电阻,貌似为了符合用户手册上的指示,其实只是为了求心安的一个表现罢了,实际上会有多少人会把REXT置一呢?因为REXT置一才是使用外部电阻啊!!!我看过很多人的程序,没有看到啊,包括代理发给我的程序。我很负责的告诉你,你TMD就是犯贱,知道在这里加上3、4个外部电阻给你的PCB布线带来多大的烦恼么?这就是坑爹的安排!因为REXT置一之后液晶会显示不正常,这个是要调的!所以当你对于液晶对比度的调节要求要求不高的时候(Rx可以调节液晶对比度),直接将外面的电阻舍去,使用内部电阻,方便布线。

点赞  2018-2-21 17:54
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复