我用的linux-2.6.32.2内核版本 写的驱动程序 采用动态加载模块的方式 但是,运行时总显示复位失败,然后显示当前温度是4000多度。显然是复位函数部分的错误,可是我改了好几次也没通过,在这求各位大侠帮忙看一下程序,小弟不胜感谢。
我的ds18b20的复位程序:
unsigned char reset (void)
{
DQ_OUTPUT;
s3c2410_gpio_pullup(DQ,0);
s3c2410_gpio_setpin(DQ,1);
udelay(100);
s3c2410_gpio_setpin(DQ,0);
udelay(540);
s3c2410_gpio_setpin(DQ,1);
udelay(70);
DQ_INPUT;
if(s3c2410_gpio_getpin(DQ))
{
printk("DS18B20 reset failed.\r\n");
udelay(500);
return 1;
}
udelay(500);
DQ_OUTPUT;
s3c2410_gpio_pullup(DQ,0);
s3c2410_gpio_setpin(DQ,1);
return 0;
}