pwm period is now 200us instead of the default 20ms veml6040 config is now AF_BIT | TRIG_BIT
Dependencies: mbed MMA8451Q USBDevice WakeUp vt100
Fork of afero_node_suntory_2017_06_15 by
RTC_Handler.cpp
00001 #include "RTC_Handler.h" 00002 00003 static RTC_Handler *self = NULL; 00004 00005 RTC_Handler* RTC_Handler::getInstance() 00006 { 00007 return self != NULL ? self : self = new RTC_Handler(); 00008 } 00009 00010 #if defined (TARGET_KL25Z) 00011 00012 #define RTC8564NB_ADR 0xA2 00013 00014 #define CONTROL1 0x00 00015 #define CONTROL2 0x01 00016 #define SECONDS 0x02 00017 #define MINUTES 0x03 00018 #define HOURS 0x04 00019 #define DAYS 0x05 00020 #define WEEKDAYS 0x06 00021 #define MONTHS 0x07 00022 #define YEARS 0x08 00023 #define MINUTE_ALARM 0x09 00024 #define HOUR_ALARM 0x0A 00025 #define DAY_ALARM 0x0B 00026 #define WEEKDAY_ALARM 0x0C 00027 #define CLOCKOUT_FREQ 0x0D 00028 #define TIMER_CONTROL 0x0E 00029 #define TIMER 0x0F 00030 #define _READ 0x01 00031 #define JST_TO_UTC_DELTA (9*60*60) 00032 00033 00034 RTC_Handler::RTC_Handler() : i2c(PTE0, PTE1) 00035 { 00036 } 00037 00038 char 00039 RTC_Handler::read(char address) 00040 { 00041 char value; 00042 i2c.start(); 00043 i2c.write(RTC8564NB_ADR); 00044 i2c.write(address); 00045 i2c.start(); 00046 i2c.write(RTC8564NB_ADR | _READ); 00047 value = i2c.read(0); 00048 i2c.stop(); 00049 return value; 00050 } 00051 00052 void 00053 RTC_Handler::write(char address, char value) 00054 { 00055 i2c.start(); 00056 i2c.write(RTC8564NB_ADR); 00057 i2c.write(address); 00058 i2c.write(value); 00059 i2c.stop(); 00060 } 00061 00062 void 00063 RTC_Handler::set(char y[3], char m[3], char d[3], char h[3], char min[3], char s[3]) 00064 { 00065 write(CONTROL1, 0x20); //stop 00066 write(CONTROL2, 0x00); 00067 write(YEARS, ((y[0]-0x30)<<4)+(y[1]-0x30)); 00068 write(MONTHS, ((m[0]-0x30)<<4)+(m[1]-0x30)); 00069 write(DAYS, ((d[0]-0x30)<<4)+(d[1]-0x30)); 00070 write(HOURS, ((h[0]-0x30)<<4)+(h[1]-0x30)); 00071 write(MINUTES, ((min[0]-0x30)<<4)+(min[1]-0x30)); 00072 write(SECONDS, ((s[0]-0x30)<<4)+(s[1]-0x30)); 00073 // write(WEEKDAYS, week_val[0] - 0x30); //Sunday = "0", Monday = "1" ... 00074 write(CLOCKOUT_FREQ, 0x00); // 0x83 = TE on & 1Hz 00075 write(TIMER_CONTROL, 0x00); 00076 write(CONTROL1, 0x00); //start 00077 return; 00078 } 00079 00080 void 00081 RTC_Handler::setUTC(time_t t) 00082 { 00083 struct tm *date; 00084 char str[32]; 00085 memset(str,'\0',sizeof(str)); 00086 //timer = time(NULL); 00087 //t -= JST_TO_UTC_DELTA; //make local time UTC 00088 date = localtime(&t); 00089 strftime(str, 255, "%y%m%d%H%M%S", date); 00090 //printf("%s\n", str); 00091 set(&str[0],&str[2],&str[4],&str[6],&str[8],&str[10]); 00092 } 00093 00094 time_t 00095 RTC_Handler::getUTC() 00096 { 00097 int year = read(YEARS); 00098 int mon = read(MONTHS); 00099 int day = read(DAYS); 00100 int week = read(WEEKDAYS); 00101 int hour = read(HOURS); 00102 int min = read(MINUTES); 00103 int sec = read(SECONDS); 00104 00105 year = ((year >> 4) & 0x03) * 10 + (year & 0x0F) + 2000; 00106 mon = ((mon >> 4) & 0x01) * 10 + (mon & 0x0F); 00107 day = ((day >> 4) & 0x03) * 10 + (day & 0x0F); 00108 hour = ((hour >> 4) & 0x03) * 10 + (hour & 0x0F); 00109 min = ((min >> 4) & 0x07) * 10 + (min & 0x0F); 00110 sec = ((sec >> 4) & 0x07) * 10 + (sec & 0x0F); 00111 00112 struct tm strtim; 00113 time_t ret; 00114 memset(( void * )&strtim , '\0' , sizeof( strtim )); 00115 strtim.tm_year = year-1900; /* 年[1900年から起算] */ 00116 strtim.tm_mon = mon-1; /* 月[0-11] */ 00117 strtim.tm_mday = day; /* 日[1-31] */ 00118 strtim.tm_hour = hour ;/* 時[0-23] */ 00119 strtim.tm_min = min ;/* 分[0-59] */ 00120 strtim.tm_sec = sec; /* 秒[0-61]閏秒考慮 */ 00121 00122 /* 日付補完 */ 00123 ret = mktime( &strtim ); 00124 if( ret == -1 ) { 00125 printf( "mmktime error\n" ); 00126 } 00127 00128 return ret; 00129 } 00130 #elif defined (TARGET_TEENSY3_1) 00131 00132 RTC_Handler::RTC_Handler() 00133 { 00134 } 00135 00136 void 00137 RTC_Handler::setUTC(time_t t) 00138 { 00139 set_time(t); 00140 } 00141 00142 time_t 00143 RTC_Handler::getUTC() 00144 { 00145 return time(NULL); 00146 } 00147 00148 #endif
Generated on Thu Jul 14 2022 06:24:36 by 1.7.2