PikeAero::CBinaryInputOutputTimer Class Reference

Implements a binary input / output pin wired to a timer. More...

#include <cbinaryinputoutputtimer.h>

Inheritance diagram for PikeAero::CBinaryInputOutputTimer:

Inheritance graph
[legend]
Collaboration diagram for PikeAero::CBinaryInputOutputTimer:

Collaboration graph
[legend]

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_TypeDeftim ()
virtual ~CBinaryInputOutputTimer ()

Private Attributes

CMachine::ubit32 mFrequency
CMachine::ubit32 mFrequencyDiv1K
TIM_TypeDefmTIM

Detailed Description

Implements a binary input / output pin wired to a timer.

Author:
Michael Sharkey <mike@pikeaero.com>

Definition at line 31 of file cbinaryinputoutputtimer.h.


Constructor & Destructor Documentation

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 }

Here is the call graph for this function:

PikeAero::CBinaryInputOutputTimer::~CBinaryInputOutputTimer (  )  [virtual]

Definition at line 43 of file cbinaryinputoutputtimer.cpp.

00044 {
00045 }


Member Function Documentation

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());}

Here is the call graph for this function:

Here is the caller graph for this function:

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;}

Here is the caller graph for this function:

bool PikeAero::CBinaryInputOutputTimer::running (  )  [inline]

Is the timer running.

Definition at line 50 of file cbinaryinputoutputtimer.h.

References tim(), and TIM_EN.

00050 {return (tim()->CR1 & TIM_EN) != 0;}

Here is the call graph for this function:

CMachine::ubit16 PikeAero::CBinaryInputOutputTimer::setFrequency ( CMachine::ubit32  frequency = 2000000  ) 

Calculate the prescaler requred to get the target frequency. Default is 2MHz.

Parameters:
frequency The target frequency expressed in Hz.
Returns:
The prescaler value.

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 }

Here is the call graph for this function:

Here is the caller graph for this function:

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().

00044 {tim()->CR1 |= TIM_EN;}

Here is the call graph for this function:

Here is the caller graph for this function:

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().

00047 {tim()->CR1 &= ~TIM_EN;}

Here is the call graph for this function:

Here is the caller graph for this function:

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;}

Here is the call graph for this function:

Here is the caller graph for this function:

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);}

Here is the caller graph for this function:

TIM_TypeDef* PikeAero::CBinaryInputOutputTimer::tim (  )  [inline]


Field Documentation

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().


The documentation for this class was generated from the following files:

Generated on Sun Oct 25 13:59:45 2009 for stingray3 by  doxygen 1.5.8