d

Dependencies:   DebounceIn RTC-DS1307 TextLCD mbed

Fork of Rtc_Ds1307_Sample13 by Gustavo Ramirez

Committer:
jclondonol
Date:
Sat May 05 14:24:05 2018 +0000
Revision:
4:90bd2114c87b
Parent:
3:9aca52e8a9ef
a

Who changed what in which revision?

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