Da Microchip beim designen der PIC32 den VBAT Anschluss vergessen hat
behelfe ich mir
nun mit einer externen RTCC.
Ich möchte nun die Daten von der externen zu internen RTCC kopieren.
Dabei ist allerdings mein Problem das sowohl die externe als auch die
interne RTCC ein 10/01 Format hat,
jedoch die structure rtccDate die von ALLEN PIC32 funktionen verwendet
wird anders aufgebaut ist.
Wie lässt sich das in der unten genannten structure abbilden?!
Beispiel:
Date 01-31 (Monatstag) wird aufgeteilt in 10DATE und DATE
Sprich hier werden 10er und 1er voneinander getrennt gespeichert.
versuchen wir mal Tag 31 in dieses 10/1 format zu bringen
Die Zahl 31 wird also als hex angegeben
0x31h -> 0011 0001
nur riegdnwie müssen die das doch wieder zurück in Ihre structure
wandeln,
den da wird es ja als decimal 31 gespeichert (denke ich)
also
31 -> 0001 1111
Wie kann das sein, die kopieren hier einfach das RTCDATE register?
1 | extern __inline__ unsigned long __attribute__((always_inline)) RtccGetDate(void)
|
2 | {
|
3 | unsigned int d0, d1;
|
4 | do
|
5 | {
|
6 | d0=RTCDATE;
|
7 | d1=RTCDATE;
|
8 | }while(d0!=d1);
|
9 |
|
10 | return d0;
|
11 | }
|
Ansonsten verwendet Microchip eine structure, hier sind die 10er und 1er
komischerweise nicht mehr getrennt.
1 | typedef union
|
2 | {
|
3 | struct
|
4 | {
|
5 | unsigned char wday; // BCD codification for day of the week, 00-06
|
6 | unsigned char mday; // BCD codification for day of the month, 01-31
|
7 | unsigned char mon; // BCD codification for month, 01-12
|
8 | unsigned char year; // BCD codification for years, 00-99
|
9 | }; // field access
|
10 | unsigned char b[4]; // byte access
|
11 | unsigned short w[2]; // 16 bits access
|
12 | unsigned long l; // 32 bits access
|
13 | }rtccDate;
|