05.05【每日一问】:如何精确定时
这个问题是我一个同事问我的,当时我费了好大劲给他讲清楚。现在拿来给大家,今后在产品中很可能用到:
事情是这样,有一天我一个同事问我,他正在做一个产品,是设定一个时间定时控制温度上升曲线,系统很简单,几个DS18B20,几个继电器,几个按键,一个eeprom,一个液晶。这时他就遇到了一个问题,如果用定时器延时,经常会发生中断冲突倒是定时丢失,如果用软件延时,系统每次轮训时间都不一样,也不好办。系统已经快完成了,但为了这个问题他搞了一个礼拜。大家都知道。DS18B20在读写的时候是禁止中断的,eeprom也要禁止中断,甚至液晶读写的某些地方也要禁止中断。而且液晶比较大,串口的,写一次液晶就要几个毫秒。另外还有一点,他用的是陶瓷振荡器,因为陶瓷振荡器比较耐用,稳定性高,但是偏差大啊。
现在就要问大家了。这样的系统,精确到每天时间误差在10S以内,你说应该怎么做呢。
这个问题的同时再延伸两个问题。一个是这个系统要用AD采集供电电压,但是为了成本使用的是普通精度的电阻,5%,AD的分辨率是10位,如何保证系统电压的精度。第二个问题是DS18B20大家都知道。这家伙的偏差还是蛮大的,如何保证它的精度呢?(DS18B20不和系统一一对应)
|