/******************************************************************************* * 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; }