FreeCalypso > hg > freecalypso-sw
comparison 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 |
comparison
equal
deleted
inserted
replaced
71:0c1480317c18 | 72:92c1ed6b4b67 |
---|---|
1 #include "types.h" | |
2 #include "rtc.h" | |
3 | |
4 static void | |
5 read_time(tm) | |
6 struct rtctime *tm; | |
7 { | |
8 tm->year = RTC_REGS.rtc_cur.year; | |
9 tm->month = RTC_REGS.rtc_cur.month; | |
10 tm->day_of_month = RTC_REGS.rtc_cur.day_of_month; | |
11 tm->day_of_week = RTC_REGS.rtc_cur.day_of_week; | |
12 tm->hours = RTC_REGS.rtc_cur.hours; | |
13 tm->minutes = RTC_REGS.rtc_cur.minutes; | |
14 tm->seconds = RTC_REGS.rtc_cur.seconds; | |
15 } | |
16 | |
17 void | |
18 cmd_rtc() | |
19 { | |
20 u8 ctrl; | |
21 struct rtctime time1, time2; | |
22 int c; | |
23 | |
24 ctrl = RTC_REGS.rtc_ctrl_reg; | |
25 printf("RTC_CTRL_REG = %02X ", ctrl); | |
26 switch (ctrl) { | |
27 case 0x00: | |
28 printf("(frozen)\n"); | |
29 break; | |
30 case 0x01: | |
31 printf("(running)\n"); | |
32 break; | |
33 default: | |
34 printf("(unexpected)\n"); | |
35 return; | |
36 } | |
37 printf("Reading RTC time"); | |
38 for (;;) { | |
39 c = serial_in_poll(); | |
40 if (c >= 0) { | |
41 printf("<INTERRUPT>\n"); | |
42 return; | |
43 } | |
44 read_time(&time1); | |
45 read_time(&time2); | |
46 if (!bcmp(&time1.minutes, &time2.minutes, 6)) | |
47 break; | |
48 } | |
49 printf("\nDATE %02X-%02X-%02X DOW %02X TIME %02X:%02X:%02X\n", | |
50 time2.year, time2.month, time2.day_of_month, time2.day_of_week, | |
51 time2.hours, time2.minutes, time2.seconds); | |
52 } |