具体方法
发布时间:2012/6/15 20:13:48 访问次数:1711
先到网站http://www.ard uino.cc/playground/Main/MsTimer2下载MsTimer2.zip,然后解压XC95144XL-10TQG100C到电脑的Arduino编程平台的libraries文件夹下的MsTimer2文件夹中。解裳的文件有:MsTimer2.h、MsTimer2.cpp和一个文件夹examples。
在编制程序sketch时,文件头部增加#include<MsTimer2.h>的语句,就可以在程序中使用控制time12中断的函数了(共3个):
MsTimer2::start();∥开启time(2
MsTimer2::stop();∥关闭timer2
MsTimer2::set(unsigned long ms,vO矧㈤());//申断响应设置
以上函数都是针对MCU内部功能而非外部元器件,所以使用双冒号表示它是MsTimer2类的函数。中断响应的第1个参数ms是中断间隔毫秒数,第2个参数(+0()是需要在中断时执行的功能函数。
这样使用timer2定时器中断比起直接编程容易多了,因为2次中断之间的时间很长,所以中断函数可以处理较多的任务,我们把判断时、分、秒、启动测温和读数都安排在这里进行。
为了使用DS18820测温,Arduino的扩展类库中有一个专门针对它开发的OneWire类,里面包含了操控DS18820所必要的各种功能函数。
之所以能够在单线总线上识别每个DS18820,是因为每个DS18820都具有一个包括器件识别码(1字节)、序列号(6字节)和CRG校验码(1字节)共8字节长的ROM,其中的序列号就是它唯一的身份证,它就代表了具体每个DS18820的地址。开始时MCU在数据线上发出低复位脉冲,然后恢复总线为高,随后DS18820发出响应脉>中,MCU发现有响应脉j中后再搜索,按位逐个取得器件的库列号,也就是器件地址,再对各个器件发出转换命令进行测温,由每个DS18820测温并把结果保存在自己的RAM中,经过转换时间后(随分辨率不同,94~750ms),由MCU按地址读出每个DS18820的测温结果。
为实现上述功能,在OneWire类中的函数主要以ds作为程序中的实例,见表2。
还有一个MCU计算CRC校验值的函数,OneWire.:crc8( byteaddr,7),用它计算搜索到的器件CRC校验值,在程序中判断是否与器件的ROM最高位的已有的CRC值相等,如不相等则有问题。
利用以上函数就可以实现多点测温,对于位读写的具体脉冲宽度就不必考虑,函数内部已经调整好了,直接调用就行了。
先到网站http://www.ard uino.cc/playground/Main/MsTimer2下载MsTimer2.zip,然后解压XC95144XL-10TQG100C到电脑的Arduino编程平台的libraries文件夹下的MsTimer2文件夹中。解裳的文件有:MsTimer2.h、MsTimer2.cpp和一个文件夹examples。
在编制程序sketch时,文件头部增加#include<MsTimer2.h>的语句,就可以在程序中使用控制time12中断的函数了(共3个):
MsTimer2::start();∥开启time(2
MsTimer2::stop();∥关闭timer2
MsTimer2::set(unsigned long ms,vO矧㈤());//申断响应设置
以上函数都是针对MCU内部功能而非外部元器件,所以使用双冒号表示它是MsTimer2类的函数。中断响应的第1个参数ms是中断间隔毫秒数,第2个参数(+0()是需要在中断时执行的功能函数。
这样使用timer2定时器中断比起直接编程容易多了,因为2次中断之间的时间很长,所以中断函数可以处理较多的任务,我们把判断时、分、秒、启动测温和读数都安排在这里进行。
为了使用DS18820测温,Arduino的扩展类库中有一个专门针对它开发的OneWire类,里面包含了操控DS18820所必要的各种功能函数。
之所以能够在单线总线上识别每个DS18820,是因为每个DS18820都具有一个包括器件识别码(1字节)、序列号(6字节)和CRG校验码(1字节)共8字节长的ROM,其中的序列号就是它唯一的身份证,它就代表了具体每个DS18820的地址。开始时MCU在数据线上发出低复位脉冲,然后恢复总线为高,随后DS18820发出响应脉>中,MCU发现有响应脉j中后再搜索,按位逐个取得器件的库列号,也就是器件地址,再对各个器件发出转换命令进行测温,由每个DS18820测温并把结果保存在自己的RAM中,经过转换时间后(随分辨率不同,94~750ms),由MCU按地址读出每个DS18820的测温结果。
为实现上述功能,在OneWire类中的函数主要以ds作为程序中的实例,见表2。
还有一个MCU计算CRC校验值的函数,OneWire.:crc8( byteaddr,7),用它计算搜索到的器件CRC校验值,在程序中判断是否与器件的ROM最高位的已有的CRC值相等,如不相等则有问题。
利用以上函数就可以实现多点测温,对于位读写的具体脉冲宽度就不必考虑,函数内部已经调整好了,直接调用就行了。
热门点击