FreeCalypso > hg > freecalypso-sw
annotate target-utils/pirexplore/rtc.c @ 72:92c1ed6b4b67
pirexplore: RTC read implemented
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Fri, 26 Jul 2013 20:32:43 +0000 |
parents | |
children | c54c6ad1c66f |
rev | line source |
---|---|
72
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 #include "types.h" |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 #include "rtc.h" |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 static void |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 read_time(tm) |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 struct rtctime *tm; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 { |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 tm->year = RTC_REGS.rtc_cur.year; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 tm->month = RTC_REGS.rtc_cur.month; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 tm->day_of_month = RTC_REGS.rtc_cur.day_of_month; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 tm->day_of_week = RTC_REGS.rtc_cur.day_of_week; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 tm->hours = RTC_REGS.rtc_cur.hours; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 tm->minutes = RTC_REGS.rtc_cur.minutes; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 tm->seconds = RTC_REGS.rtc_cur.seconds; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 } |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
16 |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
17 void |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
18 cmd_rtc() |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 { |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 u8 ctrl; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 struct rtctime time1, time2; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 int c; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 ctrl = RTC_REGS.rtc_ctrl_reg; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 printf("RTC_CTRL_REG = %02X ", ctrl); |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 switch (ctrl) { |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
27 case 0x00: |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 printf("(frozen)\n"); |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 break; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 case 0x01: |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 printf("(running)\n"); |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 break; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 default: |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 printf("(unexpected)\n"); |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 return; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 } |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 printf("Reading RTC time"); |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 for (;;) { |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 c = serial_in_poll(); |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 if (c >= 0) { |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 printf("<INTERRUPT>\n"); |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 return; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 } |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 read_time(&time1); |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 read_time(&time2); |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
46 if (!bcmp(&time1.minutes, &time2.minutes, 6)) |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 break; |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 } |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 printf("\nDATE %02X-%02X-%02X DOW %02X TIME %02X:%02X:%02X\n", |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 time2.year, time2.month, time2.day_of_month, time2.day_of_week, |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 time2.hours, time2.minutes, time2.seconds); |
92c1ed6b4b67
pirexplore: RTC read implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
52 } |