1 | //******************************************************************************
|
2 | //
|
3 | // MSP430F5418
|
4 | // -----------------
|
5 | // /|\ | XIN|-
|
6 | // | | | 32kHz
|
7 | // ---|RST XOUT|-
|
8 | // | |
|
9 | // | P6.1|-->LED
|
10 | //
|
11 | // Built with IAR Embedded Workbench Version: 4.20
|
12 | //******************************************************************************
|
13 | #include <msp430x54x.h>
|
14 |
|
15 | extern int SetRTCYEAR(int year);
|
16 | extern int SetRTCMON(int month);
|
17 | extern int SetRTCDAY(int day);
|
18 | extern int SetRTCHOUR(int hour);
|
19 | extern int SetRTCMIN(int min);
|
20 | extern int SetRTCSEC(int sec);
|
21 |
|
22 | extern int SetAlarmRTCMIN(int min);
|
23 |
|
24 | extern void Clr_AE(void);
|
25 |
|
26 | void main(void)
|
27 | {
|
28 | WDTCTL = WDTPW + WDTHOLD; // Stop Watchdog Timer
|
29 |
|
30 | UCSCTL6 &= ~0x000D; // turn XT1 on, load caps off
|
31 | UCSCTL6 |= XCAP_3; // internal load caps to 12pF
|
32 |
|
33 | P6DIR = 0xFF;
|
34 | P6OUT = 0;
|
35 |
|
36 | RTCCTL01 |= RTCHOLD + RTCMODE; // Stoppt RTC und geht in den "calendermode"
|
37 |
|
38 | SetRTCYEAR(2009);
|
39 | SetRTCMON(1);
|
40 | SetRTCDAY(2);
|
41 | SetRTCHOUR(1);
|
42 | SetRTCMIN(4);
|
43 | SetRTCSEC(31);
|
44 |
|
45 | RTCCTL01 &= ~RTCTEVIE; // Deaktivieren aller Interrupts
|
46 | RTCCTL01 &= ~RTCTEVIFG;
|
47 | RTCCTL01 &= ~RTCAIE;
|
48 | RTCCTL01 &= ~RTCAIFG;
|
49 | RTCCTL01 &= ~RTCRDYIE;
|
50 | RTCCTL01 &= ~RTCRDYIFG;
|
51 |
|
52 | RTCCTL01 &= ~RTCAIFG; // Alarm Interrupt Flag löschen
|
53 |
|
54 | Clr_AE(); // alle Alarm Register löschen
|
55 |
|
56 | SetAlarmRTCMIN(0x85);
|
57 |
|
58 | RTCCTL01 |= RTCAIE; // Alarm Interrupt aktivieren
|
59 |
|
60 | RTCCTL01 &= ~RTCHOLD; // Startet RTC
|
61 |
|
62 | __no_operation(); // For debugger
|
63 | __bis_SR_register(LPM3_bits + GIE); // Enter LPM3, enable interrupts
|
64 |
|
65 | }
|
66 |
|
67 | #pragma vector=RTC_VECTOR
|
68 | __interrupt void rtc_ISR(void)
|
69 | {
|
70 | if(RTCCTL01 & RTCAIFG) // alarm flag
|
71 | {
|
72 | RTCCTL0 &= ~RTCAIFG;
|
73 | P6OUT ^= BIT1;
|
74 | }
|
75 | }
|