1-Wire implementation, using DS2480B controller interfaced with serial port, working example to read DS18B20, based on work already in progress / Dallas - Public domain code
main.cpp@0:1193dbfe28e2, 2011-03-24 (annotated)
- Committer:
- pwheels
- Date:
- Thu Mar 24 17:21:29 2011 +0000
- Revision:
- 0:1193dbfe28e2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pwheels | 0:1193dbfe28e2 | 1 | #include "mbed.h" |
pwheels | 0:1193dbfe28e2 | 2 | #include "ds2480.h" |
pwheels | 0:1193dbfe28e2 | 3 | #include "ownet.h" |
pwheels | 0:1193dbfe28e2 | 4 | #include "readDS18B20.h" |
pwheels | 0:1193dbfe28e2 | 5 | #include "findtype.h" |
pwheels | 0:1193dbfe28e2 | 6 | |
pwheels | 0:1193dbfe28e2 | 7 | DigitalOut led1(LED1); |
pwheels | 0:1193dbfe28e2 | 8 | DigitalOut led2(LED2); |
pwheels | 0:1193dbfe28e2 | 9 | |
pwheels | 0:1193dbfe28e2 | 10 | // defines |
pwheels | 0:1193dbfe28e2 | 11 | #define MAXDEVICES 20 |
pwheels | 0:1193dbfe28e2 | 12 | // global serial numbers |
pwheels | 0:1193dbfe28e2 | 13 | uchar FamilySN1[MAXDEVICES][8]; |
pwheels | 0:1193dbfe28e2 | 14 | |
pwheels | 0:1193dbfe28e2 | 15 | int main() { |
pwheels | 0:1193dbfe28e2 | 16 | |
pwheels | 0:1193dbfe28e2 | 17 | float temp = 0; |
pwheels | 0:1193dbfe28e2 | 18 | int NumDevices = 0; |
pwheels | 0:1193dbfe28e2 | 19 | |
pwheels | 0:1193dbfe28e2 | 20 | if ( DS2480Detect(3) ) { |
pwheels | 0:1193dbfe28e2 | 21 | |
pwheels | 0:1193dbfe28e2 | 22 | NumDevices = FindDevices(3, &FamilySN1[0], 0x10, MAXDEVICES); |
pwheels | 0:1193dbfe28e2 | 23 | |
pwheels | 0:1193dbfe28e2 | 24 | printf("dev: %d\r\n", NumDevices); |
pwheels | 0:1193dbfe28e2 | 25 | printf("sn: "); |
pwheels | 0:1193dbfe28e2 | 26 | PrintSerialNum(FamilySN1[0]); |
pwheels | 0:1193dbfe28e2 | 27 | printf("\r\n"); |
pwheels | 0:1193dbfe28e2 | 28 | led1 = 0; |
pwheels | 0:1193dbfe28e2 | 29 | while(1) { |
pwheels | 0:1193dbfe28e2 | 30 | |
pwheels | 0:1193dbfe28e2 | 31 | if (ReadDS18B20(3, FamilySN1[0],&temp)) { |
pwheels | 0:1193dbfe28e2 | 32 | printf(" %7.3f %cC\r\n", temp, 0xf8); |
pwheels | 0:1193dbfe28e2 | 33 | } else { |
pwheels | 0:1193dbfe28e2 | 34 | printf(" Error, reading temperature\r\n"); |
pwheels | 0:1193dbfe28e2 | 35 | } |
pwheels | 0:1193dbfe28e2 | 36 | |
pwheels | 0:1193dbfe28e2 | 37 | led1 != led1; |
pwheels | 0:1193dbfe28e2 | 38 | wait(1); |
pwheels | 0:1193dbfe28e2 | 39 | } |
pwheels | 0:1193dbfe28e2 | 40 | } else { |
pwheels | 0:1193dbfe28e2 | 41 | printf(" Error, no DS2480 controller found\r\n"); |
pwheels | 0:1193dbfe28e2 | 42 | } |
pwheels | 0:1193dbfe28e2 | 43 | } |