Releases: EnviroDIY/Arduino-SDI-12
v2.2.0
CRC and SAMD51 Support
Changed
- Added python version to GitHub actions (for PlatformIO)
- Switched to reusable workflows for GitHub actions
- Consolidated timer prescaler math
- Moved bitTimes and mul8x8to16 functions to the timers files
- Replace c-style casts with c++ style casts
- Do not disable interrupts during Tx for processors over 48MHz
- Cast all timer values and math to the proper type for the processor timer being read
- SAMD21 boards now use the full 16-bits of the timer rather than only the first 8-bits.
- AVR xU4 boards (ie, 32u4/Leonardo) still use the 10-bit timer as an 8-bit timer.
- Shortened name of espressif ISR access macro from
ESPFAMILY_USE_INSTRUCTION_RAM
toISR_MEM_ACCESS
- This does not change any functionality of the macro, just the name.
- Moved defines to the top of the SDI12_boards.h file
- Renamed the "tools" directory to "extras" in compliance with Arduino library standards.
- Updated copyright and license texts
- SAMD boards now partially revert clock and prescaler settings when an SDI-12 instance is ended.
- Prescalers are reset to factory settings, the clock divisor is not reset
Added
- Added CRC checking
- Added support for SAMD51 processors using dedicated timers
- Added parity checking on character reception
- This can be disabled by defining the macro
SDI12_IGNORE_PARITY
- This can be disabled by defining the macro
- Allowing (without testing) processors over 48MHz to use
micros()
function - Added a 'yield' function within stream functions to allow the buffer to fill
- The yield time can be modified using the macro
SDI12_YIELD_MS
- The yield time can be modified using the macro
Removed
- Offloaded some internal header file documentation to markdown files
- Consolidated redundant
READTIME
andTCNTX
macros, removingTCNTX
- Removed documation m_span commands
Fixed
- Added an extra addition/removal of interrupts for espressif boards in the
begin
function to properly initialize the interrupts and avoid a later error with thegpio_install_isr_service
.
v2.1.4
v2.1.3 Migrate to GitHub Actions
Improvements
- Migrate from Travis to GitHub actions
v2.1.1 Patches for ATTiny
v2.1.0 Library Rename and ESP support
To comply with requirements for inclusion in the Arduino IDE, the word Arduino has been removed from the name of this library! The repository name is unchanged.
New features:
- Adds support for Espressif ESP8266 and ESP32
- Add option of adding a delay before sending a command to allow the sensor to wake. Take advantage of this by calling the function
sendCommand(command, extraWakeTime)
. This may resolve issues with some Campbell sensors that would not previous communicate with this library. See https://www.envirodiy.org/topic/campbell-scientific-cs-215-sdi-12-communication-issues-w-mayfly/#post-14103 - Adds Doxygen (Javadoc) style comments to ALL members of the library. The generated documentation is available at https://envirodiy.github.io/Arduino-SDI-12/.
v1.3.6: Fixed extra compiler warnings
v1.3.5: Removed SAMD Tone Conflict
Timer class
Made the timer changes into a compiled class.
Maintaining interrupt control for SAMD processors as there are no interrupt vectors to be in conflict. Because the pin mode changes from input to output and back, allowing another library to control interrupts doesn't work.
Unset prescalers
Now unsetting timer prescalers and setting the isActive pointer to NULL in both the end and the destructor functions.
Also some clean-up of the examples.
Added processor timer for greater stability
Changed the incoming data ISR to use a processor timer, this makes the reception more stable, especially when the ISR is controlled by an external library. This also creates some conflicts with other libraries that use Timer2.
Also made changes to the write functions to use the timer to reduce the amount of time that all system interrupts are off.
Finally, forcing all SDI-12 objects to use the same buffer to reduce ram usage.