| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /*
- * RTC.c
- *
- * Created on: 15 janv. 2019
- * Author: e_rcluze
- */
- #include "RTC.h"
- #include "i2c.h"
- void readHeure(Heure *heure){
- uint8_t tab[2];
- readRTC(MINUTES,tab,2);
- heure->minute = (((tab[0]&0x70)>>4)*10)+(tab[0]&0X0F);
- heure->heure = (((tab[1]&0X30)>>4)*10)+(tab[1]&0X0F);
- }
- void readDate(Date *date){
- uint8_t tab[7];
- readRTC(SECOND,tab,7);
- //uint8_t sec10 = (((tab[0]&0X70)>>4)*10);
- //uint8_t sec = tab[0]&0X0F;
- date->second=(((tab[0]&0X70)>>4)*10)+(tab[0]&0X0F);
- date->minute=(((tab[1]&0x70)>>4)*10)+(tab[1]&0X0F);
- date->heure=(((tab[2]&0X30)>>4)*10)+(tab[2]&0X0F);
- date->jour=(((tab[4]&0X30)>>4)*10)+(tab[4]&0X0F);
- date->mois=(((tab[5]&0X10)>>4)*10)+(tab[5]&0X0F);
- date->annee=((tab[6]>>4)*10)+(tab[6]&0X0F);
- }
- void WriteDate(Date *date){
- uint8_t tab[7];
- tab[0]=((date->second/10)<<4) + (date->second%10);
- tab[1]=((date->minute/10)<<4) + (date->minute%10);
- tab[2]=((date->heure/10)<<4) + (date->heure%10);
- tab[3]=date->joursemaine;
- tab[4]=((date->jour/10)<<4) + (date->jour%10);
- tab[5]=((date->mois/10)<<4) + (date->mois%10);
- tab[6]=((date->annee/10)<<4) + (date->annee%10);
- writeRTC(SECOND,tab,7);
- }
- void redemareRTC(){
- uint8_t pt[1];
- readRTC(ALARM_HOURS,pt,1);
- pt[0]=pt[0]&!0x40;
- writeRTC(ALARM_HOURS,pt,1);
- }
- void testRTC(){
- Date d;
- d.annee=2020;
- d.mois=1;
- d.jour=20;
- d.joursemaine=1;
- d.heure=14;
- d.minute=0;
- d.second=0;
- writeDate(&d);
- redemareRTC();
- HAL_Delay(2000);
- readDate(d);
- HAL_Delay(1);
- }
- void testBatteryRTC(){
- redemareRTC();
- Date d;
- readDate(d);
- HAL_Delay(1);
- }
|