Serial Wombat Arduino Library
SerialWombatHSClock.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 
62 {
63  public:
69 
75 
76  int32_t begin(uint8_t pin, uint32_t frequency_Hz)
77  {
78  _pin = pin;
80 
81  uint8_t tx[] =
82  {
84  _pin,
85  _pinMode,
86  SW_LE32(frequency_Hz),
87  0x55
88  };
89  uint8_t rx[8];
90  int16_t result = _sw.sendPacket(tx, rx);
91  if (result < 0)
92  {
93  return (result);
94  }
95 
96  int32_t returnval = (((uint32_t)rx[5]) << 16) + (((uint32_t)rx[4]) << 8) + rx[3];
97  return (returnval);
98  }
99 
103  int16_t disable ()
104  {
105  uint8_t tx[] =
106  {
108  _pin,
109  _pinMode,
110  0x55,0x55,0x55,0x55,0x55
111  };
112  return _sw.sendPacket(tx);
113  }
114 };
SerialWombatChip
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
Definition: SerialWombat.h:286
PIN_MODE_HS_CLOCK
@ PIN_MODE_HS_CLOCK
Definition: SerialWombat.h:268
SerialWombatCommands::CONFIGURE_PIN_MODE0
@ CONFIGURE_PIN_MODE0
(200)
SerialWombatPin::_sw
SerialWombatChip & _sw
Definition: SerialWombatPin.h:134
SerialWombat.h
SerialWombatHSClock::disable
int16_t disable()
Disables the high speed clock output.
Definition: SerialWombatHSClock.h:103
SW_LE32
#define SW_LE32(_a)
Convert a uint32_t to four bytes in little endian format for array initialization.
Definition: SerialWombat.h:44
SerialWombatHSClock::begin
int32_t begin(uint8_t pin, uint32_t frequency_Hz)
Begin outputing a clock at a frequency on a specified pin /.
Definition: SerialWombatHSClock.h:76
SerialWombatPin
Describes a Serial Wombat Pin. Is base class for other pin modes.
Definition: SerialWombatPin.h:38
SerialWombatPin::_pinMode
uint8_t _pinMode
Definition: SerialWombatPin.h:135
SerialWombatHSClock
A Class which outputs a high speed clock signal suitable for clocking other devices.
Definition: SerialWombatHSClock.h:61
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:115
SerialWombatPin::pin
uint8_t pin()
Returns the current SW pin number. Used primarily for virtual calls by derived classes.
Definition: SerialWombatPin.h:121
SerialWombatPin::_pin
uint8_t _pin
Definition: SerialWombatPin.h:133
SerialWombatHSClock::SerialWombatHSClock
SerialWombatHSClock(SerialWombatChip &sw)
Class constructor for SerialWombatHSClock pin mode.
Definition: SerialWombatHSClock.h:68
SerialWombatCommands::CONFIGURE_PIN_MODE_DISABLE
@ CONFIGURE_PIN_MODE_DISABLE
(219)