教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 小学教育 >

单片机程序设计编程规范(4)

来源:网络收集 时间:2026-08-28
导读: i.平时LCD都是透过LCDBuffer(RAM)来作为interface,当AP层面有更动LCD资料并不直接对LCM硬件操作,而是针对RAMBuffer更动资料同时设立LCDREQflag ii.MNLCD里面发现LCDREQ=1时候才进入MNLCD程序运行显示更新,此法可有

i.平时LCD都是透过LCDBuffer(RAM)来作为interface,当AP层面有更动LCD资料并不直接对LCM硬件操作,而是针对RAMBuffer更动资料同时设立LCDREQflag

ii.MNLCD里面发现LCDREQ=1时候才进入MNLCD程序运行显示更新,此法可有效改善效率与显示的稳定性

iii.相同如果非LCM的操作有些人认为可以直接更改LCDRAM数值直接更新显示,这也存在相当大的风险,最好的方式还式透过另外一组Buffer来做缓冲

iv.松翰的ICE发展系统有提供软件LCD模拟器给客户使用当客户的LCD还没有实体,可以透过模拟器直接在PC画面上显示,配合程序开发非常方便

8.Telecomm的处理

1)Sync(withclock)andAsync.

2)Sync.类似SPI信号datain,dataout,andclock

3)Async.本身没有Clock时钟信号一般来说有以下几个组成

i.Bitsync位元同步

ii.Framesync特定的framecode来锁定framedata开始

iii.Datalength资料长度来收集资料

iv.Checksum最后靠checksum来验证资料的正确性

4)一般来说同步或异步通信程序都是TX容易/RX译码困难

i.

5)拍码TX只需要考虑大笔资料拍码的bufferandpointer影响程序实时性不ii.接收RX部分就有点困难需要有较多的技巧考量尤其异步通信更是麻烦RF通信里面还要考虑拍码调变的方式某些硬件电路只能利用曼彻斯特编码法来拍码以去除DC分量

9.

2)看门狗/条件式看门狗只能够放在主循环内,可以确保主循环有效的运行,当主循环运行失败,“看门狗”自然发生Reset动作

3)主循环的绕圈时间(实时性系统反应力)

i.牵涉到系统的实时性(real-time)所以绕圈时间越短越好建议在5mS以内,

利用IOtoggle来观察主循环绕圈时间,如果程序里面有多余的IO就可以留下此IO供日后生产测试观察使用,如果没有多余在程序稳定后可以将此观察的IO移除

ii.主循环绕圈时间也会受到中断的影响,由于中断的执行等级高于主循环所以

当中断运行时间越长自然主循环的运行时间也越长,所以中断里面占用时间必须稳定的控制,不然影响系统实时性/反应性很大

iii.主循环里面每一个物件都要设计良好才能确保一个整体的绕圈时间,每一

个子程序物件进入前,都必须透过旗标判断是否需要执行,如MNLCD程序进入后立即检查是否lcdreq=1,如果在此绕圈动作中没有任何lcd资料更新,那也就不用浪费时间进入lcdsub-routine.另外如EEP储存动作由于会有writedatabusy问题所以也必定要将资料分批写入,不然程序会停留在writedata循环里面影响当时整体实时性

10.Watchdog的处理

1)Watchdog功能说明

2)Watchdog方块图说明

3)条件式清除watchdog

4)使用地方注意事项

11.Application的处理

1)透过APFIFO读取APCodeMainLoop的处理1)进入主程序循环前要有个”前处理”(Pre_Main)来将基本参数设置好才进入主循

i.APFIFO越大越能够了解系统发生过的事件(event)有助于systemdebug,只要在ICE上面stop运行观察FIFObuffer里面的数值就可以知道哪些动作进入FIFO发生过哪些事情

ii.同时系统里面有keybuffer,lcdbuffer,txbuffer,rxbuffer,eeprombuffer,tonebuffer利用FIFOandBuffer的观察,软件系统的除错性自然产生

2)APCode的编排设计

i.由于程序最后可以透过PC跳转所以APcode的数值设计就非常重要

3)根据不同的status可以展开所有动作有两次跳转动作设计出所有的命令

4)程序最后可达到表格化设计的境界利用跳转表格将程序的流程具体化

12.Powerdownandwakeup

1)省电的考量(系统耗电应该低于1uA/5V)

i.Inputpin:内部Pull-upresistor或是外部设定皆可

ii.Output

iii.Powerdown失败的情形

wake-uppin没有设置好,powerdown指令下达后马上就唤醒wake-up,使用者会误以为无法powerdonw

iv.Powerdown进入Sleepmode软件要做一个前处理pre_sleep程序

1)设立所有inputandoutputpin

2)TurnoffADC还有其他外围

3)设立wake-up条件P1WorTimergreenwake-upmode

4)Wakeup

i.Resetwakeup但是程序重头开始运行有时候多CPU系统里面或者在单按键状态的时候,利用按键reset

ii.Wakeuppin唤醒如P1,有分fallingedgewake-upandeventchangewake-up

13.SlowmodeandgreenmodeRTC的处理

1)Slowmode低速运行此模式利用MCU里面内建的32KhzRC震荡

i.ICnormalmode进入slowmode主要目的在于省电(slowmode<15uA/3V)

ii.Slowmode中IC还是开启所有周边运行利用低速运行来减低耗电

iii.Normal进入Slowmode并不需要太特别的设定主要还是考量IO与周边耗电的设置

iv.Slowmode回到Normalmode就要注意高速时间起振delaystable问题

2)TurnontheExternal/HighX’tal

3)WaittheExternalx’talStable这是必须做的动作否则会有不稳定的现象

4)Switchbackthenormalmode

5)一般来说delay时间约在mS等级建议设计2~10mS,最好用示波器观察起振时间再决定delaytime,不同的x’tal会有不同的起振稳定时间

14.ADC周边的处理

1)DNLandINL的观念

i.MissingCode是ADC比较通常的问题

ii.DNL可以反映出missingcode的特质

iii.INL反映出线性度的性能

2)平均化处理

i.在ADC的应用这是非常重要的

AC应用里面由于电源会有噪声产生或是EFT环境,此时ADC可能读到瞬间噪声,当作某些关键数值判断(如充电器充电电压判断)很有可能提早停止动作所以必须透过数值运算后再进行判断

3)读取ADC数值等待时刻不可去作OUPUT动作,由于微小的output动作都会引起VDD的噪声此时adc得到数值可能不稳定建议ADC读起时候利用回圈等待(配合timeout机制保护)

4)ADC参考电压设计

5)Powerdown时候必须注意的事项

i.TurnofftheADChardware

ii.注意ADCchannel输入信号的准位

ADCport里面只有软件设定enable那一pin高阻抗其他的脚位都是输入,如果有信号位于半电压1/2VDD时候会有输入漏电流产生,可以硬件解决同时松翰某些新款母体都具备有隔离暂存器可以设定,见以下范例

15.状态迁移的技巧

1)长秒数ON/OFF切换

左图标明如何运用state来做出长秒数的开关动作

State=0:关闭所有动作

开启此on/off动作必须设定以下指令

Time=0;时间重头开始

State=1;程序从状态一开始

接着程序会自动在两个状态里面切换,切换后设定时间的长度,同时执行相关的动作.最后设定下一个状态的指标state.

右图标明程序配合timer自动递减,当time=0时候代表整个动作自动停止

Time<>0的时候此程序会自动递减

如果状态较多的情况每一个状态里面用State=state+1,最后一个状态里面直接设定State=初始值,当初始值=0就是单次执行这状态迁移,如果初始值=1那这状态迁移就会不断的循环!

关闭此程序的方式也非常简单,就是设定State=0.

一般设计人员最常用错误方式,就是用delay循环方式来完成,此种方式大大降低程序的灵活性与实时性!务必要记住程序尽量不使用delayloop!

…… 此处隐藏:1978字,全部文档内容请下载后查看。喜欢就下载吧 ……
单片机程序设计编程规范(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/42567.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)