![]() |
Serial Wombat Arduino Library
|
#include <SerialWombat.h>
Public Member Functions | |
SerialWombat () | |
void | begin (HardwareSerial &serial) |
initialize a Serial Wombat chip to use a Serial Interface. More... | |
void | begin (HardwareSerial &serial, bool reset) |
initialize a Serial Wombat chip to use a Serial Interface. More... | |
void | begin (TwoWire &wire, uint8_t i2cAddress) |
initialize a Serial Wombat chip to use a specified I2C Interface and address. More... | |
void | begin (uint8_t i2cAddress) |
initialize a Serial Wombat chip to use the default Wire I2C Interface and specified address. More... | |
void | begin (TwoWire &wire, uint8_t i2cAddress, bool reset) |
initialize a Serial Wombat chip to use a specified I2C Interface and address. More... | |
~SerialWombat () | |
int | sendPacket (uint8_t tx[], uint8_t rx[]) |
Send an 8 byte packet to the Serial Wombat chip and wait for 8 bytes back. More... | |
int | sendPacket (uint8_t tx[]) |
Send an 8 byte packet to the Serial Wombat chip. More... | |
char * | readVersion (void) |
Request version string (combined model and firmware) and return pointer to it. More... | |
uint16_t | readPublicData (uint8_t pin) |
Read the 16 Bit public data associated with a Serial Wombat Pin Mode. More... | |
uint16_t | writePublicData (uint8_t pin, uint16_t value) |
Write a 16 bit value to a Serial Wombat pin Mode. More... | |
uint16_t | readSupplyVoltage_mV (void) |
Measure the Serial Wombat chip's Supply voltage. More... | |
void | hardwareReset () |
Send a reset command to the Serial Wombat chip. More... | |
void | pinMode (uint8_t pin, uint8_t mode) |
Set a pin to INPUT or OUTPUT. More... | |
void | pinMode (uint8_t pin, uint8_t mode, bool pullDown, bool openDrain) |
Set a pin to INPUT or OUTPUT, with options for pull Ups and open Drain settings. More... | |
void | digitalWrite (uint8_t pin, uint8_t val) |
Set an output pin High or Low. More... | |
int | digitalRead (uint8_t pin) |
Reads the state of a Pin. More... | |
int | analogRead (uint8_t pin) |
Configures pin as analog input and does an immediate A/D conversion. More... | |
void | analogWrite (uint8_t pin, int val) |
Set a pin to PWM output. More... | |
bool | queryVersion () |
Send a version request to the Serial Wombat chip. More... | |
uint32_t | readFramesExecuted () |
Get the number of 1mS frames that have been executed since Serial Wombat chip reset. More... | |
uint16_t | readOverflowFrames () |
Get the number of times an overflow Frame has occured. More... | |
void | jumpToBoot () |
Jump to Bootloader and wait for a UART download of new firmware. More... | |
uint8_t | readRamAddress (uint16_t address) |
Read Address from RAM based on 16 bit address. More... | |
void | writeRamAddress (uint16_t address, uint8_t value) |
Write byte to Address in RAM based on 16 bit address. More... | |
uint32_t | readFlashAddress (uint32_t address) |
Read Address from Flash based on 32 bit address. More... | |
void | sleep () |
Shuts down most functions of the Serial Wombat chip reducing power consumption. More... | |
void | wake () |
Called to send a dummy packet to the Serial Wombat chip to wake it from sleep and ready it for other commands. More... | |
Public Attributes | |
uint16_t | _supplyVoltagemV = 0 |
uint8_t | model [4] = { 0 } |
Contains the last model retreived by queryVersion() as a zero-terminated string. More... | |
uint8_t | fwVersion [4] = { 0 } |
Contains the last firmware Version retreived by queryVersion() as a zero-terminated string. More... | |
uint8_t | uniqueIdentifier [16] |
uint8_t | uniqueIdentifierLength = 0 |
uint16_t | deviceIdentifier |
uint16_t | deviceRevision |
uint32_t | errorCount = 0 |
Incremented every time a communication or command error is detected. More... | |
uint32_t | errorNum = 0 |
The last error number reported. More... | |
/brief Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
This class describes the capabilties of a Serial Wombat Chip that are not Pin Mode functionalities
SerialWombat::SerialWombat | ( | ) |
SerialWombat::~SerialWombat | ( | ) |
int SerialWombat::analogRead | ( | uint8_t | pin | ) |
Configures pin as analog input and does an immediate A/D conversion.
This function is compatible with the Arduino Uno analogRead function.
It does not make use of advanced Serial Wombat chip's functionality such as averaging and filtering. Consider declaring a SerialWombatAnalogInput instead.
pin | The Serial Wombat pin to set. Valid values for SW4A: 0-3 SW4B: 1-3 |
void SerialWombat::analogWrite | ( | uint8_t | pin, |
int | val | ||
) |
Set a pin to PWM output.
This function is compatible with the Arduino Uno analogWrite function, but will output a PWM with a different frequency. Consider declaring a SerialWombatPWM instead. It has higher resolution and the ability to choose frequency.
pin | The Serial Wombat pin to set. Valid values for SW4A: 0-3 SW4B: 1-3 |
val | A value from 0 (always low) to 255(always high) for the PWM duty cycle |
void SerialWombat::begin | ( | HardwareSerial & | serial | ) |
initialize a Serial Wombat chip to use a Serial Interface.
This call causes the Serial Wombat chip to be reset through its reset command as the first operation. The Serial Wombat chips's source voltage is then read as well as its version.
serial | Serial Interface to be used by the Serial Wombat library |
void SerialWombat::begin | ( | HardwareSerial & | serial, |
bool | reset | ||
) |
initialize a Serial Wombat chip to use a Serial Interface.
The reset parameter determines if the Serial Wombat chip is reset prior to other initialization operations. If false, then any prior pin modes and configurations may still be in place. The Serial Wombat chips's source voltage is then read as well as its version.
serial | Serial Interface to be used by the Serial Wombat library |
reset | Whether or not to reset the Serial Wombat chip via command as the first initialization operation |
void SerialWombat::begin | ( | TwoWire & | wire, |
uint8_t | i2cAddress | ||
) |
initialize a Serial Wombat chip to use a specified I2C Interface and address.
This call causes the Serial Wombat chip to be reset through its reset command as the first operation. The Serial Wombat chip's source voltage is then read as well as its version.
wire | I2C interface to be used by the Serial Wombat Library |
i2cAddress | I2C Follower address of the Serial Wombat chip commanded by this instance |
void SerialWombat::begin | ( | TwoWire & | wire, |
uint8_t | i2cAddress, | ||
bool | reset | ||
) |
initialize a Serial Wombat chip to use a specified I2C Interface and address.
This call causes the Serial Wombat chip to optionally reset through its reset command as the first operation. The Serial Wombat chip's source voltage is then read as well as its version.
wire | I2C interface to be used by the Serial Wombat Library |
i2cAddress | I2C Follower address of the Serial Wombat chip commanded by this instance |
reset | Whether or not to reset the Serial Wombat chip via command as the first initialization operation. If false, then any prior pin modes and configurations may still be in place. |
void SerialWombat::begin | ( | uint8_t | i2cAddress | ) |
initialize a Serial Wombat chip to use the default Wire I2C Interface and specified address.
This call causes the Serial Wombat chip to be reset through its reset command as the first operation. The Serial Wombat chip's source voltage is then read as well as its version.
i2cAddress | I2C Follower address of the Serial Wombat chip commanded by this instance |
int SerialWombat::digitalRead | ( | uint8_t | pin | ) |
Reads the state of a Pin.
void SerialWombat::digitalWrite | ( | uint8_t | pin, |
uint8_t | val | ||
) |
Set an output pin High or Low.
Before calling this function, the pin should be configured as an input or output with pinMode()
pin | The Serial Wombat pin to set. Valid values for SW4A: 0-3 SW4B: 1-3 |
val | Valid values are HIGH or LOW not use SW_INPUT, SW_HIGH or SW_LOW here, as these have different meanings |
void SerialWombat::hardwareReset | ( | ) |
Send a reset command to the Serial Wombat chip.
Sends a reset command to the Serial Wombat chip. The calling function should wait 500mS before sending additional commands.
void SerialWombat::jumpToBoot | ( | ) |
Jump to Bootloader and wait for a UART download of new firmware.
This function causes a reset of the Serial Wombat chip and causes it to remain in the bootloader until a power-cycle occurs. This allows loading new firmware via a UART connection to the bottom two pins (DIP pins 4 (RX) and 5(TX)) on the SW4A/SW4B. When jumping to boot the TX pin will go high. All other communication or functional pins will become inputs (i.e. PWMS, etc will stop).
void SerialWombat::pinMode | ( | uint8_t | pin, |
uint8_t | mode | ||
) |
Set a pin to INPUT or OUTPUT.
This method matches the Arduino Digital io pinMode command It should only be used on pins that have not been configured to a more sophisticated (e.g. debounce or servo) pin mode.
pin | The Serial Wombat pin to set |
mode | Valid values are INPUT or OUTPUT as defined by arduino. Do not use SW_INPUT, SW_HIGH or SW_LOW here, as these have different meanings |
void SerialWombat::pinMode | ( | uint8_t | pin, |
uint8_t | mode, | ||
bool | pullDown, | ||
bool | openDrain | ||
) |
Set a pin to INPUT or OUTPUT, with options for pull Ups and open Drain settings.
pin | The Serial Wombat pin to set |
mode | Valid values are INPUT, OUTPUT or INPUT_PULLUP as defined by arduino. Do not use SW_INPUT, SW_HIGH or SW_LOW here, as these have different meanings |
pullDown | If True, a weak pull down will be enabled on this pin (No effect on SW4A/SW4B) |
openDrain | If True, output becomes openDrain output rather than push / pull |
bool SerialWombat::queryVersion | ( | ) |
Send a version request to the Serial Wombat chip.
This function queries the Serial Wombat chip for its model and version and stores the result in the public members model and fwVersion as zero terminated strings. Returns true if the response is likely a proper version response and false otherwise.
uint32_t SerialWombat::readFlashAddress | ( | uint32_t | address | ) |
Read Address from Flash based on 32 bit address.
Most Arduino users should not need this command.
This command can be used to read flash locations within the Serial Wombat Chip
Addresses are not validated to be available in a given chip's address range.
address | A 32-bit address pointing to a location in the Serial Wombat Chip's memory map |
uint32_t SerialWombat::readFramesExecuted | ( | ) |
Get the number of 1mS frames that have been executed since Serial Wombat chip reset.
This value should be roughly equal to the mS since reset. It will vary based on the Serial Wombat chip's internal oscillator variation, and may run slow if Overflow frames are occuring.
uint16_t SerialWombat::readOverflowFrames | ( | ) |
Get the number of times an overflow Frame has occured.
This value increments each time the Serial Wombat firmware determines it is time to start a new 1 mS frame, but the previous frame is still executing. Indicates processor loading over 100% of real-time. Overflows back to 0 when incremented from 65535.
uint16_t SerialWombat::readPublicData | ( | uint8_t | pin | ) |
Read the 16 Bit public data associated with a Serial Wombat Pin Mode.
Reads and returns the 16 bit value associated with a Serial Wombat Pin Mode. Additionally, values of 65 and higher have special meanings. See Serial Wombat firmware documentation for details.
pin | The pin (or special meaning value) for which to retreive data |
uint8_t SerialWombat::readRamAddress | ( | uint16_t | address | ) |
Read Address from RAM based on 16 bit address.
Most Arduino users should not need this command.
This command can be used to read variables and registers within the Serial Wombat Chip Note that reading registers may have unintended side effects. See the microcontroller datasheet for details.
Note that Note that the PIC16F15214 used in the SW4A and SW4B chips is a Microchip Enhanced Mid-Range chip with both a banked RAM area and a Linear RAM area at an offset address. See the datasheet for details. It's wierd to people who are unfamilliar with it. The same location can have two different addresses.
Addresses are not validated to be available in a given chip's address range.
address | A 16-bit address pointing to a location in the Serial Wombat Chip's memory map |
uint16_t SerialWombat::readSupplyVoltage_mV | ( | void | ) |
Measure the Serial Wombat chip's Supply voltage.
Causes the Serial Wombat chip to measure the counts for the internal 1.024V reference voltage. The Arduino library then converts these counts to a Source votlage in mV
char * SerialWombat::readVersion | ( | void | ) |
Request version string (combined model and firmware) and return pointer to it.
This queries the Serial Wombat chip for the 7 characters: product line (1 character) Model (3 characters) and firmware version (3 characters) This is stored in a string in the Serial Wombat object. A pointer to this string is returned.
int SerialWombat::sendPacket | ( | uint8_t | tx[] | ) |
Send an 8 byte packet to the Serial Wombat chip.
This method sends 8 bytes via I2C and does not wait for a response. When sending to UART, the Library waits for an 8 byte response.
tx | address of an array of 8 bytes to send |
int SerialWombat::sendPacket | ( | uint8_t | tx[], |
uint8_t | rx[] | ||
) |
Send an 8 byte packet to the Serial Wombat chip and wait for 8 bytes back.
This method sends 8 bytes via I2C or Serial and blocks until 8 bytes are receieved back
tx | address of an array of 8 bytes to send |
rx | address of an array of 8 bytes into which to put response. |
void SerialWombat::sleep | ( | ) |
Shuts down most functions of the Serial Wombat chip reducing power consumption.
This command stops the Serial Wombat chip's internal clock, greatly reducing power consumption. The host is responsible for configuring outputs to a safe state prior to calling sleep.
void SerialWombat::wake | ( | ) |
Called to send a dummy packet to the Serial Wombat chip to wake it from sleep and ready it for other commands.
uint16_t SerialWombat::writePublicData | ( | uint8_t | pin, |
uint16_t | value | ||
) |
Write a 16 bit value to a Serial Wombat pin Mode.
pin | The pin number to which to write |
value | The 16 bit value to write |
void SerialWombat::writeRamAddress | ( | uint16_t | address, |
uint8_t | value | ||
) |
Write byte to Address in RAM based on 16 bit address.
Most Arduino users should not need this command.
This command can be used to write variables and registers within the Serial Wombat Chip Note that write registers may have unintended side effects. See the microcontroller datasheet for details.
Note that Note that the PIC16F15214 used in the SW4A and SW4B chips is a Microchip Enhanced Mid-Range chip with both a banked RAM area and a Linear RAM area at an offset address. See the datasheet for details. It's wierd to people who are unfamilliar with it. The same location can have two different addresses.
Addresses are not validated to be available in a given chip's address range.
address | A 16-bit address pointing to a location in the Serial Wombat Chip's memory map |
value | An 8 bit value to be written to RAM |
uint16_t SerialWombat::_supplyVoltagemV = 0 |
Stores the last value retreived by readSupplyVoltage_mV(). Used by SerialWombatAnalogInput class to calculate mV outputs from retreived A/D counts. Don't access this member, as it may become private and SerialWombatAnalog input be made a friend of SerialWombat in the future. Call readSupplyVoltage_mV instead.
uint16_t SerialWombat::deviceIdentifier |
uint16_t SerialWombat::deviceRevision |
uint32_t SerialWombat::errorCount = 0 |
Incremented every time a communication or command error is detected.
uint32_t SerialWombat::errorNum = 0 |
The last error number reported.
uint8_t SerialWombat::fwVersion[4] = { 0 } |
Contains the last firmware Version retreived by queryVersion() as a zero-terminated string.
uint8_t SerialWombat::model[4] = { 0 } |
Contains the last model retreived by queryVersion() as a zero-terminated string.
uint8_t SerialWombat::uniqueIdentifier[16] |
uint8_t SerialWombat::uniqueIdentifierLength = 0 |