这里写自定义目录标题
ESP8266微秒级延时函数测试----os_delay_us()
最近需要做个利用8266作控制器的手机维修加热台,利用18B20来精确测量温度的模块。
arduino库中有现成DC18B20的操作库,但是做个库有个问题,无法正确识别到8266是否真实在线(也许时我没有在现成库中找到做个函数),准确读取到18b20的真实温度,导致读出来的温度数据不真实(比如,你8266上不接18B20时,读出的温度时-127度,)
如果出现不能正确判断18B20是否在线,或者正常工作,就会在某些极端情况下,导致加热台温度不可控,出现意外。、
为来了解决做个问题,我就准备利用前期STC单片机做的18b20源文件进行自行移植,增加判断18B20是否在线等功能。
但是遇到的第一个问题就是18B20读取时的精确延时问题。需要微秒级延时,在网上搜索了下,arduino自带了个延时函数:os_delay_us()
下面就是利用下面的程序,加示波器简单测试了下该函数的延时效果,
源程序如下:
/* ESP8266微秒级延时测试程序*/
void setup() {
pinMode(12, OUTPUT);
digitalWrite(12,LOW);
}
void loop() {
digitalWrite(12,HIGH);
os_delay_us(30); //延时30微秒
digitalWrite(12,LOW);
os_delay_us(30);
digitalWrite(12,HIGH);
os_delay_us(30);
digitalWrite(12,LOW);
os_delay_us(30);
digitalWrite(12,HIGH);
os_delay_us(30);
digitalWrite(12,LOW);
os_delay_us(30);
digitalWrite(12,HIGH);
os_delay_us(30);
}
利用多个延时函数,对12脚进行高低电平的转换,勇示波器测试得到下面的效果,还是很满意的
高电平时间也是32微秒,完美