//**************************************************************************** // @Module Project Settings // @Filename MAIN.C // @Project CAN.dav //---------------------------------------------------------------------------- // @Controller Infineon XC164CM-8F20 // // @Compiler Keil // // @Codegenerator 1.1 // // @Description This file contains the project initialization function. // //---------------------------------------------------------------------------- // @Date 15.01.2008 21:54:09 // //**************************************************************************** // USER CODE BEGIN (MAIN_General,1) // USER CODE END //**************************************************************************** // @Project Includes //**************************************************************************** #include "MAIN.H" // USER CODE BEGIN (MAIN_General,2) // USER CODE END //**************************************************************************** // @Macros //**************************************************************************** // USER CODE BEGIN (MAIN_General,3) // USER CODE END //**************************************************************************** // @Defines //**************************************************************************** // USER CODE BEGIN (MAIN_General,4) // USER CODE END //**************************************************************************** // @Typedefs //**************************************************************************** // USER CODE BEGIN (MAIN_General,5) // USER CODE END //**************************************************************************** // @Imported Global Variables //**************************************************************************** // USER CODE BEGIN (MAIN_General,6) // USER CODE END //**************************************************************************** // @Global Variables //**************************************************************************** // USER CODE BEGIN (MAIN_General,7) int i=0; volatile uword counter1 = 0; volatile uword counter2 = 0; // USER CODE END //**************************************************************************** // @External Prototypes //**************************************************************************** // USER CODE BEGIN (MAIN_General,8) // USER CODE END //**************************************************************************** // @Prototypes Of Local Functions //**************************************************************************** // USER CODE BEGIN (MAIN_General,9) // USER CODE END //**************************************************************************** // @Function void MAIN_vInit(void) // //---------------------------------------------------------------------------- // @Description This function initializes the microcontroller. // //---------------------------------------------------------------------------- // @Returnvalue None // //---------------------------------------------------------------------------- // @Parameters None // //---------------------------------------------------------------------------- // @Date 15.01.2008 // //**************************************************************************** // USER CODE BEGIN (Init,1) // USER CODE END void MAIN_vInit(void) { // USER CODE BEGIN (Init,2) // USER CODE END /// ----------------------------------------------------------------------- /// Configuration of the System Clock: /// ----------------------------------------------------------------------- /// - VCO clock used, input clock is connected /// - input frequency is 8,000 MHz /// - VCO output frequency 100 .. 150 MHz /// - system clock is 20 MHz MAIN_vUnlockProtecReg(); // unlock write security PLLCON = 0x7814; // load PLL control register //// ----------------------------------------------------------------------- //// Begin of Important Settings for the Start-Up File //// ----------------------------------------------------------------------- /// All following settings must be set in the start-up file. You can use /// DAvE's project file (*.dpt) to include this register values into your /// compiler EDE. /// --------------------------------------------------------------------- /// Initialization of the CPUCON1 Register: /// --------------------------------------------------------------------- /// - space between two vectors is 2 words /// - DISWDT executable until End of Init /// - segmentation is enabled /// - switch context is interruptible /// - branch prediction is enabled /// - zero cycle jump function is enabled //// this register must be set in the start-up file //// CPUCON1 = 0x0007 /// --------------------------------------------------------------------- /// Initialization of the VECSEG Register: /// --------------------------------------------------------------------- /// - start from internal program memory //// this register must be set in the start-up file //// VECSEG = 0x00C0 /// --------------------------------------------------------------------- /// Initialization of the SYSCON0 Register: /// --------------------------------------------------------------------- //// this register must be set in the start-up file //// SYSCON0 = 0x0000 /// --------------------------------------------------------------------- /// Initialization of the SYSCON1 Register: /// --------------------------------------------------------------------- /// clock prescaler for system is fpll / 1 /// clock prescaler for PD+ bus is fcpu / 1 //// this register must be set in the start-up file //// SYSCON1 = 0x0000 /// --------------------------------------------------------------------- /// Initialization of the SYSCON3 Register: /// --------------------------------------------------------------------- //// this register must be set in the start-up file //// SYSCON3 = 0x0000 //// ----------------------------------------------------------------------- //// End of Important Settings for the Start-Up File //// ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // Initialization of the Peripherals: // ----------------------------------------------------------------------- // initializes the Parallel Ports IO_vInit(); // initializes the General Purpose Timer Unit (GPT1) GPT1_vInit(); // initializes the TwinCAN Module (CAN) CAN_vInit(); // initializes the Interrupt Controller (INT) INT_vInit(); // USER CODE BEGIN (Init,3) // USER CODE END // globally enable interrupts PSW_IEN = 1; } // End of function MAIN_vInit //**************************************************************************** // @Function void MAIN_vUnlockProtecReg(void) // //---------------------------------------------------------------------------- // @Description This function makes it possible to write one protected // register. After calling of this function and write on the // protected register is the security level set to low // protected mode. // //---------------------------------------------------------------------------- // @Returnvalue None // //---------------------------------------------------------------------------- // @Parameters None // //---------------------------------------------------------------------------- // @Date 15.01.2008 // //**************************************************************************** // USER CODE BEGIN (UnlockProtecReg,1) // USER CODE END void MAIN_vUnlockProtecReg(void) { uword uwPASSWORD; if((SCUSLS & 0x1800) == 0x0800) // if low protected mode { uwPASSWORD = SCUSLS & 0x00FF; uwPASSWORD = (~uwPASSWORD) & 0x00FF; SCUSLC = 0x8E00 | uwPASSWORD; // command 4 } // end if low protected mode if((SCUSLS & 0x1800) == 0x1800) // if write protected mode { SCUSLC = 0xAAAA; // command 0 SCUSLC = 0x5554; // command 1 uwPASSWORD = SCUSLS & 0x00FF; uwPASSWORD = (~uwPASSWORD) & 0x00FF; SCUSLC = 0x9600 | uwPASSWORD; // command 2 SCUSLC = 0x0800; // command 3; new PASSWOR is 0x00 uwPASSWORD = SCUSLS & 0x00FF; uwPASSWORD = (~uwPASSWORD) & 0x00FF; SCUSLC = 0x8E00 | uwPASSWORD; // command 4 } // end if write protected mode } // End of function MAIN_vUnlockProtecReg //**************************************************************************** // @Function void main(void) // //---------------------------------------------------------------------------- // @Description This is the main function. // //---------------------------------------------------------------------------- // @Returnvalue None // //---------------------------------------------------------------------------- // @Parameters None // //---------------------------------------------------------------------------- // @Date 15.01.2008 // //**************************************************************************** // USER CODE BEGIN (Main,1) // USER CODE END void main(void) { // USER CODE BEGIN (Main,2) //int i=0; int x=0; int y=0Xffff; // USER CODE END MAIN_vInit(); // USER CODE BEGIN (Main,4) //GPT1_vStartTmr() GPT1_vStartTmr_GPT1_TIMER_2(); //CAN_vConfigMsgObj(0, 0); //CAN_vGetMsgObj(0, 0); while (1) { CAN_vTransmit(0); if (P9_P4==0) { switch (i) { case 1: P1L_P0=0; break; case 2: P1L_P1=0; break; case 3: P1L_P2=0; break; case 4: P1L_P3=0; break; case 5: P1L_P4=0; break; case 6: P1L_P5=0; break; case 7: P1L_P6=0; break; case 8: P1L_P7=0; break; default: P1L_P0=1; P1L_P1=1; P1L_P2=1; P1L_P3=1; P1L_P4=1; P1L_P5=1; P1L_P6=1; P1L_P7=1; x=0; break; } } if (P9_P4==1) { switch (i) { case 1: P1L_P7=0; break; case 2: P1L_P6=0; break; case 3: P1L_P5=0; break; case 4: P1L_P4=0; break; case 5: P1L_P3=0; break; case 6: P1L_P2=0; break; case 7: P1L_P1=0; break; case 8: P1L_P0=0; break; default: P1L_P0=1; P1L_P1=1; P1L_P2=1; P1L_P3=1; P1L_P4=1; P1L_P5=1; P1L_P6=1; P1L_P7=1; x=0; break; } } if (i==9){i=0;} /* while (counter1 > 0) { counter1--; counter2 = 0xFFFF; while (counter2 > 0) { counter2--; } } */ } // USER CODE END } // End of function main // USER CODE BEGIN (MAIN_General,10) // USER CODE END