You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
6.1 KiB
C
139 lines
6.1 KiB
C
14 years ago
|
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* 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;
|
||
|
}
|