Serial Wombat Arduino Library

Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
SerialWombatHSCounter Class Reference

This class is used to measure the frequency or cycles of a high speed input. On the Serial Wombat 18AB chip this class can be used two times, as two clock inputs are avaialble. An enhanced digital capability pin must be used. More...

`#include <SerialWombatHSCounter.h>`

Inheritance diagram for SerialWombatHSCounter:
[legend]
Collaboration diagram for SerialWombatHSCounter:
[legend]

## Public Types
enum | publicDataOutput { PULSE_COUNT = 2 , FREQUENCY_ON_LTH_TRANSITION = 5 }
Public Types inherited from SerialWombatAbstractProcessedInput
enum | Period { PERIOD_1mS = 0 , PERIOD_2mS = 1 , PERIOD_4mS = 2 , PERIOD_8mS = 3 , PERIOD_16mS = 4 , PERIOD_32mS = 5 , PERIOD_64mS = 6 , PERIOD_128mS = 7 , PERIOD_256mS = 8 , PERIOD_512mS = 9 , PERIOD_1024mS = 10 }
enum | OutputValue { RAW = 0 , FIRST_ORDER_FILTERED = 1 , AVERAGE = 2 }
enum | Transform { NONE = 0 , SCALE_RANGE = 1 , LINEAR_MXB = 2 }

## Public Member Functions
| SerialWombatHSCounter (SerialWombatChip &serialWombat)
| Class constructor for SerialWombatHSCounter.
int16_t | begin (uint8_t pin, SerialWombatHSCounter::publicDataOutput publicDataOutput=publicDataOutput::FREQUENCY_ON_LTH_TRANSITION, uint16_t framesBetweenUpdates=100, uint16_t publicOutputDivisor=1)
| Initialization routine for SerialWombatHSCounter.
uint32_t | readCounts (bool resetCounts=false)
int32_t | readFrequency ()
int16_t | disable ()
| Disables the high speed clock output.
uint8_t | pin ()
| Used for inheritance.
uint8_t | swPinModeNumber ()
| Used for ineheritance.
Public Member Functions inherited from SerialWombatPin
| SerialWombatPin (SerialWombatChip &serialWombatChip)
| Instantiates a Serial Wombat Pin.
| SerialWombatPin (SerialWombatChip &serialWombatChip, uint8_t pin)
| Instantiates a Serial Wombat Pin.
uint16_t | readPublicData ()
| Read the 16 Bit public data associated with this pin.
void | pinMode (uint8_t mode, bool pullDown=false, bool openDrain=false)
| Set pin to INPUT or OUTPUT, with options for pull Ups and open Drain settings.
void | digitalWrite (uint8_t val)
| Set output pin High or Low.
int | digitalRead ()
| Reads the state of the Pin.
uint16_t | writePublicData (uint16_t value)
| Write a 16 bit value to this pin.
uint8_t | pin ()
| Returns the current SW pin number. Used primarily for virtual calls by derived classes.
uint8_t | swPinModeNumber ()
| Returns the Mode number. Used primarily by derived classes to populate packet data.
int16_t | initPacketNoResponse (uint8_t packetNumber, uint8_t param0=0x55, uint8_t param1=0x55, uint8_t param2=0x55, uint8_t param3=0x55, uint8_t param4=0x55)
int16_t | initPacketNoResponse (uint8_t packetNumber, uint16_t param0=0x55, uint8_t param1=0x55, uint8_t param2=0x55, uint8_t param3=0x55)
int16_t | initPacketNoResponse (uint8_t packetNumber, uint16_t param0, uint16_t param1, uint8_t param2=0x55)
int16_t | disable ()
| Disables the pin mode (if applicable)
int16_t | enablePullup (bool enabled)
| Enables the weak pull up on a pin. Implemented on SW18AB and SW8B only.
int16_t | enablePulldown (bool enabled)
| Enables the weak pull down on a pin. Implemented on SW18AB and SW8B only.
int16_t | enableOpenDrain (bool enabled)
| Enables open drain mode on a pin. Implemented on SW18AB and SW8B only.
int16_t | forceDMA (bool enabled)
| Forces use of DMA instead of hardware timing resources on SW18AB.
void | setPinNumberForTesting (uint8_t pin)
| A function designed for testing only. May have unpredictable results if used in real time. Not intended for general use.
Public Member Functions inherited from SerialWombatAbstractProcessedInput
| SerialWombatAbstractProcessedInput (SerialWombatChip &sw)
| Constructor for the SerialWombatAbstractScaledOutput Class.
int16_t | writeInverted (bool inverted)
| if enabled subtract the input value from 65535 before doing any other processing.
int16_t | writeFirstOrderFilteringConstant (uint16_t constant)
| Set a first order filtering constant to be applied to the signal Higher is heavier filtering.
int16_t | writeAveragingNumberOfSamples (uint16_t numberOfSamples)
| Set a number of samples to average for each update of the downstream signal.
int16_t | writeExcludeBelowAbove (uint16_t low, uint16_t high)
| Sets input value ranges which are discarded rather than processed.
int16_t | configureQueue (SerialWombatQueue *queue, Period period, bool queueHighByte=true, bool queueLowByte=true)
| Sets up the queueing feature for this pin mode. Queue must have been initialized prior to this queue.
int16_t | configureOutputValue (OutputValue outputValue)
| Configures whether the pin's public data value is averaged, filtered, or neither.
int16_t | writeTransformScaleRange (uint16_t min, uint16_t max)
| Scale incoming values to a range of 0 to 65535.
int16_t | writeTransformLinearMXB (int32_t m, int32_t b)
| Scale incoming values based on an mx+b linear equation.
int16_t | configureIntegrator (uint16_t negativeMaxIndex, uint16_t negativeMidIndex, uint16_t negativeDeadZone, uint16_t positiveDeadZone, uint16_t positiveMidIndex, uint16_t positiveMaxIndex, uint16_t midIncrement, uint16_t maxIncrement, uint16_t initialValue, uint8_t updateFrequencyMask=0)
| Sort incoming data into one of 5 ranges, and integrate based on linear interpolation in those ranges.
int16_t | writeProcessedInputEnable (bool enabled)
| Enables or disables all input processing functions If disabled, the raw input value is placed directly in the pin's 16 bit public data buffer.
uint16_t | readMinimum (bool resetAfterRead=false)
| Retreive the maximum public data output value since the last call with reset= true.
uint16_t | readMaximum (bool resetAfterRead=false)
| Retreive the minimum public data output value since the last call with reset= true.
uint16_t | readAverage ()
| Retreive the last completed averaged value.
uint16_t | readFiltered ()
| Retreive the filtered value.

## Additional Inherited Members
Protected Attributes inherited from SerialWombatPin
uint8_t | _pin = 255
SerialWombatChip & | _sw
uint8_t | _pinMode = 0

## Detailed Description

This class is used to measure the frequency or cycles of a high speed input. On the Serial Wombat 18AB chip this class can be used two times, as two clock inputs are avaialble. An enhanced digital capability pin must be used.

This pin mode has been tested on inputs up to 4MHz on the 18AB.

For frequency measurements a number of counts is divided by a time. The time in mS can be specified. The frequency is updated every X ms. In order to get a good value, X should be an even divisor of 1000.

The counter can be retreived and optionally be reset on reading.

The public data buffer for this pin mode can be based either on the count of cycles or the frequency.

Since the public data buffer is limited to 16 bits a divisor is available that's applied to the counter or frequency before it's copied to the public data buffer. That way a varying high speed frequency can still create a varying public data buffer rather than saturating at 65535.

A video Tutorial on this pin mode may be available in the future:

TODO - Video coming Soon TODO - Video coming soon

Definition at line 64 of file SerialWombatHSCounter.h.

## Member Enumeration Documentation

## ◆ publicDataOutput

enum SerialWombatHSCounter::publicDataOutput

Enumerator
PULSE_COUNT | The number of pulses that have occured since initialization.
FREQUENCY_ON_LTH_TRANSITION | The frequency of the pulse in Hz.

Definition at line 67 of file SerialWombatHSCounter.h.

## Constructor & Destructor Documentation

## ◆ SerialWombatHSCounter()

SerialWombatHSCounter::SerialWombatHSCounter | ( | SerialWombatChip & | serialWombat | ) |
| inline

Class constructor for SerialWombatHSCounter.

Parameters

  serialWombat | The Serial Wombat chip on which the SerialWombatHSCounter pinmode will be run

Definition at line 76 of file SerialWombatHSCounter.h.

## Member Function Documentation

## ◆ begin()

int16_t SerialWombatHSCounter::begin | ( | uint8_t | pin,
|  | SerialWombatHSCounter::publicDataOutput | publicDataOutput = publicDataOutput::FREQUENCY_ON_LTH_TRANSITION,
|  | uint16_t | framesBetweenUpdates = 100,
|  | uint16_t | publicOutputDivisor = 1 )
| inline

Initialization routine for SerialWombatHSCounter.

Parameters

  pin | The pin number on the Serial Wombat chip to use for the high speed counter
  publicDataOutput | The type of data to output in the public data buffer. Defaults to FREQUENCY_ON_LTH_TRANSITION
  framesBetweenUpdates | The number of 1ms frames between updates to the public data buffer. Defaults to 100ms
  publicOutputDivisor | A divisor that's applied to the counter or frequency before it's copied to the public data buffer. Defaults to 1

Definition at line 85 of file SerialWombatHSCounter.h.

## ◆ disable()

int16_t SerialWombatHSCounter::disable | ( |  | ) |
| inline

Disables the high speed clock output.

Definition at line 138 of file SerialWombatHSCounter.h.

## ◆ pin()

uint8_t SerialWombatHSCounter::pin | ( |  | ) |
| inline virtual

Used for inheritance.

Implements SerialWombatAbstractProcessedInput.

Definition at line 150 of file SerialWombatHSCounter.h.

## ◆ readCounts()

uint32_t SerialWombatHSCounter::readCounts | ( | bool | resetCounts = false | ) |
| inline

Definition at line 92 of file SerialWombatHSCounter.h.

## ◆ readFrequency()

int32_t SerialWombatHSCounter::readFrequency | ( |  | ) |
| inline

Definition at line 114 of file SerialWombatHSCounter.h.

## ◆ swPinModeNumber()

uint8_t SerialWombatHSCounter::swPinModeNumber | ( |  | ) |
| inline virtual

Used for ineheritance.

Implements SerialWombatAbstractProcessedInput.

Definition at line 151 of file SerialWombatHSCounter.h.