![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
d
Dependencies: DebounceIn RTC-DS1307 TextLCD mbed
Fork of Rtc_Ds1307_Sample13 by
main.cpp@4:90bd2114c87b, 2018-05-05 (annotated)
- Committer:
- jclondonol
- Date:
- Sat May 05 14:24:05 2018 +0000
- Revision:
- 4:90bd2114c87b
- Parent:
- 3:9aca52e8a9ef
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
leihen | 0:431183c5b136 | 1 | #include "mbed.h" |
leihen | 0:431183c5b136 | 2 | #include "Rtc_Ds1307.h" |
jclondonol | 4:90bd2114c87b | 3 | #include "TextLCD.h" |
jclondonol | 4:90bd2114c87b | 4 | |
jclondonol | 4:90bd2114c87b | 5 | void Rx_interrupt(); |
leihen | 0:431183c5b136 | 6 | |
leihen | 2:3be003301107 | 7 | //RtcCls rtc(p28, p27, p29, true); |
tony63 | 3:9aca52e8a9ef | 8 | Rtc_Ds1307 rtc(PTE0,PTE1);//sda,scl |
jclondonol | 4:90bd2114c87b | 9 | TextLCD lcd(PTB0, PTB1, PTB2, PTB3, PTC2, PTC1); // rs, e, d4, d5, d6, d7 |
leihen | 0:431183c5b136 | 10 | Serial pc(USBTX, USBRX, "pc"); |
jclondonol | 4:90bd2114c87b | 11 | DigitalOut led1(LED1); |
jclondonol | 4:90bd2114c87b | 12 | char c; |
leihen | 0:431183c5b136 | 13 | char buffer[128]; |
leihen | 0:431183c5b136 | 14 | int readptr = 0; |
leihen | 1:6dbe51fe0737 | 15 | |
leihen | 0:431183c5b136 | 16 | int main() { |
jclondonol | 4:90bd2114c87b | 17 | |
jclondonol | 4:90bd2114c87b | 18 | pc.attach(&Rx_interrupt, Serial::RxIrq); |
leihen | 2:3be003301107 | 19 | Rtc_Ds1307::Time_rtc tm = {}; |
jclondonol | 4:90bd2114c87b | 20 | lcd.cls(); |
jclondonol | 4:90bd2114c87b | 21 | lcd.locate(0,0); |
jclondonol | 4:90bd2114c87b | 22 | lcd.printf("Time: "); |
jclondonol | 4:90bd2114c87b | 23 | lcd.locate(0,1); |
jclondonol | 4:90bd2114c87b | 24 | lcd.printf("Date: "); |
jclondonol | 4:90bd2114c87b | 25 | |
leihen | 0:431183c5b136 | 26 | |
leihen | 0:431183c5b136 | 27 | while(1) { |
jclondonol | 4:90bd2114c87b | 28 | /*pc.printf("*************************************\n"); |
leihen | 0:431183c5b136 | 29 | pc.printf("* Menu for RTC Test : *\n"); |
leihen | 0:431183c5b136 | 30 | pc.printf("* read - reads the clock *\n"); |
leihen | 0:431183c5b136 | 31 | pc.printf("* start - start the clock *\n"); |
leihen | 0:431183c5b136 | 32 | pc.printf("* stop - stop the clock *\n"); |
leihen | 1:6dbe51fe0737 | 33 | pc.printf("* write - write the clock *\n"); |
leihen | 1:6dbe51fe0737 | 34 | pc.printf("* ena - enable Square wave output *\n"); |
leihen | 1:6dbe51fe0737 | 35 | pc.printf("* dis - disable square wave outp. *\n"); |
jclondonol | 4:90bd2114c87b | 36 | pc.printf("*************************************\n");*/ |
leihen | 0:431183c5b136 | 37 | |
jclondonol | 4:90bd2114c87b | 38 | led1 = !led1; |
jclondonol | 4:90bd2114c87b | 39 | wait(1); |
jclondonol | 4:90bd2114c87b | 40 | if (rtc.getTime(tm) ) { |
jclondonol | 4:90bd2114c87b | 41 | lcd.locate(6,0); |
jclondonol | 4:90bd2114c87b | 42 | lcd.printf("%02d:%02d:%02d", tm.hour, tm.min, tm.sec); |
jclondonol | 4:90bd2114c87b | 43 | lcd.locate(6,1); |
jclondonol | 4:90bd2114c87b | 44 | lcd.printf("%02d/%02d/%04d", tm.date, tm.mon, tm.year); |
jclondonol | 4:90bd2114c87b | 45 | } |
jclondonol | 4:90bd2114c87b | 46 | |
jclondonol | 4:90bd2114c87b | 47 | |
leihen | 0:431183c5b136 | 48 | if (strncmp(buffer, "read", 4) == 0) { |
leihen | 0:431183c5b136 | 49 | // perform read |
leihen | 0:431183c5b136 | 50 | pc.printf("Performing read operation\n"); |
leihen | 0:431183c5b136 | 51 | if (rtc.getTime(tm) ) { |
leihen | 0:431183c5b136 | 52 | pc.printf("The current time is : %02d:%02d:%02d\n", tm.hour, tm.min, tm.sec); |
leihen | 1:6dbe51fe0737 | 53 | pc.printf("The current date is : %s, %02d/%02d/%04d\n", rtc.weekdayToString(tm.wday), tm.mon, tm.date, tm.year); |
leihen | 0:431183c5b136 | 54 | } |
jclondonol | 4:90bd2114c87b | 55 | buffer[0] = 'z'; |
jclondonol | 4:90bd2114c87b | 56 | } |
jclondonol | 4:90bd2114c87b | 57 | else if (strncmp(buffer, "start", 5) == 0) { |
jclondonol | 4:90bd2114c87b | 58 | // start |
jclondonol | 4:90bd2114c87b | 59 | pc.printf("Performing start operation\n"); |
jclondonol | 4:90bd2114c87b | 60 | rtc.startClock(); |
jclondonol | 4:90bd2114c87b | 61 | buffer[0] = 'z'; |
jclondonol | 4:90bd2114c87b | 62 | } |
jclondonol | 4:90bd2114c87b | 63 | else if (strncmp(buffer, "stop", 4) == 0) { |
jclondonol | 4:90bd2114c87b | 64 | // stop |
jclondonol | 4:90bd2114c87b | 65 | pc.printf("Performing stop operation\n"); |
jclondonol | 4:90bd2114c87b | 66 | rtc.stopClock(); |
jclondonol | 4:90bd2114c87b | 67 | buffer[0] = 'z'; |
jclondonol | 4:90bd2114c87b | 68 | } |
jclondonol | 4:90bd2114c87b | 69 | else if (strncmp(buffer, "ena", 3) == 0) { |
jclondonol | 4:90bd2114c87b | 70 | int rs; |
jclondonol | 4:90bd2114c87b | 71 | pc.printf("Please specify the frequency : [0 = 1Hz, 1 = 4.096kHz, 2 = 8.192kHz, 3 = 32.768kHz] "); |
jclondonol | 4:90bd2114c87b | 72 | scanf("%d", &rs); |
jclondonol | 4:90bd2114c87b | 73 | pc.printf("Enabling the output with %d option\n", rs); |
jclondonol | 4:90bd2114c87b | 74 | rtc.setSquareWaveOutput(true, (Rtc_Ds1307::SqwRateSelect_t)rs); |
jclondonol | 4:90bd2114c87b | 75 | buffer[0] = 'z'; |
jclondonol | 4:90bd2114c87b | 76 | } |
jclondonol | 4:90bd2114c87b | 77 | else if (strncmp(buffer, "dis", 3) == 0) { |
jclondonol | 4:90bd2114c87b | 78 | pc.printf("Disableing square wave output\n"); |
jclondonol | 4:90bd2114c87b | 79 | rtc.setSquareWaveOutput(false, Rtc_Ds1307::RS1Hz); |
jclondonol | 4:90bd2114c87b | 80 | buffer[0] = 'z'; |
leihen | 0:431183c5b136 | 81 | } |
leihen | 0:431183c5b136 | 82 | else if (strncmp(buffer, "write", 5) == 0) { |
leihen | 0:431183c5b136 | 83 | // perform write |
jclondonol | 4:90bd2114c87b | 84 | tm.date = ((buffer[6] - 48)*10) + (buffer[7] - 48); |
jclondonol | 4:90bd2114c87b | 85 | tm.mon = ((buffer[8] - 48)*10) + (buffer[9] - 48); |
jclondonol | 4:90bd2114c87b | 86 | tm.year = ((buffer[10] - 48)*1000) + ((buffer[11] - 48)*100) + ((buffer[12] - 48)*10) + (buffer[13] - 48); |
jclondonol | 4:90bd2114c87b | 87 | tm.hour = ((buffer[14] - 48)*10) + (buffer[15] - 48); |
jclondonol | 4:90bd2114c87b | 88 | tm.min = ((buffer[16] - 48)*10) + (buffer[17] - 48); |
jclondonol | 4:90bd2114c87b | 89 | tm.sec = ((buffer[18] - 48)*10) + (buffer[19] - 48); |
jclondonol | 4:90bd2114c87b | 90 | /*pc.printf("Enter the date (date 0..31)"); |
leihen | 1:6dbe51fe0737 | 91 | pc.scanf("%d", &tm.date); |
leihen | 1:6dbe51fe0737 | 92 | pc.printf("Enter the date (month 1..12)"); |
leihen | 1:6dbe51fe0737 | 93 | pc.scanf("%d", &tm.mon); |
leihen | 1:6dbe51fe0737 | 94 | pc.printf("Enter the date (year)"); |
leihen | 1:6dbe51fe0737 | 95 | pc.scanf("%d", &tm.year); |
leihen | 1:6dbe51fe0737 | 96 | pc.printf("Enter the time (hours 0..23)"); |
leihen | 1:6dbe51fe0737 | 97 | pc.scanf("%d", &tm.hour); |
leihen | 1:6dbe51fe0737 | 98 | pc.printf("Enter the time (minutes 0..59)"); |
leihen | 1:6dbe51fe0737 | 99 | pc.scanf("%d", &tm.min); |
leihen | 1:6dbe51fe0737 | 100 | pc.printf("Enter the time (seconds 0..59)"); |
leihen | 1:6dbe51fe0737 | 101 | pc.scanf("%d", &tm.sec); |
leihen | 0:431183c5b136 | 102 | pc.printf("Performing write operation\n"); |
leihen | 1:6dbe51fe0737 | 103 | |
jclondonol | 4:90bd2114c87b | 104 | //while(pc.readable()) |
jclondonol | 4:90bd2114c87b | 105 | // pc.getc();*/ |
leihen | 1:6dbe51fe0737 | 106 | rtc.setTime(tm, false, false); |
jclondonol | 4:90bd2114c87b | 107 | buffer[0] = 'z'; |
leihen | 0:431183c5b136 | 108 | } |
jclondonol | 4:90bd2114c87b | 109 | /*else { |
leihen | 0:431183c5b136 | 110 | pc.printf("syntax error\n"); |
leihen | 0:431183c5b136 | 111 | } |
leihen | 0:431183c5b136 | 112 | readptr = 0; |
jclondonol | 4:90bd2114c87b | 113 | pc.printf("\n\n\n");*/ |
leihen | 0:431183c5b136 | 114 | } |
leihen | 0:431183c5b136 | 115 | } |
jclondonol | 4:90bd2114c87b | 116 | |
jclondonol | 4:90bd2114c87b | 117 | |
jclondonol | 4:90bd2114c87b | 118 | |
jclondonol | 4:90bd2114c87b | 119 | void Rx_interrupt() { |
jclondonol | 4:90bd2114c87b | 120 | |
jclondonol | 4:90bd2114c87b | 121 | while( (c = pc.getc()) != '\n') { |
jclondonol | 4:90bd2114c87b | 122 | buffer[readptr++] = c; |
jclondonol | 4:90bd2114c87b | 123 | } |
jclondonol | 4:90bd2114c87b | 124 | buffer[readptr++] = 0; |
jclondonol | 4:90bd2114c87b | 125 | readptr = 0; |
jclondonol | 4:90bd2114c87b | 126 | return; |
jclondonol | 4:90bd2114c87b | 127 | } |