rtc_class

Dependencies:   RTC8563 mbed

Fork of rtc_class by HIMBED_3AHELI

Revision:
2:f75062350241
Parent:
1:554eb6675279
Child:
3:c6081814064d
--- a/main.cpp	Wed Apr 15 07:15:25 2015 +0000
+++ b/main.cpp	Thu Apr 16 10:25:33 2015 +0000
@@ -9,153 +9,46 @@
     programed by Franz Wolf (wf@bulme.at) 
 ***********************************/
 #include "mbed.h"
-
-// Symbolic constants
-#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
-
-// Wiring
+#include "const.h"
+#include "RTC8563.h"
+#include "string"
+ 
 Serial pc(USBTX, USBRX);
-I2C i2c(p28, p27);
-
-InterruptIn alarm(P1_28);
-
-DigitalOut myled1(LED1); 
-DigitalOut myled2(LED2);
-
-// Function prototyping
-void printTime();
-void rtc_init();
-char rtc_read(char address);
-void rtc_write(char address, char value);
-
-// Global variables
-char year, month, day, week;
-char hour, minute, sec;
-
-char week_val;
+//I2C i2c(p28, p27);
+ 
+uint8_t year, month, day, week;
+uint8_t hour, minute, sec;
 char week_chr[7][4] = {"MON","TUE","WED","THU","FRI","SAT","SUN"};
-
-// Functiondefinitions
-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);
-
-    //Datum Ausgabe
-    pc.printf("20%x%x/%x%x/%x%x %s\n",
-              ((year >> 4) & 0x03) , (year & 0x0F) ,
-              ((month >> 4) & 0x01), (month & 0x0F) ,
-              ((day >> 4) & 0x03), (day & 0x0F) ,
-              week_chr[week & 0x07]);
-
-    //Zeit Ausgabe
-    pc.printf("%x%x:%x%x:%x%x\n",
-              ((hour >> 4) & 0x03), (hour & 0x0F),
-              (minute >> 4), (minute & 0x0F) ,
-              (sec >> 4), (sec & 0x0F) );
-}
-
-void rtc_init()
-{
-    pc.printf("Setting up RTC\n");
-
-    // Formatierung
-    // 2015/01/24
-    // 10:32:00
-
-    week_val = 0x04;   // SAT
-    rtc_write(CONTROL1, 0x20); //stop
-    rtc_write(CONTROL2, 0x00);
-    rtc_write(YEARS, (0x15));
-    rtc_write(MONTHS, (0x03));
-    rtc_write(DAYS, (0x13));
-    rtc_write(HOURS, (0x14));
-    rtc_write(MINUTES, (0x47));
-    rtc_write(SECONDS, (0x00));
-    rtc_write(WEEKDAYS, week_val);
-    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();
-}
-
-void rtc_alarm()
-{
-    pc.printf("Setting up RTC\n");
-    // Formatierung
-    // 2015/01/24
-    // 17:02:00 MON
-
-    // week_val = 0x05; // SAT
-    rtc_write(CONTROL1, 0x20); //stop
-    rtc_write(CONTROL2, 0x02); // alarm AF alarm flag bit
-    rtc_write(DAY_ALARM, (0x80) );
-    rtc_write(HOUR_ALARM, (0x97));
-    rtc_write(MINUTE_ALARM, (0x02));
-    rtc_write(WEEKDAY_ALARM, (0x80));
-    rtc_write(CONTROL1, 0x00); //start
-}
-//************************************
-void push1() // Interruptfunktion alarm
-{
-    pc.printf("********\n" );
-    pc.printf("ALARM\n" );
-    pc.printf("********\n" );
-    myled1= 1;
-}
-
-
-// main program
+ 
 int main()
 {
-    rtc_init();
-    alarm.fall(&push1);
-    rtc_alarm();
+    RTC8563 rtc;  // instanziieren des Objektes rtc
+ 
+    pc.printf("Setting up RTC\n");
+    //rtc.rtc_init();
+ 
     while(1) {
-        printTime();
+        //printTime();           
+        year = rtc.rtc_read(YEARS);   // Aufruf der Methode rtc_read der Instanz (Objekt) rtc
+        month = rtc.rtc_read(MONTHS);
+        day = rtc.rtc_read(DAYS);
+        week = rtc.rtc_read(WEEKDAYS);
+        hour = rtc.rtc_read(HOURS);
+        minute = rtc.rtc_read(MINUTES);
+        sec = rtc.rtc_read(SECONDS);
+ 
+        //Datum Ausgabe
+        pc.printf("20%x%x/%x%x/%x%x %s\n",
+                  ((year >> 4) & 0x03) , (year & 0x0F) ,
+                  ((month >> 4) & 0x01), (month & 0x0F) ,
+                  ((day >> 4) & 0x03), (day & 0x0F) ,
+                  week_chr[week & 0x07]);
+ 
+        //Zeit Ausgabe
+        pc.printf("%x%x:%x%x:%x%x\n",
+                  ((hour >> 4) & 0x03), (hour & 0x0F),
+                  (minute >> 4), (minute & 0x0F) ,
+                  (sec >> 4), (sec & 0x0F) );
         wait(1);
     }
-}
+}
\ No newline at end of file