本人是一个AVR初学都,首先用MEGA16,I不会用它的汇编,直接用C语言和GCC。第一次应用就是做一个温度监控的。单片机用MEGA16一片,温度传感器用DS18B20二十只.
在做的过程中先是用单片机和一只温度传感器做,因为我以前没有用过DS18B20.在做的进程中遇到了下面问题:
1、关于延时,因为DS18B20要有很精确的时序,这些时序全部用单片机产生。但是在调用它自身的延时函数无法读出来温度。用示波器看了时序,发现_delay_us(1)不是延时的1us,有好几ms甚至几十ms,百思不得其解。
2、由于一共要驱动20只温度传感器,而且它们在同一数据线上,寄生供电,这20只传感器在约为40m的数据线(数据线和地线)上,运用强上拉(BSS84),无法驱动,读不到值。
请大家帮帮忙,为我提提建议。 |