⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_init.c

📁 The combined demo is dedicated for S1C33L05, so DMT33L05 should be used to load and run the demo. F
💻 C
字号:
/******************************************************************************
 * File name   : init.c
 * Module name : initial module
 * Author      : Hiromichi.Kondo
 *-----------------------------------------------------------------------------
 * $Id: Init.c,v 1.2 2003/05/14 01:26:10 9551619 Exp $
 *****************************************************************************/

#define GLBREAL

/*--- Include ---------------------------------------------------------------*/
#include "u_value.h"
#include "u_c33cpu.h"
#include "u_regNikka.h"
#include "u_com_fp.h"
#include "u_usb_fp.h"

#include "u_macro.h"

#include "u_ram_data.h"
#include "u_rom_data.h"

/*--- Function Prototype ---------------------------------------
------------*/
void USBD_Init(void);

static void InitCPU(void);
static void InitUTimer(void );		// setting timer for USB use

/*--- External Function Prototype ------------------------------------------*/
extern void PowerOnProc_i(void);

/* Global Variable */
volatile struct c_IOtag * plc_IO ;

/*****************************************************************************
 *
 *          : USBD_Init
 *          : 
 *          : 
 *          : 
 *
 *****************************************************************************/
void USBD_Init(void)
{
	extern int vbus_on_1st ;		// VBUS

	plc_IO = (struct c_IOtag *)0x40000;		// append Endo
	
	InitCPU();              /* Initialization of C33 */
    PowerOnProc_i();        /* PowerOn Process */
    vbus_on_1st = 0;		// 

	MonTMStart();			// IFD timer (5ms) start
}

/*****************************************************************************
 *
 *          : C33 CPU 
 *          : 
 *        : 
 *      : 
 *
 *****************************************************************************/
static void InitCPU(void)
{

// 	1. setting usb clock 
#ifdef L05DMT
	*(volatile unsigned char* )0x300f35	&= 0x7f; //sbcuclk enable
	*(volatile unsigned char* )0x300f2f	= 0x96;	//Misc Reg write protect
	*(volatile unsigned char* )0x300f20	= 0x17;	//OSC3 as USB clk,7 Wait cycle
											//snooze disable			
#endif

#ifdef L04DMT
	*(volatile unsigned char* )0x300f20	|= 0x10; //usb clk enable	
#endif

//	2. USB-int[ P56 ] PortInt(FPT14) setting
//				this intrrupt controled itron.
//						LEVEL < 4

	pINT_PP1415L = 0x06 ;								// interrupt level
	pINT_FP815 = 0xFF ;									// interrupt request flag clear
	pINT_EP815 = ( 0x40 | pINT_EP815 );					// FPT14 interrupt enable

// 	3. setting timer for USB use (USB_MON,USB_WAIT)
	InitUTimer();

// 	4. setting DMA trig port K54:Port use.
	bK5_CFK5_CFK54 = 0 ;		/* K54 function selection not DMAREQ3 */

// 	5. setting HsDMA ch.3 Transfer End Interrupt

	// CFEX7 P07 port extended function extension register
	bPF_CFEX_CFEX7 = 0 ;		// 1:#DMAEND3 select ; 0:port07 select //modified 04/03/12

	// High-speed DMA Ch.3 interrupt priority
	//		#define bINT_PHSD23L_PHSD3L fINT_PHSD23L.PHSD3L  
	bINT_PHSD23L_PHSD3L = 7 ;	// Intr LEVEL:7

	// High-speed DMA Ch.3 interrupt enable register
	//		#define bINT_EDMA_EHDM3 fINT_EDMA.EHDM3  
	bINT_EDMA_EHDM3 = 0 ;			// disable

	// High-speed DMA Ch.3 interrupt request flag register
	//		#define bINT_FDMA_FHDM3 fINT_FDMA.FHDM3  
	bINT_FDMA_FHDM3 = 1 ;			// clear
}

/************************************************************************
 *	InitUTimer
 *		Type	 : void
 *		Ret val  : None
 *		Argument : void
 *		Function : Initialize Timer
 ************************************************************************/
void InitUTimer( void )
{
//----------------------------------------------------------
// 			8 bit timer ch.3 setting
// 				usage for wait count timer
//				this intrrupt dont control itron.
//						LEVEL > 4
    /* 8Bit Timer 3 */
    *(volatile unsigned char*)REG_TM8_3_CTL = 0; 			/* 8-bit timer 3 stop 		*/
    *(volatile unsigned char*)REG_TM8_3_PSC &= 0x7f;		/* 8-bit timer 3 pre off 	*/
    *(volatile unsigned char*)REG_TM8_3_PSC |= 0x70;		/* 8-bit timer 3 pre 1/256	*/
    *(volatile unsigned char*)REG_TM8_3_PSC |= 0x80;		/* 8-bit timer 3 pre on 	*/
    
    *(volatile unsigned char*)REG_TM8_3_LDAT = TM8_3_VALUE;
    *(volatile unsigned char*)REG_TM8_3_CTL |= 0x02;		/* 8-bit timer 3 reload		*/
    
    *(volatile unsigned char*)REG_TM8_3_ILEVL &= 0xf0;		/* 8-bit timer 3 int level4	*/
    *(volatile unsigned char*)REG_TM8_3_ILEVL |= 0x04;
    *(volatile unsigned char*)REG_TM8_3_IFLAG |= 0x08;		/* 8-bit timer 3 clr intflg	*/
	*(volatile unsigned char*)REG_TM8_3_IMASK |= 0x08;		/* 8-bit timer 3 int enable */

//----------------------------------------------------------
// 			8 bit timer ch.4 setting
// 				usage for USB monitor timer wakeup every 5ms.
//				this intrrupt controled itron.
//						LEVEL < 4
//			modified from 16timer1 to 8timer4 david.ji		
    /* 8Bit Timer 4  */
    *(volatile unsigned char*)REG_TM8_4_CTL = 0; 			/* 8-bit timer 4 stop 		*/
    *(volatile unsigned char*)REG_TM8_4_PSC &= 0xf7;		/* 8-bit timer 4 pre off 	*/
    *(volatile unsigned char*)REG_TM8_4_PSC |= 0x06;		/* 8-bit timer 4 pre 1/2048 */
    *(volatile unsigned char*)REG_TM8_4_PSC |= 0x08;		/* 8-bit timer 4 pre on 	*/
    
    *(volatile unsigned char*)REG_TM8_4_LDAT = TM8_4_VALUE;
    *(volatile unsigned char*)REG_TM8_4_CTL |= 0x02;		/* 8-bit timer 4 reload		*/
    
//    *(volatile unsigned char*)REG_TM8_4_ILEVL &= 0xf0;		/* 8-bit timer 4 int level4	*/
//    *(volatile unsigned char*)REG_TM8_4_ILEVL |= 0x04;
    *(volatile unsigned char*)REG_TM8_4_IFLAG |= 0x01;		/* 8-bit timer 4 clr intflg	*/
	*(volatile unsigned char*)REG_TM8_4_IMASK |= 0x01;		/* 8-bit timer 4 int enable */
	
//	*(volatile unsigned char*)REG_TM8_4_CTL |= 0x1;			/* 8-bit timer 4 run		*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -