RTC.c 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * RTC.c
  3. *
  4. * Created on: 15 janv. 2019
  5. * Author: e_rcluze
  6. */
  7. #include "RTC.h"
  8. void readHeure(Heure *heure){
  9. uint8_t tab[2];
  10. readRTC(MINUTES,tab,2);
  11. heure->minute = (((tab[0]&0x70)>>4)*10)+(tab[0]&0X0F);
  12. heure->heure = (((tab[1]&0X30)>>4)*10)+(tab[1]&0X0F);
  13. }
  14. void readDate(Date *date){
  15. uint8_t tab[7];
  16. readRTC(SECOND,tab,7);
  17. date->second=(((tab[0]&0X70)>>4)*10)+(tab[0]&0X0F);
  18. date->minute=(((tab[1]&0x70)>>4)*10)+(tab[1]&0X0F);
  19. date->heure=(((tab[2]&0X30)>>4)*10)+(tab[2]&0X0F);
  20. date->jour=(((tab[4]&0X30)>>4)*10)+(tab[4]&0X0F);
  21. date->mois=(((tab[5]&0X10)>>4)*10)+(tab[5]&0X0F);
  22. date->annee=((tab[6]>>4)*10)+(tab[6]&0X0F);
  23. }
  24. void WriteDate(Date *date){
  25. uint8_t tab[7];
  26. tab[0]=((date->second/10)<<4) + (date->second%10);
  27. tab[1]=((date->minute/10)<<4) + (date->minute%10);
  28. tab[2]=((date->heure/10)<<4) + (date->heure%10);
  29. tab[3]=date->joursemaine;
  30. tab[4]=((date->jour/10)<<4) + (date->jour%10);
  31. tab[5]=((date->mois/10)<<4) + (date->mois%10);
  32. tab[6]=((date->annee/10)<<4) + (date->annee%10);
  33. writeRTC(SECOND,tab,7);
  34. }
  35. void redemareRTC(){
  36. uint8_t pt[1];
  37. readRTC(ALARM_HOURS,pt,1);
  38. pt[0]=pt[0]&!0x40;
  39. writeRTC(ALARM_HOURS,pt,1);
  40. }
  41. void testRTC(){
  42. Date d;
  43. d.annee=2020;
  44. d.mois=1;
  45. d.jour=20;
  46. d.joursemaine=1;
  47. d.heure=14;
  48. d.minute=0;
  49. d.second=0;
  50. writeDate(&d);
  51. redemareRTC();
  52. HAL_Delay(2000);
  53. readDate(&d);
  54. HAL_Delay(1);
  55. }
  56. void testBatteryRTC(){
  57. redemareRTC();
  58. Date d;
  59. readDate(&d);
  60. HAL_Delay(1);
  61. }