📄 ti1.c
字号:
/** ###################################################################
** THIS BEAN MODULE IS GENERATED BY THE TOOL. DO NOT MODIFY IT.
** Filename : TI1.C
** Project : PMSM
** Processor : 56F8013VFAE
** Beantype : TimerInt
** Version : Bean 02.119, Driver 01.24, CPU db: 2.87.089
** Compiler : Metrowerks DSP C Compiler
** Date/Time : 2008-1-30, 下午 02:43
** Abstract :
** This bean "TimerInt" implements a periodic interrupt.
** When the bean and its events are enabled, the "OnInterrupt"
** event is called periodically with the period that you specify.
** TimerInt supports also changing the period in runtime.
** The source of periodic interrupt can be timer compare or reload
** register or timer-overflow interrupt (of free running counter).
** Settings :
** Timer name : TMR1 (16-bit)
** Compare name : TMR1_Compare
** Counter shared : No
**
** High speed mode
** Prescaler : divide-by-128
** Clock : 250000 Hz
** Initial period/frequency
** Xtal ticks : 800
** microseconds : 100
** seconds (real) : 0.0001000
** Hz : 10000
** kHz : 10
**
** Runtime setting : none
**
** Initialization:
** Timer : Disabled
** Events : Disabled
**
** Timer registers
** Counter : TMR1_CNTR [61461]
** Mode : TMR1_CTRL [61462]
** Run : TMR1_CTRL [61462]
** Prescaler : TMR1_CTRL [61462]
**
** Compare registers
** Compare : TMR1_CMP1 [61456]
**
** Flip-flop registers
** Mode : TMR1_SCR [61463]
** Contents :
** Enable - byte TI1_Enable(void);
** Disable - byte TI1_Disable(void);
** EnableEvent - byte TI1_EnableEvent(void);
** DisableEvent - byte TI1_DisableEvent(void);
**
** (c) Copyright UNIS, spol. s r.o. 1997-2006
** UNIS, spol. s r.o.
** Jundrovska 33
** 624 00 Brno
** Czech Republic
** http : www.processorexpert.com
** mail : info@processorexpert.com
** ###################################################################*/
/* MODULE TI1. */
#include "Events.h"
#include "TI1.h"
static bool EnUser; /* Enable/Disable device by user */
static bool EnEvent; /* Enable/Disable events */
/* Internal method prototypes */
static void HWEnDi(void);
static void SetCV(word Val);
static void SetPV(byte Val);
/*
** ===================================================================
** Method : SetCV (bean TimerInt)
**
** Description :
** Sets compare or preload register value. The method is called
** automatically as a part of several internal methods.
** This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
static void SetCV(word Val)
{
EnterCritical(); /* Disable global interrupts */
setReg(TMR1_CMPLD1,Val); /* Store given value to the compare preload 1 register */
setReg(TMR1_CMPLD2,Val); /* Store given value to the compare preload 2 register */
ExitCritical(); /* Enable global interrupts */
}
/*
** ===================================================================
** Method : SetPV (bean TimerInt)
**
** Description :
** Sets prescaler value. The method is called automatically as a
** part of several internal methods.
** This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
static void SetPV(byte Val)
{
setRegBitGroup(TMR1_CTRL,PCS,Val); /* Store given value to the prescaler */
setReg(TMR1_CNTR,0); /* Reset counter */
}
/*
** ===================================================================
** Method : HWEnDi (bean TimerInt)
**
** Description :
** Enables or disables the peripheral(s) associated with the bean.
** The method is called automatically as a part of the Enable and
** Disable methods and several internal methods.
** This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
static void HWEnDi(void)
{
if (EnUser) { /* Enable device? */
setReg(TMR1_CMP1,getReg(TMR1_CMPLD1)); /* Refresh compare 1 register */
setReg(TMR1_CMP2,getReg(TMR1_CMPLD2)); /* Refresh compare 2 register */
setRegBitGroup(TMR1_CTRL,CM,1); /* Run counter */
}
else { /* Disable device? */
setRegBitGroup(TMR1_CTRL,CM,0); /* Stop counter */
setReg(TMR1_CNTR,0); /* Reset counter */
}
}
/*
** ===================================================================
** Method : TI1_Enable (bean TimerInt)
**
** Description :
** Enables the bean - it starts the timer. Events may be
** generated ("DisableEvent"/"EnableEvent").
** Parameters : None
** Returns :
** --- - Error code, possible codes:
** ERR_OK - OK
** ERR_SPEED - This device does not work in
** the active speed mode
** ===================================================================
*/
byte TI1_Enable(void)
{
if (!EnUser) { /* Is the device disabled by user? */
EnUser = TRUE; /* If yes then set the flag "device enabled" */
HWEnDi(); /* Enable the device */
}
return ERR_OK; /* OK */
}
/*
** ===================================================================
** Method : TI1_Disable (bean TimerInt)
**
** Description :
** Disables the bean - it stops the timer. No events will be
** generated.
** Parameters : None
** Returns :
** --- - Error code, possible codes:
** ERR_OK - OK
** ERR_SPEED - This device does not work in
** the active speed mode
** ===================================================================
*/
byte TI1_Disable(void)
{
if (EnUser) { /* Is the device enabled by user? */
EnUser = FALSE; /* If yes then set the flag "device disabled" */
HWEnDi(); /* Disable the device */
}
return ERR_OK; /* OK */
}
/*
** ===================================================================
** Method : TI1_EnableEvent (bean TimerInt)
**
** Description :
** Enables the events.
** Parameters : None
** Returns :
** --- - Error code, possible codes:
** ERR_OK - OK
** ERR_SPEED - This device does not work in
** the active speed mode
** ===================================================================
*/
byte TI1_EnableEvent(void)
{
EnEvent = TRUE; /* Set the flag "events enabled" */
return ERR_OK; /* OK */
}
/*
** ===================================================================
** Method : TI1_DisableEvent (bean TimerInt)
**
** Description :
** Disables the events.
** Parameters : None
** Returns :
** --- - Error code, possible codes:
** ERR_OK - OK
** ERR_SPEED - This device does not work in
** the active speed mode
** ===================================================================
*/
byte TI1_DisableEvent(void)
{
EnEvent = FALSE; /* Set the flag "events disabled" */
return ERR_OK; /* OK */
}
/*
** ===================================================================
** Method : TI1_Init (bean TimerInt)
**
** Description :
** Initializes the associated peripheral(s) and the beans
** internal variables. The method is called automatically as a
** part of the application initialization code.
** This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
void TI1_Init(void)
{
/* TMR1_CTRL: CM=0,PCS=0,SCS=0,ONCE=0,LENGTH=1,DIR=0,Co_INIT=0,OM=4 */
setReg(TMR1_CTRL,36); /* Stop timer, use alternating compare registers */
/* TMR1_SCR: TCF=0,TCFIE=1,TOF=0,TOFIE=0,IEF=0,IEFIE=0,IPS=0,INPUT=0,Capture_Mode=0,MSTR=0,EEOF=0,VAL=0,FORCE=0,OPS=0,OEN=0 */
setReg(TMR1_SCR,16384); /* Enable compare interrupt */
setReg(TMR1_CNTR,0); /* Reset counter register */
setReg(TMR1_LOAD,0); /* Reset load register */
setReg(TMR1_CMP1,24); /* Set up compare 1 register */
setReg(TMR1_CMP2,24); /* Set up compare 2 register */
/* TMR1_COMSCR: DBG_EN=0,??=0,??=0,??=0,??=0,??=0,??=0,TCF2EN=0,TCF1EN=0,TCF2=0,TCF1=0,CL2=1,CL1=2 */
setReg(TMR1_COMSCR,6); /* Compare load control */
EnEvent = FALSE; /* Disable events */
EnUser = FALSE; /* Disable device */
SetCV((word)24); /* Store appropriate value to the compare register according to the selected high speed CPU mode */
SetPV((byte)15); /* Set prescaler register according to the selected high speed CPU mode */
HWEnDi(); /* Enable/disable device according to status flags */
}
/*
** ===================================================================
** Method : TI1_Interrupt (bean TimerInt)
**
** Description :
** The method services the interrupt of the selected peripheral(s)
** and eventually invokes the beans event(s).
** This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
#pragma interrupt alignsp
void TI1_Interrupt(void)
{
clrRegBit(TMR1_SCR,TCF); /* Reset interrupt request flag */
if (EnEvent) { /* Are the events enabled? */
TI1_OnInterrupt(); /* Invoke user event */
}
}
/* END TI1. */
/*
** ###################################################################
**
** This file was created by UNIS Processor Expert 2.98 [03.79]
** for the Freescale 56800 series of microcontrollers.
**
** ###################################################################
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -