/** ################################################################### ** THIS BEAN MODULE IS GENERATED BY THE TOOL. DO NOT MODIFY IT. ** Filename : COM0.C ** Project : RTOSDemo ** Processor : MC9S12DP256BCPV ** Beantype : AsynchroSerial ** Version : Bean 02.231, Driver 01.08, CPU db: 2.87.283 ** Compiler : Metrowerks HC12 C Compiler ** Date/Time : 19/06/2005, 15:07 ** Abstract : ** This bean "AsynchroSerial" implements an asynchronous serial ** communication. The bean supports different settings of ** parity, word width, stop-bit and communication speed, ** user can select interrupt or polling handler. ** Communication speed can be changed also in runtime. ** The bean requires one on-chip asynchronous serial channel. ** Settings : ** Serial channel : SCI0 ** ** Protocol ** Init baud rate : 38400baud ** Width : 8 bits ** Stop bits : 1 ** Parity : none ** Breaks : Disabled ** ** Registers ** Input buffer : SCI0DRL [207] ** Output buffer : SCI0DRL [207] ** Control register : SCI0CR1 [202] ** Mode register : SCI0CR2 [203] ** Baud setting reg. : SCI0BD [200] ** Special register : SCI0SR1 [204] ** ** Input interrupt ** Vector name : INT_SCI0 ** Priority : 1 ** ** Output interrupt ** Vector name : INT_SCI0 ** Priority : 1 ** ** Used pins : ** ---------------------------------------------------- ** Function | On package | Name ** ---------------------------------------------------- ** Input | 89 | PS0_RxD0 ** Output | 90 | PS1_TxD0 ** ---------------------------------------------------- ** ** ** Used baud modes : ** ---------------------------------------------------- ** No. | Mode ID | Baud rate ** ---------------------------------------------------- ** 0 | Bm_38400baud | 38400baud ** 1 | Bm_19200baud | 19200baud ** 2 | Bm_9600baud | 9600baud ** 3 | Bm_4800baud | 4800baud ** ---------------------------------------------------- ** Contents : ** SetBaudRateMode - byte COM0_SetBaudRateMode(byte Mod); ** ** (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 COM0. */ #pragma MESSAGE DISABLE C4002 /* WARNING C4002: Result not used is ignored */ #pragma MESSAGE DISABLE C4301 /* INFORMATION C4301: Inline expansion done for function call */ #include "COM0.h" #include "TickTimer.h" #include "Byte1.h" /* Definition of DATA and CODE segments for this bean. User can specify where these segments will be located on "Build options" tab of the selected CPU bean. */ #pragma DATA_SEG COM0_DATA /* Data section for this module. */ #pragma CODE_SEG COM0_CODE /* Code section for this module. */ #define OVERRUN_ERR 1 /* Overrun error flag bit */ #define FRAMING_ERR 2 /* Framing error flag bit */ #define PARITY_ERR 4 /* Parity error flag bit */ #define CHAR_IN_RX 8 /* Char is in RX buffer */ #define FULL_TX 16 /* Full transmit buffer */ #define RUNINT_FROM_TX 32 /* Interrupt is in progress */ #define FULL_RX 64 /* Full receive buffer */ #define NOISE_ERR 128 /* Noise erorr flag bit */ #define IDLE_ERR 256 /* Idle character flag bit */ #define BREAK_ERR 512 /* Break detect */ static word SerFlag; /* Flags for serial communication */ /* Bits: 0 - OverRun error */ /* 1 - Framing error */ /* 2 - Parity error */ /* 3 - Char in RX buffer */ /* 4 - Full TX buffer */ /* 5 - Running int from TX */ /* 6 - Full RX buffer */ /* 7 - Noise error */ /* 8 - Idle character */ /* 9 - Break detected */ /* 10 - Unused */ static word PrescHigh; static byte NumMode; /* Number of selected baud mode */ /* ** =================================================================== ** Method : HWEnDi (bean AsynchroSerial) ** ** Description : ** This method is internal. It is used by Processor Expert ** only. ** =================================================================== */ static void HWEnDi(void) { SCI0CR2_TE = 1; /* Enable transmitter */ SCI0CR2_RE = 1; /* Enable receiver */ SCI0CR2_RIE = 1; /* Enable recieve interrupt */ } /* ** =================================================================== ** Method : COM0_SetBaudRateMode (bean AsynchroSerial) ** ** Description : ** This method changes the channel communication speed (baud ** rate). This method can be used only if you specify a list ** of possible period settings at design time (see - Runtime setting - from a list of values). ** Each of these settings constitutes a mode and Processor ** Expert^[TM] assigns them a mode identifier. The prescaler ** and compare values corresponding to each mode are ** calculated at design time. You may switch modes at ** runtime by referring only to a mode identifier. No ** run-time calculations are performed, all the calculations ** are performed at design time. ** Parameters : ** NAME - DESCRIPTION ** Mod - Timing mode to set ** Returns : ** --- - Error code, possible codes: ** ERR_OK - OK ** ERR_SPEED - This device does not work in ** the active speed mode ** =================================================================== */ byte COM0_SetBaudRateMode(byte Mod) { static const word COM0_PrescHigh[4] = {41,81,163,326}; if(Mod >= 4) /* Is mode in baud mode list */ return ERR_VALUE; /* If no then error */ NumMode = Mod; /* New baud mode */ PrescHigh = COM0_PrescHigh[Mod]; /* Prescaler in high speed mode */ SCI0BD = PrescHigh; /* Set prescaler bits */ return ERR_OK; /* OK */ } /* ** =================================================================== ** Method : COM0_Init (bean AsynchroSerial) ** ** Description : ** This method is internal. It is used by Processor Expert ** only. ** =================================================================== */ void COM0_Init(void) { PrescHigh = 41; /* Precaler in high speed mode */ SerFlag = 0; /* Reset flags */ NumMode = 0; /* Number of selected baud mode */ /* SCI0CR1: LOOPS=0,SCISWAI=1,RSRC=0,M=0,WAKE=0,ILT=0,PE=0,PT=0 */ SCI0CR1 = 64; /* Set the SCI configuration */ /* SCI0SR2: ??=0,??=0,??=0,??=0,??=0,BRK13=0,TXDIR=0,RAF=0 */ SCI0SR2 = 0; /* Set the Break Character Length and Transmitter pin data direction in Single-wire mode */ SCI0SR1; /* Reset interrupt request flags */ /* SCI0CR2: SCTIE=0,TCIE=0,RIE=0,ILIE=0,TE=0,RE=0,RWU=0,SBK=0 */ SCI0CR2 = 0; /* Disable error interrupts */ SCI0BD = PrescHigh; /* Set prescaler bits */ HWEnDi(); /* Enable/disable device according to status flags */ } /* END COM0. */ /* ** ################################################################### ** ** This file was created by UNIS Processor Expert 03.33 for ** the Motorola HCS12 series of microcontrollers. ** ** ################################################################### */