?? lincfg.c
字號:
#define LINCFG_C
/******************************************************************************
*
* Copyright (C) 2005 Freescale Semiconductor, Inc.
* All Rights Reserved
*
* Filename: lincfg.c
*
* Revision:
*
* Functions: LIN Driver internal configuration
*
* Description:
*
* Notes: This file is NOT allowed to modify by user
*
******************************************************************************/
#include <linapi.h>
#if defined(USEXGATE)
#pragma CONST_SEG __GPAGE_SEG SHARED
#else
#pragma CONST_SEG .linconst
#endif /*defined (USEXGATE)*/
/********************************************************************************************/
/********************************************************************************************/
/** Driver hardware configuration **/
/********************************************************************************************/
/********************************************************************************************/
/********************************************************************************************/
/* S12X */
/********************************************************************************************/
#if (LIN_SCIINTPRIORITY == 0)
#warning "The SCI ISR priority is 0 and therefore the SCI ISR will be disabled"
#elif (!((LIN_SCIINTPRIORITY >= 0) & (LIN_SCIINTPRIORITY <= 7)))
#warning "The SCI ISR priority is out of range. Therefore the priority will be set to 1."
#undef LIN_SCIINTPRIORITY
#define LIN_SCIINTPRIORITY 1
#endif /* (LIN_SCIINTPRIORITY >= 0) */
#if defined(MASTER)
#if (LIN_PITINTPRIORITY == 0)
#warning "The PIT ISR priority is 0 and therefore the PIT ISR will be disabled"
#elif (!((LIN_PITINTPRIORITY >= 0) & (LIN_PITINTPRIORITY <= 7)))
#warning "The PIT ISR priority is out of range. Therefore the priority will be set to 1"
#undef LIN_PITINTPRIORITY
#define LIN_PITINTPRIORITY 1
#endif /* (LIN_PITINTPRIORITY == 0) */
#if (!((LIN_TO_WAKEUPDEL >= 4) & (LIN_TO_WAKEUPDEL <= 64)))
#warning "The wake up delimiter is out of range. Therefore the wake up delimiter will be set to 4"
#undef LIN_TO_WAKEUPDEL
#define LIN_TO_WAKEUPDEL 4
#endif /* (!((LIN_TO_WAKEUPDEL >= 4) & (LIN_TO_WAKEUPDEL <= 64))) */
#endif /* defined(MASTER) */
#define LIN_BAUDRATE_MASK 0x1FFFu /* LIN baud rate mask */
#define LIN_DIRECT_MASK 0xFFu /* Direct Page Register mask*/
#define LIN_INTPRIO_MASK 0x07u /* Direct Page Register mask*/
const struct
{
#if defined(USEZEROPAGE)
unsigned char LIN_ZeroPage; /* Zero Page Address */
#endif /* defined(USEZEROPAGE) */
unsigned int LIN_IdleTimeoutClocks; /* number of LIN_IdleClock() calls per LIN idle timeout */
unsigned int LIN_BaudRate; /* LIN baud rate setting */
unsigned char LIN_SCIIntPriority;
#if defined(MASTER)
unsigned char LIN_to_wakeup_delimiter;
unsigned char LIN_PIT_MicroCounterValue;
unsigned char LIN_PITIntPriority;
#endif /* defined(MASTER) */
} LIN_CfgConst =
{
#if defined(USEZEROPAGE)
(ZEROPAGE_ADDRESS & LIN_DIRECT_MASK),
#endif /* defined(USEZEROPAGE) */
LIN_IDLETIMEOUT,
(LIN_BAUDRATE & LIN_BAUDRATE_MASK),
(LIN_SCIINTPRIORITY & LIN_INTPRIO_MASK),
#if defined(MASTER)
LIN_TO_WAKEUPDEL,
LIN_PITMICROCOUNTER,
(LIN_PITINTPRIORITY & LIN_INTPRIO_MASK),
#endif /* defined(MASTER) */
};
#if defined(MASTER)
/********************************************************************************************/
/********************************************************************************************/
/** Timeout module constants calculation **/
/********************************************************************************************/
/********************************************************************************************/
#define LIN_MAXTOCOUNTER 0xFFFFul /* maximal allowed timer 16-bit counter value */
/* it must be long for correct computation */
/********************************************************************************************/
/* Wakeup Delimiter */
/********************************************************************************************/
#define LIN_WKUPDELLEN_TO 10ul
/* dividers set */
#define LIN_TO9DIVIDER1 1ul
#define LIN_TO9DIVIDER2 2ul
#define LIN_TO9DIVIDER3 5ul
#define LIN_TO9DIVIDER4 10ul
/* maximal integral divider search */
#if ((LIN_WKUPDELLEN_TO / LIN_TO9DIVIDER1) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO9DIVIDER LIN_TO9DIVIDER1
#elif ((LIN_WKUPDELLEN_TO / LIN_TO9DIVIDER2) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO9DIVIDER LIN_TO9DIVIDER2
#elif ((LIN_WKUPDELLEN_TO / LIN_TO9DIVIDER3) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO9DIVIDER LIN_TO9DIVIDER3
#elif ((LIN_WKUPDELLEN_TO / LIN_TO9DIVIDER4) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO9DIVIDER LIN_TO9DIVIDER4
#endif
/********************************************************************************************/
/* MaxFrame Timeout module constants calculation */
/* Nmax = (10 * Ndata + 45) * 1.4 */
/* Tmax = Nmax - 15 */
/* for HC12: Nmax - 15 */
/* for HC08: Nmax - 13 - 1 - 1 */
/********************************************************************************************/
/********************************************************************************************/
/* 1 byte: 77 - 15 = 62 */
/********************************************************************************************/
#define LIN_MAXFRAME_1_TIMEOUT 62ul
/* dividers set */
#define LIN_TO1DIVIDER1 1ul
#define LIN_TO1DIVIDER2 2ul
#define LIN_TO1DIVIDER3 31ul
#define LIN_TO1DIVIDER4 62ul
/* maximal integral divider search */
#if ((LIN_MAXFRAME_1_TIMEOUT / LIN_TO1DIVIDER1) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO1DIVIDER LIN_TO1DIVIDER1
#elif ((LIN_MAXFRAME_1_TIMEOUT / LIN_TO1DIVIDER2) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO1DIVIDER LIN_TO1DIVIDER2
#elif ((LIN_MAXFRAME_1_TIMEOUT / LIN_TO1DIVIDER3) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO1DIVIDER LIN_TO1DIVIDER3
#elif ((LIN_MAXFRAME_1_TIMEOUT / LIN_TO1DIVIDER4) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO1DIVIDER LIN_TO1DIVIDER4
#endif
/********************************************************************************************/
/* 2 bytes: 91 - 15 = 76 */
/********************************************************************************************/
#define LIN_MAXFRAME_2_TIMEOUT 76ul
/* dividers set */
#define LIN_TO2DIVIDER1 1ul
#define LIN_TO2DIVIDER2 2ul
#define LIN_TO2DIVIDER3 4ul
#define LIN_TO2DIVIDER4 19ul
#define LIN_TO2DIVIDER5 38ul
#define LIN_TO2DIVIDER6 76ul
/* maximal integral divider search */
#if ((LIN_MAXFRAME_2_TIMEOUT / LIN_TO2DIVIDER1) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO2DIVIDER LIN_TO2DIVIDER1
#elif ((LIN_MAXFRAME_2_TIMEOUT / LIN_TO2DIVIDER2) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO2DIVIDER LIN_TO2DIVIDER2
#elif ((LIN_MAXFRAME_2_TIMEOUT / LIN_TO2DIVIDER3) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO2DIVIDER LIN_TO2DIVIDER3
#elif ((LIN_MAXFRAME_2_TIMEOUT / LIN_TO2DIVIDER4) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO2DIVIDER LIN_TO2DIVIDER4
#elif ((LIN_MAXFRAME_2_TIMEOUT / LIN_TO2DIVIDER5) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO2DIVIDER LIN_TO2DIVIDER5
#elif ((LIN_MAXFRAME_2_TIMEOUT / LIN_TO2DIVIDER6) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO2DIVIDER LIN_TO2DIVIDER6
#endif
/********************************************************************************************/
/* 3 bytes: 105 - 15 = 90 */
/********************************************************************************************/
#define LIN_MAXFRAME_3_TIMEOUT 90ul
/* dividers set */
#define LIN_TO3DIVIDER1 1ul
#define LIN_TO3DIVIDER2 2ul
#define LIN_TO3DIVIDER3 3ul
#define LIN_TO3DIVIDER4 5ul
#define LIN_TO3DIVIDER5 6ul
#define LIN_TO3DIVIDER6 9ul
#define LIN_TO3DIVIDER7 10ul
#define LIN_TO3DIVIDER8 15ul
#define LIN_TO3DIVIDER9 18ul
#define LIN_TO3DIVIDER10 30ul
#define LIN_TO3DIVIDER11 45ul
#define LIN_TO3DIVIDER12 90ul
/* maximal integral divider search */
#if ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER1) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER1
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER2) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER2
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER3) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER3
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER4) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER4
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER5) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER5
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER6) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER6
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER7) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER7
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER8) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER8
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER9) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER9
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER10) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER10
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER11) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER11
#elif ((LIN_MAXFRAME_3_TIMEOUT / LIN_TO3DIVIDER12) * LIN_BITTIME) < LIN_MAXTOCOUNTER
#define LIN_TO3DIVIDER LIN_TO3DIVIDER12
#endif
/********************************************************************************************/
/* 4 bytes: 119 - 15 = 104 */
/********************************************************************************************/
#define LIN_MAXFRAME_4_TIMEOUT 104ul
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -