Errol Burrow
/
HelloWorldSerial
Simple Serial Hello World with RTC clock sync to PC capability
main.cpp@0:ac9d7acfd1f5, 2010-04-06 (annotated)
- Committer:
- eburrow
- Date:
- Tue Apr 06 20:08:35 2010 +0000
- Revision:
- 0:ac9d7acfd1f5
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eburrow | 0:ac9d7acfd1f5 | 1 | #include "mbed.h" |
eburrow | 0:ac9d7acfd1f5 | 2 | |
eburrow | 0:ac9d7acfd1f5 | 3 | DigitalOut myled(LED1); |
eburrow | 0:ac9d7acfd1f5 | 4 | |
eburrow | 0:ac9d7acfd1f5 | 5 | Serial pc(USBTX,USBRX); |
eburrow | 0:ac9d7acfd1f5 | 6 | |
eburrow | 0:ac9d7acfd1f5 | 7 | |
eburrow | 0:ac9d7acfd1f5 | 8 | bool clock_set = 0; |
eburrow | 0:ac9d7acfd1f5 | 9 | time_t read_time = 0; |
eburrow | 0:ac9d7acfd1f5 | 10 | time_t seconds; |
eburrow | 0:ac9d7acfd1f5 | 11 | |
eburrow | 0:ac9d7acfd1f5 | 12 | int main() { |
eburrow | 0:ac9d7acfd1f5 | 13 | |
eburrow | 0:ac9d7acfd1f5 | 14 | pc.baud(9600); |
eburrow | 0:ac9d7acfd1f5 | 15 | |
eburrow | 0:ac9d7acfd1f5 | 16 | while (1) { |
eburrow | 0:ac9d7acfd1f5 | 17 | |
eburrow | 0:ac9d7acfd1f5 | 18 | // have we set our clock yet? |
eburrow | 0:ac9d7acfd1f5 | 19 | if (clock_set == 0) { |
eburrow | 0:ac9d7acfd1f5 | 20 | // try to request the time |
eburrow | 0:ac9d7acfd1f5 | 21 | pc.printf("epoch\n\r"); |
eburrow | 0:ac9d7acfd1f5 | 22 | // wait a bit |
eburrow | 0:ac9d7acfd1f5 | 23 | wait(0.1); |
eburrow | 0:ac9d7acfd1f5 | 24 | // try to read a long int |
eburrow | 0:ac9d7acfd1f5 | 25 | if (pc.readable()) { |
eburrow | 0:ac9d7acfd1f5 | 26 | scanf("%d",&read_time); |
eburrow | 0:ac9d7acfd1f5 | 27 | if (read_time > 0) { |
eburrow | 0:ac9d7acfd1f5 | 28 | // set the time |
eburrow | 0:ac9d7acfd1f5 | 29 | pc.printf("time value read: %u\r\n",read_time); |
eburrow | 0:ac9d7acfd1f5 | 30 | set_time(read_time); |
eburrow | 0:ac9d7acfd1f5 | 31 | wait(0.2); |
eburrow | 0:ac9d7acfd1f5 | 32 | clock_set = 1; |
eburrow | 0:ac9d7acfd1f5 | 33 | } else { |
eburrow | 0:ac9d7acfd1f5 | 34 | // delay longer and try again |
eburrow | 0:ac9d7acfd1f5 | 35 | wait(4); |
eburrow | 0:ac9d7acfd1f5 | 36 | } |
eburrow | 0:ac9d7acfd1f5 | 37 | } else{ |
eburrow | 0:ac9d7acfd1f5 | 38 | wait (0.1); |
eburrow | 0:ac9d7acfd1f5 | 39 | } |
eburrow | 0:ac9d7acfd1f5 | 40 | } else { |
eburrow | 0:ac9d7acfd1f5 | 41 | // display time |
eburrow | 0:ac9d7acfd1f5 | 42 | //seconds = time(NULL); |
eburrow | 0:ac9d7acfd1f5 | 43 | //struct tm *t = localtime(&seconds); |
eburrow | 0:ac9d7acfd1f5 | 44 | //pc.printf("%04d-%02d-%02d %02d:%02d:%02d UTC\r\n",(t->tm_year+1900),(t->tm_mon+1),t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec); |
eburrow | 0:ac9d7acfd1f5 | 45 | // delay 5 seconds |
eburrow | 0:ac9d7acfd1f5 | 46 | //wait(1); |
eburrow | 0:ac9d7acfd1f5 | 47 | ;; |
eburrow | 0:ac9d7acfd1f5 | 48 | } |
eburrow | 0:ac9d7acfd1f5 | 49 | |
eburrow | 0:ac9d7acfd1f5 | 50 | myled = !myled; |
eburrow | 0:ac9d7acfd1f5 | 51 | //wait(0.2); |
eburrow | 0:ac9d7acfd1f5 | 52 | //pc.printf("Hello World\r\n"); |
eburrow | 0:ac9d7acfd1f5 | 53 | |
eburrow | 0:ac9d7acfd1f5 | 54 | seconds = time(NULL); |
eburrow | 0:ac9d7acfd1f5 | 55 | struct tm *t = localtime(&seconds); |
eburrow | 0:ac9d7acfd1f5 | 56 | pc.printf("%04d-%02d-%02d %02d:%02d:%02d UTC\r\n",(t->tm_year+1900),(t->tm_mon+1),t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec); |
eburrow | 0:ac9d7acfd1f5 | 57 | wait(1); |
eburrow | 0:ac9d7acfd1f5 | 58 | |
eburrow | 0:ac9d7acfd1f5 | 59 | |
eburrow | 0:ac9d7acfd1f5 | 60 | } |
eburrow | 0:ac9d7acfd1f5 | 61 | |
eburrow | 0:ac9d7acfd1f5 | 62 | } |
eburrow | 0:ac9d7acfd1f5 | 63 | |
eburrow | 0:ac9d7acfd1f5 | 64 |