testing app for DS1307 RTC and 1-wire driver for DS8B20

Dependencies:   DS1307 OneWire mbed

Committer:
alpov
Date:
Mon Apr 28 07:34:00 2014 +0000
Revision:
0:711e5c134396
testing app for DS1307 RTC and 1-wire driver for DS18B20

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alpov 0:711e5c134396 1 #include "mbed.h"
alpov 0:711e5c134396 2 #include "DS1307.h"
alpov 0:711e5c134396 3 #include "1wire.h"
alpov 0:711e5c134396 4
alpov 0:711e5c134396 5 DS1307 rtc(PTE0, PTE1);
alpov 0:711e5c134396 6 OneWire ow(A4, A2, A3);
alpov 0:711e5c134396 7
alpov 0:711e5c134396 8 Serial pc(USBTX, USBRX, "pc");
alpov 0:711e5c134396 9
alpov 0:711e5c134396 10
alpov 0:711e5c134396 11 int main()
alpov 0:711e5c134396 12 {
alpov 0:711e5c134396 13 Timer t;
alpov 0:711e5c134396 14 char c;
alpov 0:711e5c134396 15
alpov 0:711e5c134396 16 pc.printf("\n\n\n\n*************************************\n");
alpov 0:711e5c134396 17 pc.printf("* r - reads the clock\n");
alpov 0:711e5c134396 18 pc.printf("* w - write the clock\n");
alpov 0:711e5c134396 19 pc.printf("* c - convert temperatures\n");
alpov 0:711e5c134396 20 pc.printf("* t - search 1wire and list read temperatures\n");
alpov 0:711e5c134396 21 pc.printf("*************************************\n\n");
alpov 0:711e5c134396 22
alpov 0:711e5c134396 23 while (1)
alpov 0:711e5c134396 24 {
alpov 0:711e5c134396 25 c = pc.getc();
alpov 0:711e5c134396 26 if (c == 'r') {
alpov 0:711e5c134396 27 // perform read
alpov 0:711e5c134396 28 t.reset();
alpov 0:711e5c134396 29 t.start();
alpov 0:711e5c134396 30 time_t m_time = rtc.now();
alpov 0:711e5c134396 31 t.stop();
alpov 0:711e5c134396 32
alpov 0:711e5c134396 33 struct tm *now;
alpov 0:711e5c134396 34 now = localtime(&m_time);
alpov 0:711e5c134396 35
alpov 0:711e5c134396 36 pc.printf("Current time is %lu, %02d:%02d:%02d, %d.%d.%04d\n",
alpov 0:711e5c134396 37 m_time,
alpov 0:711e5c134396 38 now->tm_hour, now->tm_min, now->tm_sec,
alpov 0:711e5c134396 39 now->tm_mday, now->tm_mon+1, now->tm_year+1900
alpov 0:711e5c134396 40 );
alpov 0:711e5c134396 41 pc.printf("Internal datetime format is %s\n", asctime(now));
alpov 0:711e5c134396 42 pc.printf("Read complete, elapsed %uus\n", t.read_us());
alpov 0:711e5c134396 43
alpov 0:711e5c134396 44 }
alpov 0:711e5c134396 45 else if (c == 'w') {
alpov 0:711e5c134396 46 // perform write
alpov 0:711e5c134396 47 int date, month, year, hours, minutes, seconds;
alpov 0:711e5c134396 48 pc.printf("Enter the date (date 1..31)\n"); pc.scanf("%d", &date);
alpov 0:711e5c134396 49 pc.printf("Enter the date (month 1..12)\n"); pc.scanf("%d", &month);
alpov 0:711e5c134396 50 pc.printf("Enter the date (year >2000)\n"); pc.scanf("%d", &year);
alpov 0:711e5c134396 51 pc.printf("Enter the time (hours 0..23)\n"); pc.scanf("%d", &hours);
alpov 0:711e5c134396 52 pc.printf("Enter the time (minutes 0..59)\n"); pc.scanf("%d", &minutes);
alpov 0:711e5c134396 53 pc.printf("Enter the time (seconds 0..59)\n"); pc.scanf("%d", &seconds);
alpov 0:711e5c134396 54
alpov 0:711e5c134396 55 struct tm now = {seconds, minutes, hours, date, month-1, year-1900};
alpov 0:711e5c134396 56 time_t m_time = mktime(&now);
alpov 0:711e5c134396 57
alpov 0:711e5c134396 58 t.reset();
alpov 0:711e5c134396 59 t.start();
alpov 0:711e5c134396 60 bool b = rtc.set_time(m_time);
alpov 0:711e5c134396 61 t.stop();
alpov 0:711e5c134396 62
alpov 0:711e5c134396 63 pc.printf("Write complete (UNIX %lu, result %d), elapsed %uus\n", m_time, b, t.read_us());
alpov 0:711e5c134396 64 }
alpov 0:711e5c134396 65 else if (c == 'c') {
alpov 0:711e5c134396 66 ow.ConvertAll(true);
alpov 0:711e5c134396 67 pc.printf("Convert done\n");
alpov 0:711e5c134396 68 }
alpov 0:711e5c134396 69 else if (c == 't') {
alpov 0:711e5c134396 70 int result, temp;
alpov 0:711e5c134396 71 uint8_t rom[8];
alpov 0:711e5c134396 72
alpov 0:711e5c134396 73 memset(rom, 0, sizeof(rom));
alpov 0:711e5c134396 74 result = ow.First(rom);
alpov 0:711e5c134396 75 while (result == OW_FOUND) {
alpov 0:711e5c134396 76 for (int i = 0; i < 8; i++) pc.printf("%.2X", rom[i]);
alpov 0:711e5c134396 77
alpov 0:711e5c134396 78 t.reset();
alpov 0:711e5c134396 79 t.start();
alpov 0:711e5c134396 80 int b = ow.ReadTemperature(rom, &temp);
alpov 0:711e5c134396 81 t.stop();
alpov 0:711e5c134396 82 if (b) pc.printf(": read failed, code 0x%.4x, elapsed %uus\n", b, t.read_us());
alpov 0:711e5c134396 83 else pc.printf(": read ok, temperature %.2f'C, elapsed %uus\n", temp / 100., t.read_us());
alpov 0:711e5c134396 84
alpov 0:711e5c134396 85 result = ow.Next(rom);
alpov 0:711e5c134396 86 }
alpov 0:711e5c134396 87 pc.printf("Done\n");
alpov 0:711e5c134396 88 }
alpov 0:711e5c134396 89 else {
alpov 0:711e5c134396 90 pc.printf("Syntax error\n");
alpov 0:711e5c134396 91 }
alpov 0:711e5c134396 92 pc.printf("\n");
alpov 0:711e5c134396 93 }
alpov 0:711e5c134396 94 }