From e9ca82542cbc0b2b33c79cf812547c0e40b30cda Mon Sep 17 00:00:00 2001 From: shuixx Date: Sun, 9 Jun 2019 15:00:27 +0800 Subject: [PATCH] ok --- dev.sh | 12 ++++++++++++ ds18b20.c | 27 ++++++++++++++++----------- 2 files changed, 28 insertions(+), 11 deletions(-) create mode 100755 dev.sh diff --git a/dev.sh b/dev.sh new file mode 100755 index 0000000..133c45e --- /dev/null +++ b/dev.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +if [ -n "$1" ];then + rmmod ds18b20_224 + make -j 2 + insmod ds18b20_224.ko + sleep 2 +fi +for i in `seq 1 10` +do + show-temp +done diff --git a/ds18b20.c b/ds18b20.c index 1828c39..a820f09 100755 --- a/ds18b20.c +++ b/ds18b20.c @@ -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)