Serial Wombat Arduino Library
SerialWombatHSCounter.h
Go to the documentation of this file.
1 #pragma once
2 /*
3 Copyright 2023 Broadwell Consulting Inc.
4 
5 "Serial Wombat" is a registered trademark of Broadwell Consulting Inc. in
6 the United States. See SerialWombat.com for usage guidance.
7 
8 Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the "Software"),
10  * to deal in the Software without restriction, including without limitation
11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14 
15 The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17 
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24  * OTHER DEALINGS IN THE SOFTWARE.
25 */
26 
27 
28 #include <stdint.h>
29 #include "SerialWombat.h"
30 
31 class SerialWombat;
32 
65 {
66 public:
70  };
71 
77 
85  int16_t begin(uint8_t pin, SerialWombatHSCounter::publicDataOutput publicDataOutput = publicDataOutput::FREQUENCY_ON_LTH_TRANSITION ,uint16_t framesBetweenUpdates = 100, uint16_t publicOutputDivisor = 1)
86  {
87  _pin = pin;
89 
90  uint8_t tx[8] =
91  {
93  _pin,
94  _pinMode,
95  SW_LE16(framesBetweenUpdates),
96  SW_LE16(publicOutputDivisor),
97  (uint8_t)publicDataOutput };
98 
99  return(_sw.sendPacket(tx));
100 
101  }
102 
103  uint32_t readCounts(bool resetCounts = false)
104  {
105  uint8_t tx[8] =
106  {
108  _pin,
109  _pinMode,
110  (uint8_t)(resetCounts?1:0),
111  0x55,
112  0x55,
113  0x55,
114  0x55};
115  uint8_t rx[8];
116  int16_t result = _sw.sendPacket(tx, rx);
117  if (result < 0)
118  {
119  return 0;
120  }
121  uint32_t returnval = (((uint32_t)rx[6]) << 24) + (((uint32_t)rx[5]) << 16) + (((uint16_t)rx[4]) << 8) + rx[3];
122  return(returnval);
123  }
124 
125  int32_t readFrequency()
126  {
127  uint8_t tx[8] =
128  {
130  _pin,
131  _pinMode,
132  0x55,
133  0x55,
134  0x55,
135  0x55,
136  0x55 };
137  uint8_t rx[8];
138  int16_t result = _sw.sendPacket(tx, rx);
139  if (result < 0)
140  {
141  return result;
142  }
143  uint32_t returnval = (((uint32_t)rx[6]) << 24) + (((uint32_t)rx[5]) << 16) + (((uint16_t)rx[4]) << 8) + rx[3];
144  return(returnval);
145  }
149  int16_t disable ()
150  {
151  uint8_t tx[] =
152  {
154  _pin,
155  _pinMode,
156  0x55,0x55,0x55,0x55,0x55
157  };
158  return _sw.sendPacket(tx);
159  }
160 
161  uint8_t pin() { return _pin; }
162  uint8_t swPinModeNumber() { return _pinMode; }
163 
164 private:
165 
166 };
SerialWombatHSCounter::disable
int16_t disable()
Disables the high speed clock output.
Definition: SerialWombatHSCounter.h:149
SerialWombatChip
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
Definition: SerialWombat.h:283
SerialWombatCommands::CONFIGURE_PIN_MODE0
@ CONFIGURE_PIN_MODE0
(200)
SerialWombatPin::_sw
SerialWombatChip & _sw
Definition: SerialWombatPin.h:134
SerialWombatHSCounter::pin
uint8_t pin()
Used for inheritance.
Definition: SerialWombatHSCounter.h:161
SerialWombat.h
SerialWombatHSCounter::readCounts
uint32_t readCounts(bool resetCounts=false)
Definition: SerialWombatHSCounter.h:103
SerialWombatPin
Describes a Serial Wombat Pin. Is base class for other pin modes.
Definition: SerialWombatPin.h:38
SerialWombatHSCounter::SerialWombatHSCounter
SerialWombatHSCounter(SerialWombatChip &serialWombat)
Class constructor for SerialWombatHSCounter.
Definition: SerialWombatHSCounter.h:76
PIN_MODE_HS_COUNTER
@ PIN_MODE_HS_COUNTER
< (29)
Definition: SerialWombat.h:268
SerialWombatHSCounter::publicDataOutput
publicDataOutput
Definition: SerialWombatHSCounter.h:67
SerialWombatPin::_pinMode
uint8_t _pinMode
Definition: SerialWombatPin.h:135
SerialWombatChip::sendPacket
int sendPacket(uint8_t tx[], uint8_t rx[])
Send an 8 byte packet to the Serial Wombat chip and wait for 8 bytes back.
Definition: SerialWombat.cpp:114
SerialWombatHSCounter::readFrequency
int32_t readFrequency()
Definition: SerialWombatHSCounter.h:125
SerialWombatHSCounter::PULSE_COUNT
@ PULSE_COUNT
The number of pulses that have occured since initialization.
Definition: SerialWombatHSCounter.h:68
SerialWombat
This class name is depricated. Do not use for new development. Use SerialWombatChip instead.
Definition: SerialWombat.h:1519
SerialWombatHSCounter::swPinModeNumber
uint8_t swPinModeNumber()
Used for ineheritance.
Definition: SerialWombatHSCounter.h:162
SerialWombatAbstractProcessedInput
SerialWombatAnalogInput, SerialWombatPulseTimer, SerialWombatResistanceInput and others inherit from ...
Definition: SerialWombatAbstractProcessedInput.h:79
SerialWombatHSCounter
This class is used to measure the frequency or cycles of a high speed input. On the Serial Wombat 18A...
Definition: SerialWombatHSCounter.h:64
SerialWombatPin::_pin
uint8_t _pin
Definition: SerialWombatPin.h:133
SW_LE16
#define SW_LE16(_a)
Convert a uint16_t to two bytes in little endian format for array initialization.
Definition: SerialWombat.h:41
SerialWombatHSCounter::FREQUENCY_ON_LTH_TRANSITION
@ FREQUENCY_ON_LTH_TRANSITION
The frequency of the pulse in Hz.
Definition: SerialWombatHSCounter.h:69
SerialWombatCommands::CONFIGURE_PIN_MODE_DISABLE
@ CONFIGURE_PIN_MODE_DISABLE
(219)
SerialWombatCommands::CONFIGURE_PIN_MODE1
@ CONFIGURE_PIN_MODE1
(201)
SerialWombatHSCounter::begin
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.
Definition: SerialWombatHSCounter.h:85