Phil Howard
fcd4914cbb
VL53L5CX: MicroPython bindings.
2022-04-20 14:33:00 +01:00
Phil Howard
f79b2efa9e
VL53L5CX: Fix 32k runtime allocation in platform i2c WrMulti
2022-04-20 14:32:13 +01:00
Phil Howard
637f6d18ca
VL53L5CX: Class wrapper
2022-04-19 17:24:06 +01:00
ZodiusInfuser
180df9e085
Merge branch 'motor-pio' into motor-and-encoder
2022-04-19 16:28:12 +01:00
ZodiusInfuser
9472a1f109
Fix for hard lock when taking many snapshots
2022-04-19 15:44:31 +01:00
Phil Howard
6028bc16b6
VL53L5CX: Initial bringup
2022-04-19 13:01:54 +01:00
ZodiusInfuser
0bbd07164d
Removed unneeded include
2022-04-17 16:52:16 +01:00
ZodiusInfuser
90fd4b8fb9
Encoder mostly implemented, now with MP support
2022-04-17 16:16:59 +01:00
ZodiusInfuser
70b589d431
Fixed inability to use more than one encode, plus other things
2022-04-13 20:12:44 +01:00
ZodiusInfuser
a5572e5e44
Fixes post rebase
2022-04-13 11:29:40 +01:00
ZodiusInfuser
55ee058d3e
Created a quadrature encoder reader using the Pico's PIO
2022-04-13 10:46:38 +01:00
ZodiusInfuser
5f6e4a3096
Finalised C++ motor implementation
2022-04-11 13:35:53 +01:00
ZodiusInfuser
f3c0a305f2
Improvements to MotorState
2022-04-09 01:41:42 +01:00
ZodiusInfuser
ac3edafbf4
Contined motor dev
2022-04-05 16:53:36 +01:00
ZodiusInfuser
9a9c3832a2
Various motor work
2022-04-04 20:00:03 +01:00
ZodiusInfuser
e59bdc34c4
Added initial structure of new motor classes
2022-03-30 15:50:12 +01:00
ZodiusInfuser
8a36102c53
Merged in old motor implementation
2022-03-30 15:50:12 +01:00
Phil Howard
732e59b314
Pico Wireless: Driver Rewrite
...
* Use a single common function prototype for all (but two) commands
* Remove "last param" from every param, in favour of an "end_cmd"
* Rename "send_cmd" to "start_cmd" to better reflect what it does
* Replace hard-coded param counts with macro (sizeof(params) / sizeof(inParam))
* Eliminate common causes of bugs
* Try to document some functions
* Correct some types (wl_enc_type, peek as bool)
* Handle timeouts & sleep states
* Successful command exits sleep
2022-03-30 15:30:11 +01:00
ZodiusInfuser
2e2b2002c3
Fix for CI compiler error
2022-03-30 14:52:53 +01:00
ZodiusInfuser
5f3ac9411b
Minor internal function rename, and var assignment
2022-03-30 14:29:02 +01:00
ZodiusInfuser
5192e8bc87
Tidied up some debug code
2022-03-30 14:29:02 +01:00
ZodiusInfuser
8d0ae57f2a
Changed type to uint8_t
2022-03-30 14:29:02 +01:00
ZodiusInfuser
1efa75a590
Renamed C++ Servo functions to match MP
2022-03-30 14:29:02 +01:00
ZodiusInfuser
c5be5be759
Made calibration C++ better match MP
2022-03-30 14:29:02 +01:00
ZodiusInfuser
f9a1979d8d
Added AnalogMux to C++
2022-03-30 14:29:02 +01:00
ZodiusInfuser
1b79e85be7
Added offset parameter to Analog, and fixed it not switching between ADC pins
2022-03-30 14:29:02 +01:00
ZodiusInfuser
00408d3b2b
Improved servocluster teardown
2022-03-30 14:29:02 +01:00
ZodiusInfuser
44412365b8
Tidying up of calibration
2022-03-30 14:29:02 +01:00
ZodiusInfuser
09e69ff8d9
Improvements to calibration and a calib example
2022-03-30 14:29:02 +01:00
ZodiusInfuser
6f41834082
Various changes to handle class cleanup
2022-03-30 14:29:02 +01:00
ZodiusInfuser
6c16611e88
Much optimisation of PWM generation code
2022-03-30 14:29:02 +01:00
ZodiusInfuser
f83521d3ff
Expanded list/tuple support to more functions
2022-03-30 14:29:02 +01:00
ZodiusInfuser
e1317f432b
Expanded options for enabling and disabling servos, and fixed some off-by-one errors.
2022-03-30 14:29:02 +01:00
ZodiusInfuser
c352a795a8
Fix for servo cluster frequency being inaccurate at the upper end
2022-03-30 14:29:02 +01:00
ZodiusInfuser
65268098c6
Fix for pulse width bug when changing from high to low frequencies if there was an overrun
2022-03-30 14:29:02 +01:00
ZodiusInfuser
d96db62353
Fix for frequency changes enabling servo PWM
2022-03-30 14:29:02 +01:00
ZodiusInfuser
2819fb0020
Exposed servo value loading
2022-03-30 14:29:02 +01:00
ZodiusInfuser
59014f1e86
MP now supports assigning a new calibration to a servo
2022-03-30 14:29:02 +01:00
ZodiusInfuser
176362a49b
Updated MP bindings to support latest servo features
2022-03-30 14:29:02 +01:00
ZodiusInfuser
e07e248d9e
Big refactor of clusters to reduce memory and improve usability
2022-03-30 14:29:02 +01:00
ZodiusInfuser
72516b2ecc
Added support for servo phase adjustment
2022-03-30 14:29:02 +01:00
ZodiusInfuser
7f90d3c529
Fixed a bug in the overrun code when load_pwm() is called multiple times between DMA reads
2022-03-30 14:29:02 +01:00
ZodiusInfuser
0838483d2b
Added support for pulses with large offsets that cross the wrap level
2022-03-30 14:29:02 +01:00
ZodiusInfuser
c4e39fd426
Added solution for PWMCluster not being able to reach 100% with "loading zone"
2022-03-30 14:29:02 +01:00
ZodiusInfuser
35bd03c02b
Improved Servo constructors
2022-03-30 14:29:02 +01:00
ZodiusInfuser
ec1f0a5ddc
ServoCluster states are now only created for the servos actually assigned
2022-03-30 14:29:02 +01:00
ZodiusInfuser
8fc1270404
Added additional PWM/ServoCluster constructors
2022-03-30 14:29:02 +01:00
ZodiusInfuser
d94a7c0718
Added set_frequency support to ServoCluster
2022-03-30 14:29:02 +01:00
ZodiusInfuser
aeb9705d15
Moved common PWM and MultiPWM out of servo driver, and renamed to cluster
2022-03-30 14:29:02 +01:00
ZodiusInfuser
06c272916c
Fix for incorrect ServoCluster duty
2022-03-30 14:28:17 +01:00
ZodiusInfuser
55cbf23f45
Function rename
2022-03-30 14:28:17 +01:00
ZodiusInfuser
565553b3a1
Added an additional case for out-of-bounds values
2022-03-30 14:28:17 +01:00
ZodiusInfuser
5a5282f099
Improved servo limits logic
2022-03-30 14:28:17 +01:00
ZodiusInfuser
d1238e802e
Added frequency limits
2022-03-30 14:28:17 +01:00
ZodiusInfuser
334ff4e9f9
Added frequency adjustment to Servo
2022-03-30 14:28:17 +01:00
ZodiusInfuser
93eafc4694
All current servo functionality now micropython bindings
2022-03-30 14:28:17 +01:00
ZodiusInfuser
196a5c6111
Much code refactoring and tidy up
2022-03-30 14:28:17 +01:00
ZodiusInfuser
413ef891ce
Partial hardware servo support added to MP
2022-03-30 14:28:17 +01:00
ZodiusInfuser
f5836e56df
Raised servo functions to a base class, and added ServoCluster which uses the PIO PWM.
2022-03-30 14:28:17 +01:00
ZodiusInfuser
d4012a271e
Improvements to servo calibration and usage
2022-03-30 14:28:17 +01:00
ZodiusInfuser
2e58841b5e
Started a hardware PWM servo class, with calibration support
2022-03-30 14:28:17 +01:00
ZodiusInfuser
5957304a46
Adding more PWM functionality
2022-03-30 14:28:17 +01:00
ZodiusInfuser
24aefc16bf
Tidied up PIO implementation + commenting
2022-03-30 14:28:17 +01:00
ZodiusInfuser
de3cb52931
More progress on Servo PIO
2022-03-30 14:28:17 +01:00
ZodiusInfuser
aca98ca747
current WIP code for PIO based PWM
2022-03-30 14:28:17 +01:00
Mike Bell
eb95636bca
Better if update_time is an underestimate
2022-03-29 23:16:18 +01:00
Mike Bell
d96a584ddd
Badger2040: Improve performance of some large frame buffer writes
2022-03-29 23:15:43 +01:00
Phil Howard
b1fd8936cf
Badger2040: Enforce minimum update blocking time.
2022-03-25 10:57:30 +00:00
Phil Howard
249f54fae4
ST7789: Create generic display driver for #299
2022-03-21 17:02:46 +00:00
Phil Howard
8ca91f8e23
PMW3901: Drop print from init.
2022-03-18 13:35:14 +00:00
Philip Howard
273ca5c56d
Merge pull request #252 from pimoroni/badger2040-support
...
Support for Badger 2040
2022-02-25 16:25:22 +00:00
Phil Howard
f90559ed41
Badger2040: Add support for colour inverted mode
2022-02-25 14:49:28 +00:00
Phil Howard
169e332917
Badger2040: Add Medium speed, drop spicy super turbo
2022-02-25 13:37:35 +00:00
Phil Howard
6ff5c39c1b
Badger2040: Bugfixes, danger LUTs, examples
2022-02-25 11:08:32 +00:00
Phil Howard
af230b5fd5
Badger2040: Refactor to fix MicroPython issues
...
Move busy wait logic into MicroPython bindings so that MICROPY_EVENT_POLL_HOOK can be called.
2022-02-25 11:08:32 +00:00
Phil Howard
5b084c1b9a
Badger2040: Add Fast/Slow LUTs, bugfix and tinkering helpers
2022-02-25 11:08:32 +00:00
Phil Howard
607320c4b6
Badger2040: Fix broken display on reset
...
Display configuration wasn't applied properly upon reset. Add additional delay to reset and configure busy_wait pulls.
2022-02-25 11:08:32 +00:00
Phil Howard
46d54072ce
Badger2040 MicroPython bindings
2022-02-25 11:08:32 +00:00
Phil Howard
5f52626a4f
Add partial update support
2022-02-25 11:08:32 +00:00
Jonathan Williamson
f7d61b587a
added support for badger2040
2022-02-25 11:08:31 +00:00
ZodiusInfuser
95142ffeb5
Fix for display glitch during screen initialisation
2022-02-14 12:57:34 +00:00
Phil Howard
c105d111af
ICP10125: Fix block indefinitely on repeated start
...
Should fix pimoroni/icp10125-python#2
2022-02-10 12:28:57 +00:00
Phil Howard
25bebd888f
Use .begin() and .size() as per #213
...
Correct `I2C::write_bytes` to accept a `const uint8_t*` for the array of bytes.
2022-01-25 18:20:54 +00:00
Phil Howard
0eeada72d7
New driver for SCD4X series CO2 sensors
...
Submodule Sensirion's embedded-i2c-scd4x driver
Add i2c_hal.cpp to binds it to Pimoroni::I2C
Port (loosely) scd4x_i2c_example_usage.c to Pico
2021-12-16 11:39:11 +00:00
Philip Howard
9f6ddb86ae
Merge pull request #218 from ProgramMax/main
...
Improve ST7789 frame rate ~4x
2021-12-08 15:50:48 +00:00
Philip Howard
c322717eb2
Merge pull request #193 from pimoroni/pure-cpp-i75
...
Pure C++ HUB75 example
2021-12-08 15:25:53 +00:00
Phil Howard
580d8cf7a2
Plasma: Add WS2812 W suppot for #220
2021-12-03 10:50:06 +00:00
Phil Howard
1bb4383074
HUB75 Perf, C++ scrolling text, docs
2021-12-02 12:41:30 +00:00
Phil Howard
4dc3f9b9c4
HUB75 Scrolling wavy text and clock demo
2021-12-01 21:57:40 +00:00
Phil Howard
8ae311e3a5
HUB75 Drop multicore include
2021-11-30 13:04:46 +00:00
Phil Howard
c70a9fbb3d
HUB75 Optimize performance maybe
2021-11-26 21:36:44 +00:00
Phil Howard
4d33649cd2
HUB75: More rational DMA/PIO setup/teardown, fixes reset bug
...
Defensively tear down DMA/PIO so it's in a known good state upon (soft)reset.
Issue was a race condition with DMA interrupts firing and not being achknowledged, leaving a stuck raised IRQ.
The blocking wait for DMA transactions also exacerbated this, turning a borken DMA interrupt and blank screen into an unrecoverable hardlock.
...not that the blank screen was recoverable without a soft reset anyway!
2021-11-25 17:52:44 +00:00
Phil Howard
c556391be3
HUB75 Clock example, brightness tweak
2021-11-25 16:37:46 +00:00
Phil Howard
e09ff78351
HUB75 Strobe invert and larger panel chaining support
2021-11-24 21:36:58 +00:00
Phil Howard
30a455a9d5
HUB75 Less RAM, DMA flip
...
Switch from 12-bit to 10-bit gamma to fit RGB into a uint32_t. Simplifies PIO and halves the RAM usage for F/B buffer.
Switch "flip" to *literally* swap the front and back buffers, and then asyncronously DMA the new back buffer into the front ready for the next draw.
2021-11-24 19:31:00 +00:00
Phil Howard
069ca38ae7
HUB75 Clear TX FIFOs for MicroPython soft reset glitch
2021-11-23 15:09:03 +00:00
Phil Howard
d4bf69324f
HUB75 tidyup, examples
2021-11-23 13:58:34 +00:00
Chris Blume
261d2732f0
Improve ST7789 frame rate ~4x
...
The ST7789's Tscycw (time between serial write clock cycles) is
16 ns. This can be found on page 44 of the datasheet I'm using:
https://www.waveshare.com/w/upload/a/ae/ST7789_Datasheet.pdf
(I do not know which manufacturer Pimoroni products use and if
their parts might be different. But it seems like this wouldn't
change.)
The existing code sets the SPI baud to 16 * 1000 * 1000. But baud
is Hz, not seconds. That 16 * 1000 * 1000 doesn't represent 16 ns.
It represents 16,000,000 Hz.
16 ns * (1 Hz / s) = 62,500,000 Hz.
This commit changes the baud from 16 * 1000 * 1000 to 62'500'000,
representing ~4x speed improvement in SPI and thus ~4x frame rate
improvement, since the display's frame rate is currently
SPI-limited.
A before & after video can be seen here:
https://www.youtube.com/watch?v=n2y19TCnATo
Note that also on page 44 of that datasheet Tscycr (the read speed)
is only 150 ns, not 16 ns. Right now, the Pimoroni code doesn't read
any values back from the ST7789 so it is safe to operate at the
higher speed.
Also note that the 16 * 1000 * 1000 is the requested baud. The actual
baud is the closest the Pico can get, which is 15,625,000.
The new requested baud of 62'500'000 results in an exact match.
2021-11-11 15:36:13 -08:00
Philip Howard
e249113fea
Merge pull request #183 from pimoroni/driver/icp10125
...
Driver for the ICP10125 pressure & temperature sensor
2021-11-09 17:02:50 +00:00
Philip Howard
1a9e2802fe
Merge pull request #206 from pimoroni/driver/pwm3901
...
C++ and MP drivers and examples for Optical Flow sensors
2021-10-06 11:19:29 +01:00