X-Git-Url: https://git.sur5r.net/?p=freertos;a=blobdiff_plain;f=FreeRTOS%2FDemo%2FHCS12_CodeWarrior_banked%2FCODE%2F_COM0.C;fp=FreeRTOS%2FDemo%2FHCS12_CodeWarrior_banked%2FCODE%2F_COM0.C;h=e575af48ce930af368be090fbe161934f1ddd0d9;hp=0000000000000000000000000000000000000000;hb=b15dfacb6026af3b0ba697e5753844923b468d2b;hpb=4334233a064299a09d167a497889d3860932a587 diff --git a/FreeRTOS/Demo/HCS12_CodeWarrior_banked/CODE/_COM0.C b/FreeRTOS/Demo/HCS12_CodeWarrior_banked/CODE/_COM0.C new file mode 100644 index 000000000..e575af48c --- /dev/null +++ b/FreeRTOS/Demo/HCS12_CodeWarrior_banked/CODE/_COM0.C @@ -0,0 +1,205 @@ +/** ################################################################### +** 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. +** +** ################################################################### +*/