|
@@ -27,14 +27,14 @@ int init_DS18B20(void)
|
|
|
unsigned int result;
|
|
|
DQ_OUT;
|
|
|
DQ_L;
|
|
|
- udelay(480); //480~960
|
|
|
+ udelay(480);
|
|
|
DQ_H;
|
|
|
- udelay(15); //15-60
|
|
|
DQ_IN;
|
|
|
- udelay(60);//60-240
|
|
|
+ udelay(65);
|
|
|
result = DQ_V;
|
|
|
- udelay(405);
|
|
|
- printk("ds18b20 init result %d", result);
|
|
|
+ udelay(240);
|
|
|
+ printk("ds18b20 init result %d,%d", result, DQ_V);
|
|
|
+ udelay(180);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -53,7 +53,7 @@ unsigned char read_char(void)
|
|
|
udelay(2);
|
|
|
dat >>= 1;
|
|
|
DQ_IN;
|
|
|
- udelay(15);
|
|
|
+ udelay(12);
|
|
|
if (DQ_V)
|
|
|
dat |= 0x80;
|
|
|
udelay(50);
|
|
@@ -103,6 +103,14 @@ int initDs18b20(unsigned int gpioNum)
|
|
|
/*读取数据*/
|
|
|
void readDs18b20Data(unsigned char *value)
|
|
|
{
|
|
|
+ if (sizeof(&value) > 1){
|
|
|
+ value[0] = 0xff;
|
|
|
+ value[1] = 0xff;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (init_DS18B20())
|
|
|
{
|
|
|
return;
|
|
@@ -119,11 +127,8 @@ void readDs18b20Data(unsigned char *value)
|
|
|
write_char(0xCC);
|
|
|
write_char(0xBE);
|
|
|
|
|
|
- if (sizeof(&value) > 1)
|
|
|
- {
|
|
|
- value[0] = read_char();
|
|
|
- value[1] = read_char();
|
|
|
- }
|
|
|
+ value[0] = read_char();
|
|
|
+ value[1] = read_char();
|
|
|
}
|
|
|
|
|
|
void freeDs18b20(void)
|