/** ################################################################### ** THIS BEAN MODULE IS GENERATED BY THE TOOL. DO NOT MODIFY IT. ** Filename : Cpu.C ** Project : RTOSDemo ** Processor : MC9S12C32CFU ** Beantype : MC9S12C32_80 ** Version : Bean 01.002, Driver 01.09, CPU db: 2.87.276 ** Compiler : Metrowerks HC12 C Compiler ** Date/Time : 18/06/2005, 18:00 ** Abstract : ** This bean "MC9S12C32_80" implements properties, methods, ** and events of the CPU. ** Settings : ** ** Contents : ** EnableInt - void Cpu_EnableInt(void); ** DisableInt - void Cpu_DisableInt(void); ** SetWaitMode - void Cpu_SetWaitMode(void); ** SetStopMode - void Cpu_SetStopMode(void); ** ** (c) Copyright UNIS, spol. s r.o. 1997-2002 ** UNIS, spol. s r.o. ** Jundrovska 33 ** 624 00 Brno ** Czech Republic ** http : www.processorexpert.com ** mail : info@processorexpert.com ** ###################################################################*/ /* MODULE Cpu. */ #include "Byte1.h" #include "TickTimer.h" #include "ButtonInterrupt.h" #include "PE_Types.h" #include "PE_Error.h" #include "PE_Const.h" #include "IO_Map.h" #include "PE_Timer.h" #include "Events.h" #include "Cpu.h" #define CGM_DELAY 3071UL /* Global variables */ volatile byte CCR_reg; /* Current CCR reegister */ byte CpuMode = HIGH_SPEED; /* Current speed mode */ /* ** =================================================================== ** Method : Cpu_Interrupt (bean MC9S12C32_80) ** ** Description : ** This method is internal. It is used by Processor Expert ** only. ** =================================================================== */ #pragma CODE_SEG __NEAR_SEG NON_BANKED /* Interrupt section for this module. Placement will be in NON_BANKED area. */ __interrupt void Cpu_Interrupt(void) { } #pragma CODE_SEG DEFAULT /* Change code section to DEFAULT. */ /* ** =================================================================== ** Method : Cpu_DisableInt (bean MC9S12C32_80) ** ** Description : ** Disable maskable interrupts ** Parameters : None ** Returns : Nothing ** =================================================================== */ /* void Cpu_DisableInt(void) ** This method is implemented as macro in the header module. ** */ /* ** =================================================================== ** Method : Cpu_EnableInt (bean MC9S12C32_80) ** ** Description : ** Enable maskable interrupts ** Parameters : None ** Returns : Nothing ** =================================================================== */ /* void Cpu_EnableInt(void) ** This method is implemented as macro in the header module. ** */ /* ** =================================================================== ** Method : Cpu_SetStopMode (bean MC9S12C32_80) ** ** Description : ** Set low power mode - Stop mode. For more information ** about the stop mode see documentation of this CPU. ** Parameters : None ** Returns : Nothing ** =================================================================== */ /* void Cpu_SetStopMode(void) ** This method is implemented as macro in the header module. ** */ /* ** =================================================================== ** Method : Cpu_SetWaitMode (bean MC9S12C32_80) ** ** Description : ** Set low power mode - Wait mode. For more information ** about the wait mode see documentation of this CPU. ** Release from Watch mode: Reset or interrupt ** Parameters : None ** Returns : Nothing ** =================================================================== */ /* void Cpu_SetWaitMode(void) ** This method is implemented as macro in the header module. ** */ /* ** =================================================================== ** Method : _EntryPoint (bean MC9S12C32_80) ** ** Description : ** This method is internal. It is used by Processor Expert ** only. ** =================================================================== */ extern void _Startup(void); /* Forward declaration of external startup function declared in file Start12.c */ #define INITRG_ADR 0x0011 /* Register map position register */ #pragma NO_FRAME #pragma NO_EXIT void _EntryPoint(void) { /*** ### MC9S12C32_80 "Cpu" init code ... ***/ /*** PE initialization code after reset ***/ /* Initialization of the registers INITRG, INITRM, INITEE is done to protect them to be written accidentally later by the application */ *(byte*)INITRG_ADR = 0; /* Set the register map position */ asm nop; /* nop instruction */ INITRM=8; /* Set the RAM map position */ /* MISC: ??=0,??=0,??=0,??=0,EXSTR1=0,EXSTR0=0,ROMHM=0,ROMON=1 */ MISC=1; /* System clock initialization */ CLKSEL=0; CLKSEL_PLLSEL = 0; /* Select clock source from XTAL */ PLLCTL_PLLON = 0; /* Disable the PLL */ SYNR = 23; /* Set the multiplier register */ REFDV = 15; /* Set the divider register */ PLLCTL = 192; PLLCTL_PLLON = 1; /* Enable the PLL */ while(!CRGFLG_LOCK); /* Wait */ CLKSEL_PLLSEL = 1; /* Select clock source from PLL */ /*** End of PE initialization code after reset ***/ __asm jmp _Startup; /* Jump to C startup code */ } /* ** =================================================================== ** Method : PE_low_level_init (bean MC9S12C32_80) ** ** Description : ** This method is internal. It is used by Processor Expert ** only. ** =================================================================== */ void PE_low_level_init(void) { /* Common initialization of the CPU registers */ /* TSCR1: TEN=0,TSWAI=0,TSFRZ=1 */ output( TSCR1, input( TSCR1 ) & ~192 | 32 ); /* TCTL2: OM0=0,OL0=0 */ output( TCTL2, input( TCTL2 ) & ~3 ); /* TCTL1: OM7=0,OL7=0 */ output( TCTL1, input( TCTL1 ) & ~192 ); /* TIE: C0I=0 */ output( TIE, input( TIE ) & ~1 ); /* TTOV: TOV0=0 */ output( TTOV, input( TTOV ) & ~1 ); /* TSCR2: TOI=0,TCRE=1 */ output( TSCR2, input( TSCR2 ) & ~128 | 8 ); /* TIOS: IOS7=1,IOS0=1 */ output( TIOS, input( TIOS ) | 129 ); /* PPSP: PPSP0=0 */ output( PPSP, input( PPSP ) & ~1 ); /* PERP: PERP0=1 */ output( PERP, input( PERP ) | 1 ); /* DDRP: DDRP0=0 */ output( DDRP, input( DDRP ) & ~1 ); /* PWMCTL: PSWAI=0,PFRZ=0 */ output( PWMCTL, input( PWMCTL ) & ~12 ); /* PWMSDN: PWMIF=0,PWMIE=0,PWMRSTRT=0,PWMLVL=0,??=0,PWM7IN=0,PWM7INL=0,PWM7ENA=0 */ output( PWMSDN, 0 ); /* ### MC9S12C32_80 "Cpu" init code ... */ /* ### ByteIO "Byte1" init code ... */ PORTB = 0; /* Prepare value for output */ DDRB = 255; /* Set direction to output */ /* ### TimerInt "TickTimer" init code ... */ TickTimer_Init(); /* ### External interrupt "ButtonInterrupt" init code ... */ PIEP_PIEP0 = 0; /* Disable interrupt */ /* Common peripheral initialization - ENABLE */ /* TSCR1: TEN=1 */ output( TSCR1, input( TSCR1 ) | 128 ); INTCR_IRQEN = 0; /* Disable the IRQ interrupt. IRQ interrupt is enabled after CPU reset by default. */ __DI(); /* Disable interrupts */ } /* END Cpu. */ /* ** ################################################################### ** ** This file was created by UNIS Processor Expert 03.33 for ** the Motorola HCS12 series of microcontrollers. ** ** ################################################################### */