MPU: RTC
Macros
Section titled “Macros”#define SH7705_RTC (*((rtc_t *)0xfffffec0))#define SH7305_RTC (*((rtc_t *)0xa413fec0))typedef struct{ byte_union(, uint8_t TENS :4; uint8_t ONES :4; ); pad(1);}rtc_BCD2_tsh7705_rtc_t, sh7305_rtc_t - Date and time access, RTC control
typedef volatile struct{ uint8_t const R64CNT; /* A 64-Hz counter */ pad(1); rtc_BCD2_t RSECCNT; /* Second count */ rtc_BCD2_t RMINCNT; /* Minute count */ rtc_BCD2_t RHRCNT; /* Hour count */ uint8_t RWKCNT; /* Day of week, must be in [0..6] */ pad(1); rtc_BCD2_t RDAYCNT; /* Day count */ rtc_BCD2_t RMONCNT; /* Month count */ word_union(RYRCNT, /* Year count */ uint THOUSANDS :4; uint HUNDREDS :4; uint TENS :4; uint ONES :4; ); byte_union(RSECAR, /* Second alarm */ uint8_t ENB :1; uint8_t TENS :3; uint8_t ONES :4; ); pad(1); byte_union(RMINAR, /* Minute alarm */ uint8_t ENB :1; uint8_t TENS :3; uint8_t ONES :4; ); pad(1); byte_union(RHRAR, /* Hour alarm */ uint8_t ENB :1; uint8_t :1; uint8_t TENS :2; uint8_t ONES :4; ); pad(1); byte_union(RWKAR, /* Day of week alarm */ uint8_t ENB :1; uint8_t :3; uint8_t :1; uint8_t DAY :3; ); pad(1); byte_union(RDAYAR, /* Day alarm */ uint8_t ENB :1; uint8_t :1; uint8_t TENS :2; uint8_t ONES :4; ); pad(1); byte_union(RMONAR, /* Month alarm */ uint8_t ENB :1; uint8_t :1; uint8_t TENS :2; uint8_t ONES :4; ); pad(1); byte_union(RCR1, uint8_t CF :1; /* Carry flag */ uint8_t :2; uint8_t CIE :1; /* Carry interrupt enable */ uint8_t AIE :1; /* Alarm interrupt enable */ uint8_t :2; uint8_t AF :1; /* Alarm flag */ ); pad(1); byte_union(RCR2, uint8_t PEF :1; /* Periodic interrupt flag */ uint8_t PES :3; /* Periodic interrupt interval */ uint8_t :1; uint8_t ADJ :1; /* 30-second adjustment */ uint8_t RESET :1; /* Reset trigger */ uint8_t START :1; /* Start bit */ ); pad(1); word_union(RYRAR, /* Year alarm */ uint16_t THOUSANDS :4; uint16_t HUNDREDS :4; uint16_t TENS :4; uint16_t ONES :4; ); pad(2); byte_union(RCR3, /* Control register 3 */ uint8_t ENB :1; uint8_t :3; uint8_t :4; uint8_t :4; );}rtc_t