Mercurial > ~darius > hgwebdir.cgi > stm32temp
diff main.c @ 13:96c345d304af
Add 1wire code.
1wire.c, 1wire.h and 1wire-config.h are copied avr-lib.
author | Daniel O'Connor <darius@dons.net.au> |
---|---|
date | Wed, 08 Feb 2012 10:37:22 +1030 |
parents | 093bc0c3b1cc |
children | db6011aa94d6 |
line wrap: on
line diff
--- a/main.c Mon Feb 06 23:55:53 2012 +1030 +++ b/main.c Wed Feb 08 10:37:22 2012 +1030 @@ -9,6 +9,7 @@ #include "stm32f10x.h" +#include "1wire.h" #include "comm.h" #include "delay.h" #include "flash.h" @@ -243,6 +244,72 @@ GPIO_ResetBits(GPIOE, GPIO_Pin_3); _usleep16(60000); } + } else if (!strncmp("rs", cmd.buf, 2)) { + printf("Reset got %d\r\n", OWTouchReset()); + } else if (!strncmp("sr", cmd.buf, 2)) { + uint8_t ROM[8]; + int8_t i; + + memset(ROM, 0, 8); + + i = OWFirst(ROM, 1, 0); + do { + switch (i) { + case OW_NOMODULES: + case OW_FOUND: + break; + + case OW_BADWIRE: + case OW_NOPRESENCE: + case OW_BADCRC: + default: + printf("Err %d\r\n", i); + break; + } + + if (i != OW_FOUND) + break; + + for (i = 0; i < 8; i++) + printf("%02x%s", ROM[i], i == 7 ? "\r\n" : ":"); + + i = OWNext(ROM, 1, 0); + } while (1); + } else if (!strncmp("rb", cmd.buf, 2)) { + printf("Read bit returned %d\r\n", OWReadBit()); + } else if (!strncmp("wb ", cmd.buf, 3)) { + x = atoi(cmd.buf + 3); + OWWriteBit(x); + printf("Wrote %d\r\n", x); + } else if (!strncasecmp(cmd.buf, "te ", 3)) { + uint8_t ROM[8]; + int16_t res; + + if (sscanf(cmd.buf, "te %hhx:%hhx:%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", + &ROM[0], &ROM[1], &ROM[2], &ROM[3], + &ROM[4], &ROM[5], &ROM[6], &ROM[7]) != 8) { + printf("Unable to parse ROM ID\r\n"); + goto out; + } + + res = OWGetTemp(ROM); + switch (res) { + case OW_TEMP_WRONG_FAM: + printf("ROM specified isn't a temperature sensor\r\n"); + break; + + case OW_TEMP_CRC_ERR: + printf("CRC mismatch\r\n"); + break; + + case OW_TEMP_NO_ROM: + printf("No ROM found\r\n"); + break; + + default: + printf("%hd.%02hd\r\n", GETWHOLE(res), GETFRAC(res)); + break; + } } else if (!strncmp("zz", cmd.buf, 2)) { NVIC_SystemReset(); } else {