CpuCycleClock< cpuFreq > Struct Template Reference

Clock implementation for CPU cycle times. More...

#include <Clocks.h>

Inheritance diagram for CpuCycleClock< cpuFreq >:
[legend]
Collaboration diagram for CpuCycleClock< cpuFreq >:
[legend]

Public Types

using TickType = uint32_t
 
using TicksConst = TicksConst< Clock, ticks >
 
using TimeConst = TimeConst< Clock, unit, time >
 
using TicksPerUnit = std::ratio_divide< std::ratio< frequency_ >, UnitTickRatio< unit > >
 
using TimeSource = TimeSource< Clock, unit, TimeType >
 
using Ticks = Ticks< Clock, T >
 
using MaxTicks = TicksConst< maxTicks_ >
 
using MaxTime = typename MaxTicks::template TimeConst< unit >
 

Static Public Member Functions

static constexpr const char * typeName ()
 
static uint32_t ticks ()
 
static constexpr bool isFast ()
 
static constexpr uint32_t frequency ()
 
static constexpr MaxTicks maxTicks ()
 
static constexpr MaxTime< unit > maxTime ()
 
static Ratio32 ticksPerUnit (Unit unit)
 Get ticks per unit as a Ratio object. More...
 
static constexpr TimeConst< unit, time > timeConst ()
 Class template defining a fixed time quantity. More...
 
static constexpr TicksConst< ticksticksConst ()
 Class template defining a fixed tick quantity. More...
 
static constexpr TimeSource< unit, TimeType > timeSource ()
 Create a Time Source for this Clock. More...
 
static Ticks< TimeType > timeToTicks (TimeType time)
 Get the number of ticks for a given time. More...
 
static Time< TimeType > ticksToTime (TimeType ticks)
 Get the time for a given number of clock ticks. More...
 
static String toString ()
 

Detailed Description

template<CpuFrequency cpuFreq>
struct CpuCycleClock< cpuFreq >

Clock implementation for CPU cycle times.

Note
The intended purpose is to evaluate code performance and possibly for very short time interval requirements. The 32-bit counter overflows:
    Overflows every 53.687 seconds @ 80MHz CPU clock
    Overflows every 26.843 seconds @ 160MHz CPU clock

Generally this will provide the shortest time periods.

Time calculations are fixed at compile time, so you should use either CpuCycleClockNormal or CpuCycleClockFast depending on the currently configured CPU speed.

See also
See System::setCpuFrequency()

Member Typedef Documentation

◆ MaxTicks

using NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::MaxTicks = TicksConst<maxTicks_>
inherited

◆ MaxTime

using NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::MaxTime = typename MaxTicks::template TimeConst<unit>
inherited

◆ Ticks

using NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::Ticks = Ticks<Clock, T>
inherited

◆ TicksConst

using NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::TicksConst = TicksConst<Clock, ticks>
inherited

◆ TicksPerUnit

using NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::TicksPerUnit = std::ratio_divide<std::ratio<frequency_>, UnitTickRatio<unit> >
inherited

◆ TickType

using NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::TickType = uint32_t
inherited

◆ TimeConst

using NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::TimeConst = TimeConst<Clock, unit, time>
inherited

◆ TimeSource

using NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::TimeSource = TimeSource<Clock, unit, TimeType>
inherited

Member Function Documentation

◆ frequency()

static constexpr uint32_t NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::frequency ( )
inlinestaticinherited

◆ isFast()

template<CpuFrequency cpuFreq>
static constexpr bool CpuCycleClock< cpuFreq >::isFast ( )
inlinestatic

◆ maxTicks()

static constexpr MaxTicks NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::maxTicks ( )
inlinestaticinherited

◆ maxTime()

static constexpr MaxTime<unit> NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::maxTime ( )
inlinestaticinherited

◆ ticks()

template<CpuFrequency cpuFreq>
static uint32_t CpuCycleClock< cpuFreq >::ticks ( )
inlinestatic

◆ ticksConst()

static constexpr TicksConst<ticks> NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::ticksConst ( )
inlinestaticinherited

Class template defining a fixed tick quantity.

Template Parameters
ticks
Return values
TicksConst<Clock,ticks>

◆ ticksPerUnit()

static Ratio32 NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::ticksPerUnit ( Unit  unit)
inlinestaticinherited

Get ticks per unit as a Ratio object.

Return values
BasicRatio32

◆ ticksToTime()

static Time<TimeType> NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::ticksToTime ( TimeType  ticks)
inlinestaticinherited

Get the time for a given number of clock ticks.

Parameters
ticks
Return values
TimeTypeTime count, rounded to the nearest unit

◆ timeConst()

static constexpr TimeConst<unit, time> NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::timeConst ( )
inlinestaticinherited

Class template defining a fixed time quantity.

Template Parameters
time
Return values
TimeConst

◆ timeSource()

static constexpr TimeSource<unit, TimeType> NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::timeSource ( )
inlinestaticinherited

Create a Time Source for this Clock.

Template Parameters
unit
TimeType

◆ timeToTicks()

static Ticks<TimeType> NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::timeToTicks ( TimeType  time)
inlinestaticinherited

Get the number of ticks for a given time.

Parameters
time
Return values
TimeTypeTick count, rounded to the nearest tick

◆ toString()

static String NanoTime::Clock< CpuCycleClock< cpuFreq > , frequency_, uint32_t , maxTicks_ >::toString ( )
inlinestaticinherited

◆ typeName()

template<CpuFrequency cpuFreq>
static constexpr const char* CpuCycleClock< cpuFreq >::typeName ( )
inlinestatic

The documentation for this struct was generated from the following file: