抽空学习了这本书,不然买了就是浪费了,择其重点而学之。
1、讲述了单片机的接口技术,数中讲述了8051,其实适用于大部分的单片机,原理都是相同的,但也有区别,比如如果单片机中GPIO引脚比8051功能增强或者有上拉电阻等,这样的接口电路就有区别了,但是书中讲的基础有助于项目中实际应用。也包括串口存储设备,串口设备,光耦隔离等康电器隔离的设备等
2、8051的汇编编程的分析,这部分目前来讲,已经不用汇编了,但是中断这块的讲解,还是有助于单片机开发的,书中提到单片机的中断单片机系统中,十分重要的部分,离开了中断,那么现实社会中的很多实际产品将不在存在,正因中断的存在,才让单片机系统使用越来越广泛,兼顾实时性和可靠性,但是中断也要使用好,理解好,才能开发好的产品。
中断是随时发生的,随时中断main函数的,因此原子操作就十分重要了,不能在main函数中、中断中都有对一个变量进行写的操作。通常的写法如下:
书中提到,中断程序尽量快进快出,设置标志位后退出中断,在main函数中判断标志位来进行处理,同时清零标志,和时序相关的,就在定时器里执行,不要两边兼顾,因为中断是随机的,会在main函数执行到一半的地方进行中断,退出中断后,又回到main函数中执行相关的函数,而我们的想法是不能在执行main函数的相关子程序的,从而导致出现bug,这个bug在我自己的项目出现过,还是使用了rtt打印才找到了原因。
中断函数中调用的子函数也是有讲究的,最好是但是的处理子函数,不要和主程序中共用一个子函数。
提高定时精度的措施
定时器的使用当中,书中也提到了可以在线修改定时器的初始值,然后保存到存储器中,这个在51中可能使用的较多,在高档的单片机中,一般用的比较少,一来主频快,而来流水线技术提升指令执行速度,中断的进出很比8为的单片机块多了,基本上定时都是相对准确的,而且在软实时系统中,不需要那么精确的定时。
提高软件质量的措施
a、IO口的输出刷新,与防止无输出的错误,比如要输出IO的高电平,那么多次输出以确保输出的电平不受外界干扰,即便第一次受干扰,那么第二次可以别乱反正,起到保护作用。
b、另外可以将几个IO口相“与”进行输出,几个IO同时出错的概率还是比较少的。
3、设计应用实例
a、高可靠的警示灯连续控制中提到,使用如果没有检测到警示灯的电流,就切换到其他的led等,便报警,这样可以连续正常的显示警示灯,灯饰上位机可以远程查看几个灯坏了,可以去换掉。软硬件相结合的方法。
b、加热升温炉,他这里讲到两种方法,一种是开环控制,加热到几分钟就停止加热,那么这个需要多测实验,估算时间,笨办法。一种是闭环控制,pwm来控制,也可以结合PID来控制。
c、485变频器通信,这里其实就是modbus协议,可以用来参考,自己也写过相关的笔记。不过教材文件比较通俗易懂,适合入门,得来全不费工夫。
d、温度-转速测试,温度测试使用ds18b20,这个芯片,我认为不要在项目中使用,时序性要求太高,ptc、ntc这个来采集常温完全可以,而且不需要校准,方便使用,高低温可以使用热电偶,线性插值来计算,也无需校准,简单方便,软件编写可移植性高,可靠性也高,转速有的可以用脉冲的方式来测量,每转一圈,输出多少脉冲,也可以用测试周期的方式来测试,具体问题具体分析。
4、软件抗干扰设计
a、数字滤波,这个《匠人手记》中有很多方法可以参考,他这里是优化了一个求平均的方式,:每次都在累加和sum中用新的采样值data替换上一次算出的平均值avr1,然后算出新的平均值avr2,当然还要注意数据的上升和下降,需要更换计算公式的符号。
b、数据采集,可以多采样几次,如果连续都是高,则认为高,否则就是脉冲干扰。相当于滤波。
c、软件看门狗,这个重新认识到了,通常在优先级最差的程序中,进行喂狗,这样避免程序死机。还有很多硬件看门狗,也可以在实际项目中使用到。
5、容错性设计
这个在软件设计中,需要考虑全面,输入错误,需要给出提示,输入几次错误后,程序应该怎么处理。
a、密码保护,这里他提到了妈咪输入的顺序和解析方法,来最终确定程序的执行
b、上下限设置, 这个在软件编程中,经常会使用的。
来源:oschina
链接:https://my.oschina.net/u/4386695/blog/4282739