Skip to content

MPU: RTC

#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_t

sh7705_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