Simple Serial Hello World with RTC clock sync to PC capability

Dependencies:   mbed

Committer:
eburrow
Date:
Tue Apr 06 20:08:35 2010 +0000
Revision:
0:ac9d7acfd1f5

        

Who changed what in which revision?

UserRevisionLine numberNew 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