#include <ctimebase.h>


Public Member Functions | |
| CTimeBase (CMachine::InterruptVector vector, TB_TypeDef *TBx, CMachine::ubit32 usec=0, CMachine::ubit8 prescaler=255) | |
| virtual void | irq (CMachine::InterruptVector v) |
| receive a hardware interrupt | |
| bool | load (CMachine::ubit32 usec) |
| set the timebase period in microseconds. | |
| void | loadPrescaler (CMachine::ubit8 prescaler) |
| load the prescaler | |
| bool | running () |
| determin the running state of the time base. return true of time base is running. | |
| void | start (CMachine::ubit32 usec) |
| void | start () |
| the timebase is not running until the start() method is called. | |
| void | stop () |
| stop the time base but remember the period. | |
| CMachine::ubit32 | ticks () |
| at every time base period, a tick register is incremented. | |
| virtual | ~CTimeBase () |
Protected Member Functions | |
| TB_TypeDef * | tb () |
Private Attributes | |
| CMachine::ubit32 | mMax |
| CMachine::ubit32 | mMin |
| TB_TypeDef * | mTB |
| CMachine::ubit32 | mTick |
| CMachine::ubit32 | mUSec |
Definition at line 31 of file ctimebase.h.
| PikeAero::CTimeBase::CTimeBase | ( | CMachine::InterruptVector | vector, | |
| TB_TypeDef * | TBx, | |||
| CMachine::ubit32 | usec = 0, |
|||
| CMachine::ubit8 | prescaler = 255 | |||
| ) |
stop counting.
calculate min and max timer values
select fMCLK as clock source.
enable interrupts from timer
Install self on interrupt vector chain.
Definition at line 24 of file ctimebase.cpp.
References PikeAero::TB_TypeDef::CR, PikeAero::CMachine::fpMCLK(), PikeAero::CMachine::installVectorIRQ(), load(), loadPrescaler(), mMax, mMin, PikeAero::TB_TypeDef::MR, PikeAero::TB_TypeDef::PR, stop(), tb(), TB_ECM, and TB_EE.
00025 : CObject() 00026 , mTB(TBx) 00027 , mTick(0) 00028 , mUSec(usec) 00029 { 00030 /** stop counting. **/ 00031 stop(); 00032 00033 /** calculate min and max timer values */ 00034 mMin = tb()->PR * 1 * static_cast<CMachine::bit32>(CMachine::fpMCLK()) / 1000; 00035 mMax = tb()->PR * 65536 * static_cast<CMachine::bit32>(CMachine::fpMCLK()) / 1000; 00036 00037 /** select fMCLK as clock source. */ 00038 tb()->CR &= ~TB_EE; 00039 00040 loadPrescaler(prescaler); 00041 load(usec); 00042 00043 /** enable interrupts from timer */ 00044 tb()->MR |= TB_ECM; 00045 00046 /** Install self on interrupt vector chain. */ 00047 CMachine::installVectorIRQ(vector,this); 00048 }

| PikeAero::CTimeBase::~CTimeBase | ( | ) | [virtual] |
stop counting.
Disable Interrupts
Remove self from interrupt vector
Definition at line 51 of file ctimebase.cpp.
References PikeAero::TB_TypeDef::MR, PikeAero::CMachine::removeVectorIRQ(), stop(), tb(), and TB_ECM.
00052 { 00053 /** stop counting. **/ 00054 stop(); 00055 /** Disable Interrupts */ 00056 tb()->MR &= ~TB_ECM; 00057 /** Remove self from interrupt vector */ 00058 CMachine::removeVectorIRQ(this); 00059 }

| void PikeAero::CTimeBase::irq | ( | CMachine::InterruptVector | v | ) | [virtual] |
receive a hardware interrupt
clear the End of Count flag
Increment the tick count
Reimplemented from PikeAero::CObject.
Reimplemented in PikeAero::CTimeBaseOneShot.
Definition at line 65 of file ctimebase.cpp.
References mTick, PikeAero::TB_TypeDef::SR, tb(), and TB_EC.
00066 { 00067 if ( tb()->SR & TB_EC ) 00068 { 00069 /** clear the End of Count flag **/ 00070 tb()->SR &= ~TB_EC; 00071 /** Increment the tick count */ 00072 ++mTick; 00073 } 00074 }

| bool PikeAero::CTimeBase::load | ( | CMachine::ubit32 | usec | ) | [inline] |
set the timebase period in microseconds.
| usec | specifies the timer period in microseconds or 0 to use the default full duration. |
set the default period
Definition at line 69 of file ctimebase.h.
References mMax, mMin, tb(), and PikeAero::TB_TypeDef::VR.
Referenced by CTimeBase(), PikeAero::CInputTimingToothCounter::irq(), and start().
00070 { 00071 if ( usec >= mMin && usec <= mMax ) 00072 { 00073 tb()->VR = static_cast<CMachine::ubit16>(65536/(mMax/usec)); 00074 return true; 00075 } 00076 /** set the default period */ 00077 tb()->VR = 0xFFFF; 00078 return false; 00079 }


| void PikeAero::CTimeBase::loadPrescaler | ( | CMachine::ubit8 | prescaler | ) | [inline] |
load the prescaler
Definition at line 59 of file ctimebase.h.
References PikeAero::TB_TypeDef::PR, and tb().
Referenced by CTimeBase().
00059 { tb()->PR = prescaler; }


| bool PikeAero::CTimeBase::running | ( | ) | [inline] |
| void PikeAero::CTimeBase::start | ( | CMachine::ubit32 | usec | ) | [inline] |
| void PikeAero::CTimeBase::start | ( | ) | [inline] |
the timebase is not running until the start() method is called.
Definition at line 41 of file ctimebase.h.
References PikeAero::TB_TypeDef::CR, tb(), and TB_SC.
Referenced by PikeAero::CInputTimingToothCounter::irq().


| void PikeAero::CTimeBase::stop | ( | ) | [inline] |
stop the time base but remember the period.
Definition at line 47 of file ctimebase.h.
References PikeAero::TB_TypeDef::CR, PikeAero::TB_TypeDef::SR, tb(), TB_EC, and TB_SC.
Referenced by CTimeBase(), PikeAero::CTimeBaseOneShot::irq(), PikeAero::CInputTimingToothCounter::irq(), and ~CTimeBase().


| TB_TypeDef* PikeAero::CTimeBase::tb | ( | ) | [inline, protected] |
Definition at line 94 of file ctimebase.h.
References mTB.
Referenced by CTimeBase(), PikeAero::CTimeBaseOneShot::irq(), irq(), load(), loadPrescaler(), running(), start(), stop(), and ~CTimeBase().
00094 {return mTB;}

| CMachine::ubit32 PikeAero::CTimeBase::ticks | ( | ) | [inline] |
at every time base period, a tick register is incremented.
Definition at line 85 of file ctimebase.h.
References mTick.
00085 {return mTick;}
CMachine::ubit32 PikeAero::CTimeBase::mMax [private] |
CMachine::ubit32 PikeAero::CTimeBase::mMin [private] |
TB_TypeDef* PikeAero::CTimeBase::mTB [private] |
CMachine::ubit32 PikeAero::CTimeBase::mTick [private] |
CMachine::ubit32 PikeAero::CTimeBase::mUSec [private] |
Definition at line 99 of file ctimebase.h.
1.5.8