#include <cbinaryinputoutputtimer.h>


Public Member Functions | |
| CBinaryInputOutputTimer (CMachine::InterruptVector vector, TIM_TypeDef *TIMx, CMachine::ubit32 freqency=BASE_TIMER_FREQUENCY) | |
| CMachine::ubit16 | durationToTicks (CMachine::ubit32 duration) |
| Convert a duration in microseconds to a timer duration (compare) value - e.g. nuber of timer ticks. | |
| CMachine::ubit32 | frequency () |
| Frequency. | |
| bool | running () |
| Is the timer running. | |
| CMachine::ubit16 | setFrequency (CMachine::ubit32 frequency=2000000) |
| Calculate the prescaler requred to get the target frequency. Default is 2MHz. | |
| void | start () |
| Start the timer. | |
| void | stop () |
| Stop the timer. | |
| CMachine::real | ticksPerMicroSecond () |
| Retrieve the number of ticks per microsecond. | |
| CMachine::ubit32 | ticksToDuration (CMachine::ubit16 ticks) |
| Convert ticks to microseconds. | |
| TIM_TypeDef * | tim () |
| virtual | ~CBinaryInputOutputTimer () |
Private Attributes | |
| CMachine::ubit32 | mFrequency |
| CMachine::ubit32 | mFrequencyDiv1K |
| TIM_TypeDef * | mTIM |
Definition at line 31 of file cbinaryinputoutputtimer.h.
| PikeAero::CBinaryInputOutputTimer::CBinaryInputOutputTimer | ( | CMachine::InterruptVector | vector, | |
| TIM_TypeDef * | TIMx, | |||
| CMachine::ubit32 | freqency = BASE_TIMER_FREQUENCY | |||
| ) |
Initialize the control registers
Set the Prescaler
Definition at line 24 of file cbinaryinputoutputtimer.cpp.
References PikeAero::TIM_TypeDef::CR1, PikeAero::TIM_TypeDef::CR2, setFrequency(), and tim().
00029 : CObject() 00030 , mFrequency(frequency) 00031 , mTIM(TIMx) 00032 { 00033 /** Initialize the control registers */ 00034 tim()->CR2 = 0; 00035 tim()->CR1 = 0; 00036 00037 /** Set the Prescaler */ 00038 setFrequency( frequency ); 00039 00040 }

| PikeAero::CBinaryInputOutputTimer::~CBinaryInputOutputTimer | ( | ) | [virtual] |
| CMachine::ubit16 PikeAero::CBinaryInputOutputTimer::durationToTicks | ( | CMachine::ubit32 | duration | ) | [inline] |
Convert a duration in microseconds to a timer duration (compare) value - e.g. nuber of timer ticks.
Definition at line 66 of file cbinaryinputoutputtimer.h.
References ticksPerMicroSecond().
Referenced by PikeAero::CFuelInjector::setOnTime(), and PikeAero::CFuelInjector::setTurnOnTime().
00066 {return (CMachine::ubit16)(((CMachine::real)duration)/ticksPerMicroSecond());}


| CMachine::ubit32 PikeAero::CBinaryInputOutputTimer::frequency | ( | ) | [inline] |
Frequency.
Definition at line 60 of file cbinaryinputoutputtimer.h.
References mFrequency.
Referenced by PikeAero::CTaskAggregator::calculateRPM(), and ticksPerMicroSecond().
00060 {return mFrequency;}

| bool PikeAero::CBinaryInputOutputTimer::running | ( | ) | [inline] |
| CMachine::ubit16 PikeAero::CBinaryInputOutputTimer::setFrequency | ( | CMachine::ubit32 | frequency = 2000000 |
) |
Calculate the prescaler requred to get the target frequency. Default is 2MHz.
| frequency | The target frequency expressed in Hz. |
Definition at line 52 of file cbinaryinputoutputtimer.cpp.
References PikeAero::TIM_TypeDef::CR2, PikeAero::CMachine::fMCLK(), mFrequency, mFrequencyDiv1K, and tim().
Referenced by CBinaryInputOutputTimer().
00053 { 00054 mFrequency = frequency; 00055 mFrequencyDiv1K = mFrequency/1000; 00056 tim()->CR2 &= 0xFF00; 00057 tim()->CR2 |= ( 0x00FF & ( ( CMachine::fMCLK() / mFrequency ) - 1 ) ); 00058 return (tim()->CR2 & 0x00FF); 00059 }


| void PikeAero::CBinaryInputOutputTimer::start | ( | ) | [inline] |
Start the timer.
Definition at line 44 of file cbinaryinputoutputtimer.h.
References PikeAero::TIM_TypeDef::CR1, tim(), and TIM_EN.
Referenced by PikeAero::CBinaryInputCapture::CBinaryInputCapture(), PikeAero::CFuelInjector::fire(), and PikeAero::CFuelInjector::irq().


| void PikeAero::CBinaryInputOutputTimer::stop | ( | ) | [inline] |
Stop the timer.
Definition at line 47 of file cbinaryinputoutputtimer.h.
References PikeAero::TIM_TypeDef::CR1, tim(), and TIM_EN.
Referenced by PikeAero::CFuelInjector::irq().


| CMachine::real PikeAero::CBinaryInputOutputTimer::ticksPerMicroSecond | ( | ) | [inline] |
Retrieve the number of ticks per microsecond.
Definition at line 63 of file cbinaryinputoutputtimer.h.
References frequency().
Referenced by durationToTicks().
00063 {return (CMachine::real)frequency() / 1000000.0;}


| CMachine::ubit32 PikeAero::CBinaryInputOutputTimer::ticksToDuration | ( | CMachine::ubit16 | ticks | ) | [inline] |
Convert ticks to microseconds.
Definition at line 69 of file cbinaryinputoutputtimer.h.
References mFrequencyDiv1K.
Referenced by PikeAero::CInputTimingToothCounter::irq().
00069 {return ((mFrequencyDiv1K*ticks)/1000);}

| TIM_TypeDef* PikeAero::CBinaryInputOutputTimer::tim | ( | ) | [inline] |
Definition at line 41 of file cbinaryinputoutputtimer.h.
References mTIM.
Referenced by PikeAero::CBinaryInputCapture::CBinaryInputCapture(), CBinaryInputOutputTimer(), PikeAero::CFuelInjector::CFuelInjector(), PikeAero::CBinaryInputCapture::disableInterruptsA(), PikeAero::CBinaryInputCapture::disableInterruptsB(), PikeAero::CBinaryInputCapture::enableInterruptsA(), PikeAero::CBinaryInputCapture::enableInterruptsB(), PikeAero::CFuelInjector::fire(), PikeAero::CFuelInjector::irq(), PikeAero::CBinaryInputCapture::irq(), running(), setFrequency(), start(), and stop().
00041 {return mTIM;}

Definition at line 72 of file cbinaryinputoutputtimer.h.
Referenced by frequency(), and setFrequency().
Timer frequency
Definition at line 73 of file cbinaryinputoutputtimer.h.
Referenced by setFrequency(), and ticksToDuration().
Frequency divided by 1000 [optimization so we don't divide each time ]
Definition at line 74 of file cbinaryinputoutputtimer.h.
Referenced by tim().
1.5.8