/******************************************************************************* | |
* DISCLAIMER | |
* This software is supplied by Renesas Electronics Corporation and is only | |
* intended for use with Renesas products. No other uses are authorized. This | |
* software is owned by Renesas Electronics Corporation and is protected under | |
* all applicable laws, including copyright laws. | |
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING | |
* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT | |
* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE | |
* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. | |
* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS | |
* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE | |
* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR | |
* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE | |
* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. | |
* Renesas reserves the right, without notice, to make changes to this software | |
* and to discontinue the availability of this software. By using this software, | |
* you agree to the additional terms and conditions found by accessing the | |
* following link: | |
* http://www.renesas.com/disclaimer | |
*******************************************************************************/ | |
/* | |
* cgc.c | |
* | |
* Created on: 01 Oct 2011 | |
* Author: RJW | |
* Reneses Electronics Europe Ltd | |
*/ | |
/****************************************************************************** | |
System Includes | |
******************************************************************************/ | |
/****************************************************************************** | |
User Includes | |
******************************************************************************/ | |
#include "iodefine.h" | |
#include "cgc.h" | |
/*****************************************************************************/ | |
/* */ | |
/* Configure the CGC (Clock Generation Circuit) of the RX630 using the */ | |
/* using the 7 STEPS specified in cgc.h */ | |
/* */ | |
/*****************************************************************************/ | |
/****************************************************************************** | |
Function : InitCGC | |
Description : Initialises the CGC registers based upon the settings | |
made in file cgc.h | |
Argument : none | |
Return value : none | |
******************************************************************************/ | |
void InitCGC(void) | |
{ | |
unsigned long i; | |
#if (ENABLE_SUB) | |
SYSTEM.SOSCCR.BYTE = 0x00; /* Sub-clock oscillator ON */ | |
#else | |
SYSTEM.SOSCCR.BYTE = 0x01; /* Sub-clock oscillator OFF */ | |
#endif | |
#if (ENABLE_HOCO) | |
SYSTEM.HOCOPCR.BYTE = 0x00; /* HOCO PSU ON */ | |
SYSTEM.HOCOCR.BYTE = 0x00; /* HOCO ON */ | |
#else | |
SYSTEM.HOCOPCR.BYTE = 0x01; /* HOCO PSU OFF */ | |
SYSTEM.HOCOCR.BYTE = 0x01; /* HOCO OFF */ | |
#endif | |
#if (ENABLE_MAIN) | |
SYSTEM.MOSCWTCR.BYTE = 0x0e; /* Main Clock Oscillator Wait Control Register */ | |
/* 262144 states */ | |
SYSTEM.MOSCCR.BYTE = 0x00; /* EXTAL ON */ | |
#else | |
SYSTEM.MOSCCR.BYTE = 0x01; /* EXTAL OFF */ | |
#endif | |
#if (ENABLE_PLL) | |
SYSTEM.MOSCWTCR.BYTE = 0x0e; /* Main Clock Oscillator Wait Control Register */ | |
/* 262144 states */ | |
SYSTEM.MOSCCR.BYTE = 0x00; /* EXTAL ON */ | |
SYSTEM.PLLWTCR.BYTE = 0x0e; /* PLL Wait Control Register */ | |
/* 2097152 states */ | |
SYSTEM.PLLCR2.BYTE = 0x01; /* PLL OFF */ | |
#if (PLL_INPUT_FREQ_DIV == 1) | |
SYSTEM.PLLCR.BIT.PLIDIV = 0; | |
#elif (PLL_INPUT_FREQ_DIV == 2) | |
SYSTEM.PLLCR.BIT.PLIDIV = 1; | |
#elif (PLL_INPUT_FREQ_DIV == 4) | |
SYSTEM.PLLCR.BIT.PLIDIV = 2; | |
#else | |
SYSTEM.PLLCR.BIT.PLIDIV = 0; | |
#endif | |
SYSTEM.PLLCR.BIT.STC = (PLL_MUL - 1); | |
/* External oscillation input selection */ | |
SYSTEM.PLLCR2.BYTE = 0x00; /* PLL ON */ | |
#else | |
SYSTEM.PLLCR2.BYTE = 0x01; /* PLL OFF */ | |
#endif | |
for(i = 0; i<2500; i++) /* Wait for stabilisation of */ | |
{ /* HOCO, LOCO, PLL and main clock */ | |
} /* = 20ms */ | |
/* (2500 x 1/125kHz = 20ms) */ | |
SYSTEM.SCKCR.LONG = FCLK_SCKCR | | |
ICLK_SCKCR | | |
PSTOP1_SCKCR | | |
BCLK_SCKCR | | |
PCLK1215_SCKCR | | |
PCLKB_SCKCR | | |
PCLK47_SCKCR | | |
PCLK03_SCKCR ; | |
SYSTEM.SCKCR2.WORD = UCK_SCKCR2 | | |
IEBCK_SCKCR2 ; | |
SYSTEM.SCKCR3.WORD = CLK_SOURCE; | |
} |