system.c

Go to the documentation of this file.
00001 /*
00002  * File:        system.c
00003  * Purpose:     System initialization functions
00004  * Author:      Peter Ivanov, Olimex Ltd.
00005  * Modified by:
00006  * Created:     2007-05-19 11:29:32
00007  * Last modify: 2007-06-10 13:14:02 ivanovp {Time-stamp}
00008  * Copyright:   (C) Peter Ivanov, Olimex Ltd., 2005, 2007
00009  * Licence:     GPL
00010  */
00016 /**********************************************************************************/
00017 /*                                                                                */
00018 /*    Copyright (C) 2005 OLIMEX  LTD.                                             */
00019 /*                                                                                */
00020 /*    Module Name    :  system module                                             */
00021 /*    File   Name    :  system.h                                                  */
00022 /*    Revision       :  01.00                                                     */
00023 /*    Date           :  2006/10/05 initial version                                */
00024 /*                                                                                */
00025 /**********************************************************************************/
00026 #include "system.h"
00027 //#include <msp430x44x.h>
00028 #include <msp430xG461x.h>
00029 
00030 
00031 /****************************************************************************/
00032 /*  Init system frequency                                                   */
00033 /*  Function : InitFreq_XT2                                                 */
00034 /*      Parameters                                                          */
00035 /*          Input   :  Nothing                                              */
00036 /*          Output  :  Nothing                                              */
00037 /****************************************************************************/
00038 void InitFreq_XT2(void)
00039 {
00040     // External oscilator 8MHz
00041 
00042     /* Watchdog */
00043     // Stop watchdog timer
00044     WDTCTL = WDTPW + WDTHOLD;
00045 
00046 
00047     /* FLL+ Control Register 1 */
00048     // SMCLK on, XT2 on, XT2 for main oscilator, ACLK By 1
00049     FLL_CTL1 = SELM1 + SELS + FLL_DIV_1;
00050 }
00051 
00052 /****************************************************************************/
00053 /*  Init system frequency                                                   */
00054 /*  Function : InitFreq_XT1                                                 */
00055 /*      Parameters                                                          */
00056 /*          Input   :  Nothing                                              */
00057 /*          Output  :  Nothing                                              */
00058 /****************************************************************************/
00059 void InitFreq_XT1(void)
00060 {
00061     // External oscilator 32kHz
00062     // DCO - off
00063 
00064     /* Watchdog */
00065     // Stop watchdog timer
00066     WDTCTL = WDTPW + WDTHOLD;
00067 
00068     /* FLL+ Control Register 1 */
00069     // SMCLK off, XT2 off, LFXT1CLK for main oscilator, ACLK By 1
00070     FLL_CTL1 = SMCLKOFF + XT2OFF + SELM0 + SELM1 + FLL_DIV_1;
00071 
00072 }
00073 
00074 /****************************************************************************/
00075 /*  Init system frequency                                                   */
00076 /*  Function : InitFreq                                                     */
00077 /*      Parameters                                                          */
00078 /*          Input   :  Nothing                                              */
00079 /*          Output  :  Nothing                                              */
00080 /****************************************************************************/
00081 void InitFreq(void)
00082 {
00083     /* Watchdog */
00084     // Stop watchdog timer
00085     WDTCTL = WDTPW + WDTHOLD;
00086 
00087     /* FLL+ Control Register 0 */
00088     // Low Frequency, Oscillator capacitor ~6 pF
00089     //DCO+ set so freq = xtal 2 x N+1
00090     FLL_CTL0 = DCOPLUS + XCAP10PF;
00091 
00092     /* System Clock Control Register */
00093     // Enable modulation
00094     // fDCOCLK = (N + 1) * fcrystal
00095     // fDCOCLK = (29+1) * 32768 * 2 = 1 966 080 Hz ~ 2MHz
00096     //SCFQCTL = 29;
00097 
00098     /* System Clock Control Register */
00099     // Enable modulation
00100     // fDCOCLK = (N + 1) * fcrystal
00101     // fDCOCLK = (121+1) * 32768 * 2 = 7 995 392 Hz ~ 8MHz
00102     // SCFQCTL = 121;
00103     SCFQCTL = 121;
00104 
00105     /* FLL+ Control Register 1 */
00106     // SMCLK on, XT2 off, DCO for main oscilator, ACLK By 1
00107     // SMCLK clocked from DCO
00108     FLL_CTL1 = XT2OFF + SELM0 + FLL_DIV_1;
00109 #if 0
00110     FLL_CTL0 &= ~XTS_FLL;                           // XT1 as low-frequency
00111     FLL_CTL0 = XCAP10PF;                            // set load capacitance for 32k xtal
00112 
00113     _BIC_SR (OSCOFF);                               // turn on XT1 oscillator
00114 
00115     do                                              // wait in loop until crystal is stable
00116     {
00117         IFG1 &= ~OFIFG;
00118     }
00119     while (IFG1 & OFIFG);
00120 
00121     FLL_CTL1 &= ~FLL_DIV0;                          // ACLK = XT1
00122     FLL_CTL1 &= ~FLL_DIV1;
00123 
00124     IFG1 &= ~OFIFG;                                 // clear osc. fault int. flag
00125 
00126     FLL_CTL1 &= ~SELM0;                             // set DCO as MCLK
00127     FLL_CTL1 &= ~SELM1;
00128 #endif
00129 }
00130 
00131 
00132 /****************************************************************************/
00133 /*  Preparing board to enter sleep mode - low power consumption             */
00134 /*  Function : GoToSleep                                                    */
00135 /*      Parameters                                                          */
00136 /*          Input   :  Nothing                                              */
00137 /*          Output  :  Nothing                                              */
00138 /****************************************************************************/
00139 void GoToSleep(void) 
00140 {
00141     // Flash CS high - disable
00142     P7DIR |= BIT0;
00143     P7OUT |= BIT0;
00144 
00145     // MMA to sleep mode
00146     P8OUT &= ~BIT2;
00147 
00148     // LCD turn of light
00149     P7OUT |= BIT6;
00150 
00151     // IRDA disable
00152     P7DIR |= BIT7;
00153     P7OUT |= BIT7;
00154 
00155     // TX - low
00156     P4DIR |= BIT6;
00157     P4OUT &= ~BIT6;
00158 
00159     // MMC card
00160     P3DIR |= (BIT0|BIT2);
00161     P3OUT |= (BIT0|BIT2);
00162 
00163     // LCD CS high - disable
00164     P4OUT |= 0x04;
00165     // LCD RESET
00166     P7OUT &= ~BIT4;
00167 
00168     // EXT port
00169     P1DIR |= 0x3E;  P1OUT &= ~0x3E;
00170     P2DIR |= 0xBF;  P2OUT &= ~0xBF;
00171     P3DIR |= 0xF0;  P3OUT &= ~0xF0;
00172     P4DIR |= 0x13;  P4OUT &= ~0x13;
00173     P5DIR |= 0xFF;  P5OUT &= ~0xFF;
00174     P6DIR |= 0x17;  P6OUT &= ~0x17;
00175     P8DIR |= 0xFF;  P8OUT &= ~0xFF;
00176     P9DIR |= 0xFF;  P9OUT &= ~0xFF;
00177     P10DIR |= 0xFF;  P10OUT &= ~0xFF;
00178 
00179 }
00180 
00181 

Generated on Sun Dec 9 17:17:10 2007 for Sample MSP430-4619LCD Project by  doxygen 1.5.1