去年的某个时候我也有幸接触到DS18B20单总线温度传感器,最初也不知道什么叫做单总线,随着学习时间的加长和相关资料的查阅,也似乎明白了,但还是不太相信(总感觉有点XIE—MEN),直到自己用的那一天才知道它确实是个好东东!但我们一般在使用它进行测量温度时,一般都只让单片机的所用资源交给它,直到测量完成后才转而处理其它事情,假如有这样一个系统,上位机要通过串口通讯来命令下位(单片机)进行温度测量或其它什么的,那么按照常规我们都会在下位机对DS18B20传感器进行温度测量时把中断系统关闭,以使其时序不受串口中断的影响,直到温度测量完成后才开中断系统。 假如有这么一个实时系统要我们工程师去开发,该系统也分为上位机(PC或ARM)和下位机(假如是单片机,任务是测量温度),上位机的权限最高,任何时候下位都必需响应它,这就要求我们的下位机在进行温度测量时不能关闭中断系统,这样也就带出的我们博客的主题“DS18B20测温中断方式实现”。这个问题刚开始是由我朋友提出来的,我当时也只是随便想想,没作太深的研究,就回答他:“这个基本上很难”,在后来的日子里,看了许多有关微控制器中断系统的**,发现应用微控制器的“堆栈”原理有可能帮我们实现,我是这样想的,我们把DS18B20的每一种操作看作是一次“出栈”操作,每操作一次作一下标志,当中断来时计下当时的操作步骤代号,再去执行中断服务程序,执行完成后再回来继续DS18B20测温的操作,如此一来,便可以实现DS18B20测温的中断方式实现。 当然,以上只是本人的一点拙见,还未曾验证! 各位如果有更好的实现方法或建议,不如拿出来大伙一起研究,一起进步! |