]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/RX600_RX630-RSK_Renesas/RTOSDemo/Renesas-Files/cgc.c
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / RX600_RX630-RSK_Renesas / RTOSDemo / Renesas-Files / cgc.c
1 \r
2 \r
3 /*******************************************************************************\r
4 * DISCLAIMER\r
5 * This software is supplied by Renesas Electronics Corporation and is only \r
6 * intended for use with Renesas products. No other uses are authorized. This \r
7 * software is owned by Renesas Electronics Corporation and is protected under\r
8 * all applicable laws, including copyright laws.\r
9 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING\r
10 * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT\r
11 * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE \r
12 * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.\r
13 * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS \r
14 * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE \r
15 * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR\r
16 * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE\r
17 * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\r
18 * Renesas reserves the right, without notice, to make changes to this software\r
19 * and to discontinue the availability of this software. By using this software,\r
20 * you agree to the additional terms and conditions found by accessing the \r
21 * following link:\r
22 * http://www.renesas.com/disclaimer\r
23 *******************************************************************************/\r
24 \r
25 \r
26 /*\r
27  * cgc.c\r
28  *\r
29  *  Created on: 01 Oct 2011\r
30  *      Author: RJW\r
31  *              Reneses Electronics Europe Ltd\r
32  */\r
33 \r
34 \r
35 /******************************************************************************\r
36     System Includes                                                           \r
37 ******************************************************************************/\r
38 \r
39 \r
40 /******************************************************************************\r
41     User Includes                                                             \r
42 ******************************************************************************/\r
43 #include    "iodefine.h"\r
44 #include    "cgc.h"\r
45 \r
46 \r
47 /*****************************************************************************/\r
48 /*                                                                           */\r
49 /* Configure the CGC (Clock Generation Circuit) of the RX630 using the       */\r
50 /* using the 7 STEPS specified in cgc.h                                      */\r
51 /*                                                                           */\r
52 /*****************************************************************************/\r
53 \r
54 \r
55 /******************************************************************************\r
56    Function     : InitCGC\r
57    Description  : Initialises the CGC registers based upon the settings\r
58                   made in file cgc.h\r
59    Argument     : none\r
60    Return value : none\r
61 ******************************************************************************/\r
62 void InitCGC(void)\r
63 {\r
64     unsigned long i;\r
65     \r
66 #if (ENABLE_SUB)\r
67     SYSTEM.SOSCCR.BYTE = 0x00;              /* Sub-clock oscillator ON                      */\r
68 #else\r
69     SYSTEM.SOSCCR.BYTE = 0x01;              /* Sub-clock oscillator OFF                     */\r
70 #endif\r
71 \r
72 #if (ENABLE_HOCO)                                                                                                           \r
73     SYSTEM.HOCOPCR.BYTE = 0x00;             /* HOCO PSU ON                                  */\r
74     SYSTEM.HOCOCR.BYTE = 0x00;              /* HOCO ON                                      */\r
75 #else\r
76     SYSTEM.HOCOPCR.BYTE = 0x01;             /* HOCO PSU OFF                                 */\r
77     SYSTEM.HOCOCR.BYTE = 0x01;              /* HOCO OFF                                     */\r
78 #endif\r
79 \r
80 \r
81 \r
82 #if (ENABLE_MAIN)                                                                       \r
83     SYSTEM.MOSCWTCR.BYTE = 0x0e;            /* Main Clock Oscillator Wait Control Register  */\r
84                                             /* 262144 states                                */\r
85     SYSTEM.MOSCCR.BYTE = 0x00;                          /* EXTAL ON                                     */\r
86 #else\r
87     SYSTEM.MOSCCR.BYTE = 0x01;                          /* EXTAL OFF                                    */\r
88 #endif    \r
89 \r
90 \r
91 #if (ENABLE_PLL)        \r
92     SYSTEM.MOSCWTCR.BYTE = 0x0e;            /* Main Clock Oscillator Wait Control Register  */\r
93                                             /* 262144 states                                */\r
94     SYSTEM.MOSCCR.BYTE = 0x00;                          /* EXTAL ON                                     */\r
95     \r
96     SYSTEM.PLLWTCR.BYTE = 0x0e;                         /* PLL Wait Control Register                    */\r
97                                             /* 2097152 states                               */\r
98     \r
99     SYSTEM.PLLCR2.BYTE = 0x01;                          /* PLL OFF                                      */\r
100     \r
101     #if (PLL_INPUT_FREQ_DIV == 1)\r
102         SYSTEM.PLLCR.BIT.PLIDIV = 0;\r
103     #elif (PLL_INPUT_FREQ_DIV == 2)\r
104         SYSTEM.PLLCR.BIT.PLIDIV = 1;\r
105     #elif (PLL_INPUT_FREQ_DIV == 4)\r
106         SYSTEM.PLLCR.BIT.PLIDIV = 2;\r
107     #else\r
108         SYSTEM.PLLCR.BIT.PLIDIV = 0;\r
109     #endif\r
110     SYSTEM.PLLCR.BIT.STC   = (PLL_MUL - 1);     \r
111 \r
112                                             /* External oscillation input selection         */\r
113         SYSTEM.PLLCR2.BYTE = 0x00;                              /* PLL ON                                       */\r
114 #else\r
115     SYSTEM.PLLCR2.BYTE = 0x01;                          /* PLL OFF                                      */\r
116 #endif\r
117         \r
118     for(i = 0; i<2500; i++)                 /* Wait for stabilisation of                    */\r
119     {                                       /* HOCO, LOCO, PLL and main clock               */\r
120     }                                       /* = 20ms                                       */\r
121                                             /*   (2500 x 1/125kHz = 20ms)                   */\r
122                                                \r
123             \r
124     SYSTEM.SCKCR.LONG = FCLK_SCKCR      | \r
125                         ICLK_SCKCR      |\r
126                         PSTOP1_SCKCR    |\r
127                         BCLK_SCKCR      |\r
128                         PCLK1215_SCKCR  |\r
129                         PCLKB_SCKCR     |\r
130                         PCLK47_SCKCR    |\r
131                         PCLK03_SCKCR    ;\r
132  \r
133         \r
134     SYSTEM.SCKCR2.WORD = UCK_SCKCR2    |\r
135                          IEBCK_SCKCR2   ;               \r
136 \r
137 \r
138         SYSTEM.SCKCR3.WORD = CLK_SOURCE;\r
139 }