114 lines
3.8 KiB
C
114 lines
3.8 KiB
C
/*
|
|
*******************************************************************************
|
|
* Copyright(C) NEC Electronics Corporation 2010
|
|
* All rights reserved by NEC Electronics Corporation.
|
|
* This program should be used on your own responsibility.
|
|
* NEC Electronics Corporation assumes no responsibility for any losses
|
|
* incurred by customers or third parties arising from the use of this file.
|
|
*
|
|
* This device driver was created by Applilet3 for V850ES/Jx3
|
|
* 32-Bit Single-Chip Microcontrollers
|
|
* Filename: CG_system.c
|
|
* Abstract: This file implements device driver for System module.
|
|
* APIlib: Applilet3 for V850ES/Jx3 V2.01 [20 Apr 2010]
|
|
* Device: uPD70F3746
|
|
* Compiler: IAR Systems ICCV850
|
|
* Creation date: 6/26/2010
|
|
*******************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*******************************************************************************
|
|
** Include files
|
|
*******************************************************************************
|
|
*/
|
|
#include "CG_macrodriver.h"
|
|
#include "CG_system.h"
|
|
/* Start user code for include. Do not edit comment generated here */
|
|
/* End user code. Do not edit comment generated here */
|
|
#include "CG_userdefine.h"
|
|
|
|
/*
|
|
*******************************************************************************
|
|
** Global define
|
|
*******************************************************************************
|
|
*/
|
|
/* Start user code for global. Do not edit comment generated here */
|
|
/* End user code. Do not edit comment generated here */
|
|
|
|
void clock_pll_mode(void)
|
|
{
|
|
/* CPU operation clock selection */
|
|
/* Set PLL mode. */
|
|
PLLCTL = 0x03; /* bit 1: CPU clock selection (PLL mode/clock-through mode selection) */
|
|
/* 1: PLL mode, 0: Clock-through mode */
|
|
|
|
__asm("_loop: set1 1,0xF82C[r0]"); //__IO_REG8_BIT( PLLCTL, 0xFFFFF82C, __READ_WRITE )
|
|
__asm(" tst1 1,0xF82C[r0]"); //__IO_REG8_BIT( PLLCTL, 0xFFFFF82C, __READ_WRITE )
|
|
__asm(" bz _loop");
|
|
|
|
return;
|
|
}
|
|
|
|
void clock_pcc_mode(void)
|
|
{
|
|
/* DMA is forcibly terminated in this sample since DMA transfer must be terminated
|
|
before data is set to a special register. */
|
|
|
|
if(TC0 == 0 && E00 == 1){ /* DMA0 transfer judgment */
|
|
INIT0 = 1; /* DMA0 forcible termination */
|
|
}
|
|
if(TC1 == 0 && E11 == 1){ /* DMA1 transfer judgment */
|
|
INIT1 = 1; /* DMA1 forcible termination */
|
|
}
|
|
if(TC2 == 0 && E22 == 1){ /* DMA2 transfer judgment */
|
|
INIT2 = 1; /* DMA2 forcible termination */
|
|
}
|
|
if(TC3 == 0 && E33 == 1){ /* DMA3 transfer judgment */
|
|
INIT3 = 1; /* DMA3 forcible termination */
|
|
}
|
|
|
|
/* The PCC register is a special register. Data can be written to this register only in a combination of specific sequences. */
|
|
/* bit 1, bit 0: Clock selection, 11: fxx/8, 10: fxx/4, 01: fxx/2, 00: fxx */
|
|
/* Clock selection: fxx */
|
|
__asm("mov 0x00, r10"); /* Set general-purpose register data to be set to special register. */
|
|
__asm("st.b r10, 0xF1FC[r0]"); /* Write to PRCMD register. */ //__IO_REG8(PRCMD, 0xFFFFF1FC, __WRITE)
|
|
__asm("st.b r10, 0xF828[r0]"); /* Set PCC register. */ //__IO_REG8_BIT(PCC, 0xFFFFF828, __READ_WRITE)
|
|
__asm("nop"); /* Insert five or more NOP instructions. */
|
|
__asm("nop");
|
|
__asm("nop");
|
|
__asm("nop");
|
|
__asm("nop");
|
|
|
|
return;
|
|
}
|
|
|
|
/*
|
|
**-----------------------------------------------------------------------------
|
|
**
|
|
** Abstract:
|
|
** This function initializes the clock generator module.
|
|
**
|
|
** Parameters:
|
|
** None
|
|
**
|
|
** Returns:
|
|
** None
|
|
**
|
|
**-----------------------------------------------------------------------------
|
|
*/
|
|
void CLOCK_Init(void)
|
|
{
|
|
DI(); /* Maskable interrupt disabled */
|
|
|
|
do{
|
|
clock_pll_mode(); /* PLL mode setting function */
|
|
|
|
clock_pcc_mode(); /* PCC register setting function */
|
|
|
|
}while(PRERR); /* Written in correct sequence? */
|
|
}
|
|
|
|
/* Start user code for adding. Do not edit comment generated here */
|
|
/* End user code. Do not edit comment generated here */
|