RTC Lib & Output

Dependencies:   LM75B RTC8563 mbed

Revision:
1:9d545a2abf32
Parent:
0:b2c29eef3ac4
Child:
2:101ad0c50fe1
--- a/main.cpp	Wed Apr 08 14:01:45 2015 +0000
+++ b/main.cpp	Thu Apr 16 10:19:43 2015 +0000
@@ -1,154 +1,30 @@
+#include "RTC8563.h"
 #include "mbed.h"
-#include "LM75B.h"
-
-#define RTC8563_ADR 0xA2
-
-#define CONTROL1 0x00
-#define CONTROL2 0x01
-#define SECONDS 0x02
-#define MINUTES 0x03
-#define HOURS 0x04
-#define DAYS 0x05
-#define WEEKDAYS 0x06
-#define MONTHS 0x07
-#define YEARS 0x08
-#define MINUTE_ALARM 0x09
-#define HOUR_ALARM 0x0A
-#define DAY_ALARM 0x0B
-#define WEEKDAY_ALARM 0x0C
-#define CLOCKOUT_FREQ 0x0D
-#define TIMER_CINTROL 0x0E
-#define TIMER 0x0F
-#define _READ 0x01
+#include "const.h"
 
 char year, month, day, week;
 char hour, minute, sec;
 
 char week_chr[7][4] = {"MON","TUE","WED","THU","FRI","SAT","SUN"};
 
-BusOut myled(P1_13,P1_12,P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1);
-AnalogIn LDR (p16);
-
-InterruptIn sw1(P0_10);
-InterruptIn sw2(P0_15);
-InterruptIn sw3(P0_23);
-InterruptIn sw4(P1_16);
-
 Serial pc(USBTX, USBRX);
-LM75B sensor(p28, p27);
-I2C i2c(p28, p27);
-
-typedef enum state_t {menue, date, ldr, temp} state_t;
-state_t state = menue;
-
-void getNextState();
-void printTime();
-void flashLDR();
-void rtc_init();
-char rtc_read(char address);
-void rtc_write(char address, char value);
+RTC8563 rtc(p27, p28);
 
 int main()
 {
-    sensor.open();
-    rtc_init();
-
-    sw1.rise(&getNextState);
-    sw2.rise(&getNextState);
-    sw3.rise(&getNextState);
-    sw4.rise(&getNextState);
+    rtc.init(15, 4, 16, 12, 16, 0, 4);
 
     while(1) {
-        myled = 0x0000;
-        switch(state) {
-            case menue:
-                pc.printf("########### M E N U ###########");
-                pc.printf("1.Taste => Menue anzeigen\n\r");
-                pc.printf("2.Taste => Uhrzeit und Datum\n\r");
-                pc.printf("3.Taste => LDR-Wert und LED-Array\n\r");
-                pc.printf("4.Taste => Temperatur anzeigen\n\r");
-                break;
-            case date:
-                printTime();
-                break;
-            case ldr:
-                pc.printf("LDR: %f\n", LDR.read());
-                flashLDR();
-                break;
-            case temp:
-                pc.printf("Temperatur: %.1f\n\r", (float) sensor);
-                break;
-        }
-        pc.printf("##############################\n\r");
+        year = rtc.read(YEARS);
+        month = rtc.read(MONTHS);
+        day = rtc.read(DAYS);
+        week = rtc.read(WEEKDAYS);
+        hour = rtc.read(HOURS);
+        minute = rtc.read(MINUTES);
+        sec = rtc.read(SECONDS);
+
+        pc.printf("20%d/%02d/%02d %s\n", year, month, day, week_chr[week]); // Date
+        pc.printf("%02d:%02d:%02d\n", hour, minute, sec); // Time
         wait(0.2);
     }
 }
-
-void flashLDR()
-{
-    for(float w = 0; w < 0.6; w+=0.05)
-        if(LDR>=w)
-            myled = (myled << 1) + 1;
-}
-
-void getNextState()
-{
-    if(sw1) state = menue;
-    else if(sw2) state = date;
-    else if(sw3) state = ldr;
-    else if (sw4) state = temp;
-}
-
-void printTime()
-{
-    year = rtc_read(YEARS);
-    month = rtc_read(MONTHS);
-    day = rtc_read(DAYS);
-    week = rtc_read(WEEKDAYS);
-    hour = rtc_read(HOURS);
-    minute = rtc_read(MINUTES);
-    sec = rtc_read(SECONDS);
-
-    pc.printf("20%d/%02d/%02d %s\n", year, month, day, week_chr[week]); // Date
-    pc.printf("%02d:%02d:%02d\n", hour, minute, sec); // Time
-}
-
-void rtc_init()
-{
-    pc.printf("RTC-Setup...");
-
-    rtc_write(CONTROL1, 0x20); //stop
-    rtc_write(CONTROL2, 0x00);
-    rtc_write(YEARS, 15);
-    rtc_write(MONTHS,3);
-    rtc_write(DAYS, 13);
-    rtc_write(HOURS, 21);
-    rtc_write(MINUTES, 7);
-    rtc_write(SECONDS, 0);
-    rtc_write(WEEKDAYS, 5);
-    rtc_write(CLOCKOUT_FREQ, 0x00); // 0x83 = TE on & 1Hz
-    rtc_write(TIMER_CINTROL, 0x00);
-    rtc_write(CONTROL1, 0x00); //start
-}
-
-char rtc_read(char address)
-{
-    char value;
-    i2c.start();
-    i2c.write(RTC8563_ADR);
-    i2c.write(address);
-    i2c.start();
-    i2c.write(RTC8563_ADR | _READ);
-    value = i2c.read(0);
-    i2c.stop();
-
-    return value;
-}
-void rtc_write(char address, char value)
-{
-    i2c.start();
-    i2c.write(RTC8563_ADR);
-    i2c.write(address);
-    i2c.write(value);
-    i2c.stop();
-}