Fix 8x8 zone mapping: use official ams-OSRAM remap table#2
Closed
ladyada-piclaw wants to merge 24 commits intoadafruit:mainfrom
Closed
Fix 8x8 zone mapping: use official ams-OSRAM remap table#2ladyada-piclaw wants to merge 24 commits intoadafruit:mainfrom
ladyada-piclaw wants to merge 24 commits intoadafruit:mainfrom
Conversation
Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
INT pin is not used internally - users manage it directly. EN pin is optional (breakouts have pullup). Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
- EN pin defaults to -1 (not needed if hardwired HIGH on breakout) - begin() now accepts i2cSpeed parameter (default 400kHz) - Simple examples use plain Adafruit_TMF8828 tmf; constructor - Only power_modes and set_address examples pass EN_PIN Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
Doxygen 1.8.13 chokes on markdown badge img-in-a tags. Exclude README.md from Doxyfile instead of hacking the markdown. Co-authored-by: ladyada <limor@ladyada.net>
Replace verbose fail/while(1) blocks with halt(F(msg)) calls. Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
Add forceReset() that writes cpu_reset bit in ENABLE register to force the sensor back to ROM bootloader before firmware download. Test 01 now verifies re-init works by calling begin() twice. Co-authored-by: ladyada <limor@ladyada.net>
- Remove waitForResult(), use non-blocking dataReady() poll in loop() - Replace printCell() with snprintf-based printGrid() - Move helper functions after loop() - Add tmf8828_spad_map_t enum for all 14 SPAD map IDs - Add inline comments for configure() args Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
New tmf8828_frame_t struct and readFrame() method collect all 4 subcaptures internally, returning true only when a complete frame is ready. Simplifies 01_simpletest to use readFrame() instead of manual accumulation. Also adds tmf8828_spad_map_t enum. Co-authored-by: ladyada <limor@ladyada.net>
Each subcapture has 36 results but every 9th is a reference channel. Stripping those gives 32 zones (16 per object). 4 subcaptures x 16 = 64 zones = true 8x8 grid. Credit: shabaz123/TMF8828 for the mapping. Co-authored-by: ladyada <limor@ladyada.net>
Subcaptures don't always arrive in order. Map sub N to rows N*2..(N*2+1) instead of using arrival order. Co-authored-by: ladyada <limor@ladyada.net>
Zone mapping from shabaz123/TMF8828 viewer (confirmed against ams EVM). Each subcapture's 16 zones map to specific interleaved 8x8 positions, not sequential rows. Co-authored-by: ladyada <limor@ladyada.net>
Two bugs in readFrame() zone mapping: 1. Reference channel is the LAST entry in each group of 9 (indices 8, 17, 26, 35), not the FIRST. Changed skip from (i%9)==0 to (i%9)==8. 2. Zone map order was wrong - had the correct SET of grid positions per sub-capture but wrong ORDER within each. Updated to the official ams-OSRAM remap table from the tmf882x descattering filter example. These bugs caused 8 zones (columns 5+7, rows 2-3 and 6-7) to always read zero because reference channel data was being mapped to real grid positions, and real zone data was being placed in wrong cells. Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
Two bugs in readFrame() zone mapping: 1. Reference channel is the LAST entry in each group of 9 (indices 8, 17, 26, 35), not the FIRST. Changed skip from (i%9)==0 to (i%9)==8. 2. Zone map order was wrong - had the correct SET of grid positions per sub-capture but wrong ORDER within each. Updated to the official ams-OSRAM remap table from the tmf882x descattering filter example. These bugs caused 8 zones (columns 5+7, rows 2-3 and 6-7) to always read zero because reference channel data was being mapped to real grid positions, and real zone data was being placed in wrong cells. Co-authored-by: ladyada <limor@ladyada.net>
Co-authored-by: ladyada <limor@ladyada.net>
Author
|
Closing — will resubmit as part of a single consolidated PR for full review. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two bugs in readFrame() zone mapping:
Reference channel skip wrong: Was skipping first entry in each group of 9 (
(i%9)==0), but the reference channel is the LAST entry (indices 8, 17, 26, 35). Changed to(i%9)==8.Zone map order wrong: Had the correct SET of grid positions per sub-capture but the WRONG ORDER within each. Updated to the official ams-OSRAM remap table from the
tmf882x_descattering_filterPython example.These bugs caused 8 zones to always read zero (reference channel data mapped to real grid positions) and other zones placed in wrong cells.
Also:
#definefor easy customizationTested on Metro Mini + TMF8828 breakout, output matches ams-OSRAM GUI.