Neil McKechnie
d5a394d4e6
Prepare HAL device drivers to support Extended I2C Addresses
...
Update I2C addresses of HAL devices to type I2CAddress (to support extended address functions).
Cast I2CAddress variables in DIAG calls to (int).
Remove uses of max() function (not available on some platforms.
2023-02-07 14:55:14 +00:00
Neil McKechnie
13bd6ef9eb
HAL: Add support for Extended Addresses and I2C Multiplexer
...
Change I2C addresses from uint8_t to I2CAddress, in preparation for MUX support. Currently, by default, I2CAddress is typedef'd to uint8_t.
MUX support implemented for AVR and Wire versions.
2023-02-04 23:57:22 +00:00
Neil McKechnie
45657881eb
Merge branch 'devel-nmck' of https://github.com/DCC-EX/CommandStation-EX into devel-nmck
2023-02-04 23:01:51 +00:00
Neil McKechnie
a590245e93
I2CManager_SAMD.h: Remove unneeded declaration.
2023-02-04 21:01:02 +00:00
Neil McKechnie
6f5680fce0
DFPlayer: Avoid jumps in volume when switching song and reducing volume at the same time.
2023-02-04 20:59:19 +00:00
Neil McKechnie
2f46a8e083
Add EX-RAIL 'ANOUT' function for general analogue outputs.
2023-02-04 20:56:12 +00:00
Neil McKechnie
bd62939713
Fix handling of hex numbers to avoid extending MSB (sign bit)
...
Also, added format %X (unsigned long) to complement %x (unsigned int).
2023-02-04 20:55:14 +00:00
Neil McKechnie
27ddc7b30b
IO_ExampleSerial - refactor and update comments
...
To more directly reflect the bulk of HAL drivers, the .h/.cpp split has been removed and the class is fully defined in the .h file.
2023-02-03 12:56:19 +00:00
Neil McKechnie
81559998ec
Update IODevice base class to better support filter drivers
...
Filter drivers provide extra functionality above a hardware driver. For example, a hardware driver for a PWM module may just set the PWM ratio, but a separate filter driver could animate motors or servos over time, calling the PWM driver to output the pulses. This would allow the animations to be easily implemented on a different type of PWM module.
2023-02-03 12:55:25 +00:00
Neil McKechnie
847ced2f49
Update IO_VL53L0X.h
...
Improve comments; drive XSHUT pin through pullup resistor, not directly.
2023-02-03 12:46:38 +00:00
Neil McKechnie
49713badb2
Update I2CManager_NonBlocking.h
...
Add code to try and recover from stuck bus following a timeout.
2023-02-02 12:21:35 +00:00
pmantoine
be88344407
PCF8575 16-bit port device support added
2023-02-02 07:12:47 +08:00
Neil McKechnie
ba9b363058
I2CManager_NonBlocking - Defer I2C speed changes for all drivers
...
Following on from the change to I2CManager_SAMD.h, the capability of deferring a request to change the speed of the I2C has been removed from the SAMD driver and put into the common NonBlocking code, so that all native drivers benefit from it.
2023-01-31 18:39:15 +00:00
Neil McKechnie
bdffd36820
IODevice.h - change visibility of findDevice to protected.
...
To support nested drivers efficiently (i.e. to allow the higher driver to call another driver directly, without searching for a VPIN every time), the visibility of the IODevice::findDevice() function has been changed from private to protected.
2023-01-31 15:24:38 +00:00
Neil McKechnie
4d350040ba
I2CManager_SAMD.h - avoid bus hangs on speed changes
...
The speed change is deferred until the next transmission is about to start to avoid issues with the I2C module being disabled and enabled during a transmission.
2023-01-31 12:28:51 +00:00
Neil McKechnie
291a331f3e
Fix read operations on I2CManager for SAMD
2023-01-31 00:36:57 +00:00
Neil McKechnie
d0ce59b19f
I2CManager_Mega4809.h - allow other I2C clock speeds.
2023-01-24 09:35:10 +00:00
Neil McKechnie
a3d4255fee
Revert "I2CManager_Mega4809.h - allow other I2C clock speeds."
...
This reverts commit 682c47f7dd
.
2023-01-24 09:33:17 +00:00
Neil McKechnie
e8e00f69d6
Non-blocking I2C - reset byte counters on timeout.
2023-01-23 22:31:33 +00:00
Neil McKechnie
10c8915d33
Ensure correct functions are called for strcpy_P, strncmp_P, strlen_P etc. on non-AVR targets..
2023-01-23 22:28:43 +00:00
Neil McKechnie
682c47f7dd
I2CManager_Mega4809.h - allow other I2C clock speeds.
2023-01-23 22:23:05 +00:00
Neil McKechnie
705617239f
Sort out I2C timeout handling, and further I2C diagnostics.
...
Timeout handling and recovery in loop() function now operative.
Start-up check for I2C signals short to ground added.
Initial I2C device probe speed up.
Possible infinite loops in I2C AVR native driver during fault conditions removed.
2023-01-22 13:13:20 +00:00
Neil McKechnie
bfbc45674f
Update IO_AnalogueInputs.h
...
Add I2C initialisation calls (previously missing).
2023-01-22 12:38:24 +00:00
Neil McKechnie
e079a9e395
Update IO_VL53L0X.h
...
Improve address changing logic.
2023-01-22 12:37:16 +00:00
Neil McKechnie
ccf463b507
IODevice.cpp: Fix error in overlap checking.
...
The checkNoOverlap() function didn't work correctly in the case where one device has nPins=0. All devices configured after that were rejected, even when no overlap was present.
2023-01-16 23:03:53 +00:00
Neil McKechnie
abf62dfd85
IO_VL53L0X driver: improve I2C error checking and reporting.
2023-01-16 23:00:58 +00:00
Neil McKechnie
7c25f22939
Fix error reported in IO_DFPlayer.h when compiling for some platforms
2023-01-14 23:50:33 +00:00
Neil McKechnie
0c054c4d42
Merge branch 'devel' into devel-nmck
2023-01-14 23:37:17 +00:00
Neil McKechnie
538519dd9d
Add option to suppress I2C retries.
...
I2CRB method suppressRetries() added to allow retries to be suppressed.
2023-01-14 18:58:06 +00:00
Neil McKechnie
6e69df2da8
Add I2C retries to Wire and to non-blocking I2CManager.
2023-01-14 18:18:57 +00:00
Neil McKechnie
3c5b7bbcfe
HAL updates
...
Remove redundant deferment of device _begin() calls (no longer necessary).
Improve diagnostic loop measurement.
2023-01-14 17:15:30 +00:00
Neil McKechnie
79437bbf37
Update MotorDriver.cpp
...
Remove unnecessary and undesirable interrupt disable/enable when writing to HAL driver.
2023-01-14 17:10:45 +00:00
pmantoine
1be382a6ed
Fixed comment re Serial1 for STM32F446RE
2023-01-14 12:45:21 +08:00
pmantoine
1f433d0c17
Serial1 for STM32F446RE corrected.
2023-01-14 12:43:05 +08:00
pmantoine
046e62a8b3
Minor fix to DCCTimerSTM32.cpp for F412ZG.
2023-01-13 17:24:26 +08:00
peteGSX
a2c7c7d12a
Merge pull request #292 from DCC-EX:exio-prevent-digital-analogue-conflict
...
Exio-prevent-digital-analogue-conflict
2023-01-12 08:21:13 +10:00
peteGSX
9b36bdcf46
Logic and diag message done
2023-01-12 08:10:41 +10:00
peteGSX
a8646a2f32
Fix EX-Turntable diag message
2023-01-12 07:33:50 +10:00
peteGSX
22e20f9092
Logic added and working
2023-01-12 07:27:42 +10:00
peteGSX
de4954ca3e
Merge pull request #288 from DCC-EX:debug-ex-io-expander-on-mega
...
Debug-ex-io-expander-on-mega
2023-01-10 20:11:45 +10:00
peteGSX
c26f53e1fa
Device driver fixed
2023-01-10 20:05:09 +10:00
peteGSX
e48a40fafb
Change to blocking I2CManager calls
2023-01-10 13:07:54 +10:00
peteGSX
5c120efa16
Add being
2023-01-10 08:16:42 +10:00
peteGSX
9abcfb9e4f
Add begin delay to test
2023-01-09 20:08:36 +10:00
peteGSX
e01893bcf1
Comment out unused variables
2023-01-09 20:03:18 +10:00
pmantoine
6eff836473
Add -Wunused-variable build flag to Nucleo builds
2023-01-09 17:18:50 +08:00
pmantoine
402e16727c
Fix platformio for Nucleo-F446RE
2023-01-09 16:47:29 +08:00
pmantoine
658fca2601
Nucleo-F446RE Build target support
2023-01-09 16:24:29 +08:00
peteGSX
3fccf6a484
Fix EX-IOExpander myHal.cpp example
2023-01-03 08:57:21 +10:00
peteGSX
ace9c1642a
Merge pull request #285 from DCC-EX:add-rotary-encoder
...
New working rotary encoder branch
2022-12-30 10:38:10 +10:00