a

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
bulmenwt
Date:
Wed Jan 28 07:54:53 2015 +0000
Commit message:
a

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r a1bcc4b82ad5 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jan 28 07:54:53 2015 +0000
@@ -0,0 +1,188 @@
+/*M0-BOARD LPC11U24 VERSION 1.0 WF 01_2015
+BULME Graz / Elektronik
+Autor: DI Franz Wolf
+
+RTC NXP
+PCF 8563
+
+Datei: WF_LDR_V1/main.cpp
+*/
+
+#include "mbed.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
+
+InterruptIn alarm(P1_28);
+
+DigitalOut myled1(LED1);
+ 
+Serial pc(USBTX, USBRX); // tx, rx 
+I2C i2c(p28, p27);
+
+char year, month, day, week;
+char hour, minute, sec;
+
+char hour_a, minute_a, week_a;
+ 
+
+char week_val;
+char week_chr[7][4] = {"MON","TUE","WED","THU","FRI","SAT","SUN"};
+
+//************************************  
+// write I2C
+void rtc_write(char address, char value)
+{
+    i2c.start();
+    i2c.write(RTC8563_ADR);
+    i2c.write(address);
+    i2c.write(value);
+    i2c.stop();
+}
+
+// read I2C 
+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;
+}
+
+//Zeit einstellen der RTC  
+void rtc_init()
+{
+    pc.printf("Setting up RTC\n");
+    
+    // Formatierung
+    // 2015/01/24
+    // 10:32:00 
+    
+    week_val = 0x05;   // SAT   
+    rtc_write(CONTROL1, 0x20); //stop
+    rtc_write(CONTROL2, 0x00);
+    rtc_write(YEARS, (0x15) ); 
+    rtc_write(MONTHS, (0x01));
+    rtc_write(DAYS, (0x24));
+    rtc_write(HOURS, (0x10));
+    rtc_write(MINUTES, (0x34));
+    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
+}
+//************************************  
+
+//Zeit einstellen der RTC  
+void rtc_alarm()
+{
+    pc.printf("Setting up RTC\n");
+    
+    // Formatierung
+    // 2015/01/24
+    // 10:32:00 
+    
+  //  week_val = 0x05;   // SAT   
+    rtc_write(CONTROL1, 0x20); //stop
+    rtc_write(CONTROL2, 0x0F); // alarm AF alarm flag bit
+    rtc_write(DAY_ALARM, (0x26) );
+    rtc_write(HOUR_ALARM, (0x19));
+    rtc_write(MINUTE_ALARM, (0x27));
+    rtc_write(WEEKDAY_ALARM, (0x00));
+    rtc_write(CONTROL1, 0x00); //start
+    
+    
+}
+//************************************  
+
+void push1() // Interruptfunktion alarm
+{
+pc.printf("ALARM" );    
+myled1= 1;
+}
+
+int main() {
+    
+    alarm.rise(&push1);
+    rtc_alarm();
+    
+    //RTC_init
+    //rtc_init();
+
+    pc.printf("RTC8563 CLOCK\n" );
+    wait(2.0);
+    
+    myled1= 0;
+
+    while(1) { 
+
+      //lesen der Parameter vom RTC
+        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);
+        
+
+        hour_a = rtc_read(HOUR_ALARM);
+        minute_a = rtc_read(MINUTE_ALARM);
+        week_a = rtc_read(WEEKDAY_ALARM);
+        
+        
+
+
+        
+                        
+     //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) );  
+     
+     pc.printf("ALARM RTC8563 CLOCK\n" );               
+    
+        pc.printf("%x%x:%x%x %s\n",
+            ((hour_a >> 4) & 0x03), (hour_a & 0x0F), 
+                (minute_a >> 4), (minute_a & 0x0F),
+                 week_chr[week_a & 0x07]);
+                                     
+                    
+        wait(1.0);
+    }
+}
+
+ 
diff -r 000000000000 -r a1bcc4b82ad5 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Jan 28 07:54:53 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/552587b429a1
\ No newline at end of file