Commit graph

146 commits

Author SHA1 Message Date
89dd515ae5 restore large xfer workaround
sadly, it's not possible to gracefully switch from large to blocked
xfers, further xfer ioctls fail after the first large xfer fails.
2025-03-17 11:29:28 -05:00
fc7295eb74 Actually report errors in pio_sm_xfer_data 2025-03-17 09:26:21 -05:00
b19b6c7cb0
Merge pull request #31 from FoamyGuy/resample_methods
add a way to specify resample method for xdisplay_mirror
2025-03-13 19:38:50 -05:00
foamyguy
fe7c44be88 Merge branch 'refs/heads/main' into resample_methods
# Conflicts:
#	examples/xdisplay_mirror.py
2025-03-13 16:22:30 -05:00
foamyguy
bf3409d92b
Merge pull request #32 from FoamyGuy/brightness_arg
add brightness argument to virtualdisplay and xdisplay_mirror
2025-03-13 16:08:05 -05:00
foamyguy
f80ae1e772
Merge pull request #33 from adafruit/reduce-post-addr-delay
Reduce post addr delay
2025-03-13 16:01:57 -05:00
a2827b6e28 remove debug code & a stray semicolon 2025-03-13 15:33:53 -05:00
db9a925103 tweak docs about temporal planes. 2025-03-13 10:43:08 -05:00
8b9f7d7006 Enable 3 & 5 temporal planes
By doing a bit more math we can create a sensible schedule for
these situations.  A 6/3 schedule gives a very nice 150fps with
temporal shimmer at 50Hz
2025-03-13 10:40:31 -05:00
450e3b61d3 change how the C smoke test program builds 2025-03-13 10:14:52 -05:00
a565d17654 Remove "xfer_data_large" workaround
it's not needed with updated piolib
2025-03-13 09:56:47 -05:00
57c66624ce update piolib
This diff looks bigger than it is because we'd previously
reformatted piolib sources via pre-commit.
2025-03-13 09:54:46 -05:00
8e69092434 reduce post_addr_delay
The original post_addr_delay (the delay after changing the ABCD(E)
address lines) was pretty long, for two reasons: First, the initial
timing numbers were chosen conservatively without regard to
performance; and second, because they were originally chosen
assuming a high PIO clock rate but we lowered the PIO clock to
2.7MHz.

Together this made the delay a huge 185us!

The new value of 5 is about 1.8us instead; this gives a nice
increase in FPS from 88 to 120 on my 128x128 (4 lane, 6/2 plane)
setup, without any visible artifacts.
2025-03-13 09:34:19 -05:00
foamyguy
9465e133b8 add brightness argument to virtualdisplay and xdisplay_mirror 2025-03-12 14:43:08 -05:00
foamyguy
270c8b854c use click.Choice 2025-03-12 11:47:21 -05:00
foamyguy
9a4ed78ca6 add a way to specify resample method for xdisplay_mirror 2025-03-12 10:55:21 -05:00
0a9e578944
Merge pull request #30 from adafruit/jepler-patch-1
Update virtualdisplay.py
2025-03-12 09:18:36 -05:00
499d5c56a7
Update virtualdisplay.py
remove a rogue comment
2025-03-12 09:02:43 -05:00
ac6b65f23b sssshhhh! 2025-03-11 13:03:13 -05:00
foamyguy
0e717476c4
Merge pull request #29 from FoamyGuy/xdisplay_mirror_example
add xdisplay_mirror
2025-03-11 12:26:37 -05:00
foamyguy
5961685d45 add xdisplay_mirror, remove virtualdisplay_keyboard. update virtualdisplay for new args. remove unused function from fbmirror 2025-03-11 10:21:11 -05:00
foamyguy
8d3355fca3
Merge pull request #27 from adafruit/make-package
Allow defining geometries (including more than 2 color lanes) via Python code
2025-03-11 09:40:55 -05:00
6d3e236828 This improves the doc situation
There are still some problems & some build warnings but at least the
sphinx docs have useful content now.
2025-03-11 09:36:43 -05:00
b26f8dc48d Another file to rename
docs are wrong and this might be part of why .. but not all
2025-03-11 09:26:09 -05:00
34d8cd1e4d Update copyright year 2025-03-11 09:26:09 -05:00
3fb93d310b Finish removing deprecated aliases 2025-03-11 09:26:09 -05:00
f7a247eeae this is a private variable 2025-03-11 09:19:00 -05:00
908766eeb8 remove deprecated aliases 2025-03-11 09:07:15 -05:00
372a158bd7 Make n_temporal_planes, n_lanes "standard" argmuents
& add the simple multilane mapper to examples that use click
2025-03-11 08:53:07 -05:00
8ae0fea913 move simple_multilane_mapper into package 2025-03-11 08:48:48 -05:00
7c26836a68
Merge pull request #24 from adafruit/dependabot/github_actions/pypa/cibuildwheel-2.23.0
Bump pypa/cibuildwheel from 2.22.0 to 2.23.0
2025-03-10 16:37:49 -05:00
foamyguy
1d9d652cf3 update piomatter_click import 2025-03-10 10:19:03 -05:00
9bd7813dc3 Add rudimentary multi-connector support to fbmirror as well 2025-03-10 09:53:34 -05:00
2442bee476 Make temporal dithering schedules actually work
10/4 planes gives 100fps on the active3 spiral demo on 3 64x64 panels, or
1.2 megapixels/second. And to my eye, there's no brightness shimmer.

All the below settings "look good" to my eye, higher FPS ones tend to look
better to a camera. In "10/4" mode with my camera at 100FPS it still looks
solid but because the beat frequency between the dither pattern and the
shutter is pretty pronounced I can see it shift between the sub-frames.

There's still some brightness variation between modes, with more planes
being a little brighter than fewer planes.

10/0: 50fps
10/2: 72fps
10/4: 100fps

8/0: 92fps
8/2: 109fps
8/4: 134fps

5/0: 135fps
5/2: 153fps
5/4: 210fps
2025-03-10 09:52:00 -05:00
e2c5bc3467 tweak comment & no-temporal check 2025-03-10 08:24:50 -05:00
4f548a318c the rest of the plumbing. now it should be possible to use temporal dither. untested 2025-03-09 19:50:27 -05:00
a5f505241d tidy some build errors 2025-03-09 19:36:50 -05:00
7c7569236b plumb temporal dither most of the way through 2025-03-09 19:33:48 -05:00
68c24fcc00 allow multiple schedules for temporal dithering
(however, there's no code yet to generate such schedules)
2025-03-09 14:04:13 -05:00
39bc663b26 introduce pixel schedules 2025-03-09 13:46:37 -05:00
25c324dd7d run pre-commit and commit formatting change 2025-03-07 11:43:03 -06:00
4fba6a6ee3 Merge remote-tracking branch 'origin/main' into make-package 2025-03-07 11:42:44 -06:00
foamyguy
2b7a9c6d61
Merge pull request #26 from FoamyGuy/virtual_display_withkeyboard
virtualdisplay_keyboard example
2025-03-07 10:04:00 -06:00
65b8b6fbf6 A variant spiral demo now works on active3!
.. with 3 64x64 panels.
2025-03-07 10:02:41 -06:00
296047a806 Allow using fewer than all the lanes
It's always the lowest numbered lanes. So now you can at least run
the first lane of an Active3 with a standard matrix map
2025-03-06 14:24:19 -06:00
274adf1805 Improve error reporting when address lines wrong
Before, a weird error would be shown because of the blitter thread
destructor running.
2025-03-06 14:23:30 -06:00
cfec6060d8 WIP support more RGB out pins 2025-03-06 13:49:48 -06:00
d008684e5d Add active3 pinout (only first connector works) 2025-03-06 13:49:24 -06:00
d26bba84ba Update ruff config
I saw this warning on the terminal...
2025-03-06 10:17:35 -06:00
4ffb57c3d5 Reorganize includes per ruff's preferences 2025-03-06 10:17:11 -06:00