From e511c6a930e804411ee652b49408fabaddc1c546 Mon Sep 17 00:00:00 2001 From: Joakim Eriksson Date: Sun, 5 Jun 2011 00:15:53 +0200 Subject: [PATCH] added debug to sht11 driver and made it more configurable --- core/dev/sht11.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/core/dev/sht11.c b/core/dev/sht11.c index d49ad10e3..957c433f7 100644 --- a/core/dev/sht11.c +++ b/core/dev/sht11.c @@ -47,13 +47,23 @@ #include #include "sht11-arch.h" +#define DEBUG 0 + +#if DEBUG +#include +#define PRINTF(...) printf(__VA_ARGS__) +#else +#define PRINTF(...) +#endif + +#ifndef SDA_0() #define SDA_0() (SHT11_PxDIR |= BV(SHT11_ARCH_SDA)) /* SDA Output=0 */ #define SDA_1() (SHT11_PxDIR &= ~BV(SHT11_ARCH_SDA)) /* SDA Input */ #define SDA_IS_1 (SHT11_PxIN & BV(SHT11_ARCH_SDA)) #define SCL_0() (SHT11_PxOUT &= ~BV(SHT11_ARCH_SCL)) /* SCL Output=0 */ #define SCL_1() (SHT11_PxOUT |= BV(SHT11_ARCH_SCL)) /* SCL Output=1 */ - +#endif /* adr command r/w */ #define STATUS_REG_W 0x06 /* 000 0011 0 */ #define STATUS_REG_R 0x07 /* 000 0011 1 */ @@ -62,7 +72,9 @@ #define RESET 0x1e /* 000 1111 0 */ /* This can probably be reduced to 250ns according to data sheet. */ +#ifndef delay_400ns() #define delay_400ns() _NOP() +#endif /*---------------------------------------------------------------------------*/ static void sstart(void) @@ -92,6 +104,7 @@ sreset(void) SCL_1(); delay_400ns(); SCL_0(); + delay_400ns(); } sstart(); /* Start transmission, why??? */ } @@ -115,6 +128,7 @@ swrite(unsigned _c) SCL_1(); delay_400ns(); SCL_0(); + delay_400ns(); } SDA_1(); @@ -142,6 +156,7 @@ sread(int send_ack) c |= 0x1; } SCL_0(); + delay_400ns(); } if(send_ack) { @@ -202,9 +217,13 @@ sht11_init(void) * SDA 0: Output=0 * 1: Input and pull-up (Output=0) */ +#ifdef SHT11_INIT() + SHT11_INIT(); +#else SHT11_PxOUT |= BV(SHT11_ARCH_PWR); SHT11_PxOUT &= ~(BV(SHT11_ARCH_SDA) | BV(SHT11_ARCH_SCL)); SHT11_PxDIR |= BV(SHT11_ARCH_PWR) | BV(SHT11_ARCH_SCL); +#endif } /*---------------------------------------------------------------------------*/ /* @@ -213,9 +232,13 @@ sht11_init(void) void sht11_off(void) { +#ifdef SHT11_OFF() + SHT11_OFF(); +#else SHT11_PxOUT &= ~BV(SHT11_ARCH_PWR); SHT11_PxOUT &= ~(BV(SHT11_ARCH_SDA) | BV(SHT11_ARCH_SCL)); SHT11_PxDIR |= BV(SHT11_ARCH_PWR) | BV(SHT11_ARCH_SCL); +#endif } /*---------------------------------------------------------------------------*/ /* @@ -227,11 +250,13 @@ scmd(unsigned cmd) unsigned long n; if(cmd != MEASURE_HUMI && cmd != MEASURE_TEMP) { + PRINTF("Illegal command: %d\n", cmd); return -1; } sstart(); /* Start transmission */ if(!swrite(cmd)) { + PRINTF("SHT11: scmd - swrite failed\n"); goto fail; } @@ -241,6 +266,7 @@ scmd(unsigned cmd) t0 = sread(1); t1 = sread(1); rcrc = sread(0); + PRINTF("SHT11: scmd - read %d, %d\n", t0, t1); #ifdef CRC_CHECK { unsigned crc; @@ -248,6 +274,8 @@ scmd(unsigned cmd) crc = crc8_add(crc, t0); crc = crc8_add(crc, t1); if(crc != rev8bits(rcrc)) { + PRINTF("SHT11: scmd - crc check failed %d vs %d\n", + crc, rev8bits(rcrc)); goto fail; } }