Pinned
scLLptr
scLLptr
@sclptr.bsky.social
Low-level, high-standard engineering, unconstrained by commercial compromise. Ful-stack home renovation: Masonry to finial works. Architect of Project Svetovid (WIP): A ground-up headless wired HA system. Work: CNC, PLC - boring stuff
73 followers147 following118 posts
Wordle 1,949 6/6 ⬜⬜⬜⬜⬜ ⬜🟨🟨⬜⬜ ⬜🟩🟩🟩🟩 ⬜🟩🟩🟩🟩 ⬜🟩🟩🟩🟩 🟩🟩🟩🟩🟩 Daily Duotrigordle #1693 Guesses: 36/37 0️⃣9️⃣ 1️⃣0️⃣ 2️⃣8️⃣ 2️⃣1️⃣ 1️⃣4️⃣ 2️⃣2️⃣ 2️⃣9️⃣ 2️⃣3️⃣ 1️⃣5️⃣ 1️⃣6️⃣ 3️⃣0️⃣ 3️⃣1️⃣ 2️⃣4️⃣ 0️⃣3️⃣ 1️⃣1️⃣ 2️⃣5️⃣ 3️⃣4️⃣ 1️⃣7️⃣ 1️⃣3️⃣ 2️⃣6️⃣ 1️⃣8️⃣ 3️⃣5️⃣ 3️⃣2️⃣ 0️⃣7️⃣ 3️⃣6️⃣ 1️⃣9️⃣ 3️⃣3️⃣ 0️⃣8️⃣ 0️⃣5️⃣ 2️⃣7️⃣ 0️⃣4️⃣ 2️⃣0️⃣
There's no limit in optimizing <30 int math instruction code. Lowered abs error below 2.0 ULP. 30+ useful bits. For refwrence, float mantissa is 24 bit. To think of megabytes of bloat fat abstraction layers add to modern software, making it much slower. Releasing the lib once i perfect it.
I really enjoy pushing the M33 to the limits. Latest result for int32_t sin_q1_31(uint32_t phase_q0_32): max abs error ±2.95 ULP, at 27-32 cy/loop, using 7 to 4 regs, respectively. Absolute error-wise, 21x more precise than ideal float sinf, and up to 5x faster. No FPU, tables, time-deterministic
I really enjoy pushing the M33 to the limits. Latest result for int32_t sin_q1_31(uint32_t phase_q0_32): max abs error ±2.95 ULP, at 27-32 cy/loop, using 7 to 4 regs, respectively. Absolute error-wise, 21x more precise than ideal float sinf, and up to 5x faster. No FPU, tables, time-deterministic
Smallest error I got for sin Q1.31 approximation is 1.42 × 10⁻⁹ or ±3.05 ULP. Four optimization classes, balance speed vs reg pressure, measured: >loop : 32 cy/loop (7 regs , 3 exposed for hoisting) >perf : 32 cy/loop (6 * , 2 *) >baln : 35 cy/loop (5 * , 1 *) >sngl : 37 cy/loop (4 * , 0 *)
Smallest error I got for sin Q1.31 approximation is 1.42 × 10⁻⁹ or ±3.05 ULP. Four optimization classes, balance speed vs reg pressure, measured: >loop : 32 cy/loop (7 regs , 3 exposed for hoisting) >perf : 32 cy/loop (6 * , 2 *) >baln : 35 cy/loop (5 * , 1 *) >sngl : 37 cy/loop (4 * , 0 *)
Working on a fast sin/cos lib for RP2350. Reached: int32_t sin_q1_31(uint32_t phase_q0_32) Full input range sweep: worst abs err = -1.512730e-09, SFDR = -176.40 dBc, at phase 4262742563. No LUTs. No FPU. Time deterministic. No branching. 32 ASM instructions/35 cycles.
Wordle 1,893 5/6 ⬜⬜⬜🟨⬜ ⬜⬜⬜🟩⬜ ⬜⬜🟩🟩⬜ ⬜🟩🟩🟩🟩 🟩🟩🟩🟩🟩 Daily Duotrigordle #1637 Guesses: 37/37 1️⃣3️⃣ 3️⃣7️⃣ 1️⃣4️⃣ 1️⃣5️⃣ 2️⃣4️⃣ 2️⃣5️⃣ 2️⃣6️⃣ 3️⃣5️⃣ 1️⃣6️⃣ 0️⃣8️⃣ 1️⃣9️⃣ 2️⃣0️⃣ 2️⃣1️⃣ 2️⃣2️⃣ 3️⃣6️⃣ 2️⃣7️⃣ 0️⃣9️⃣ 1️⃣0️⃣ 2️⃣8️⃣ 1️⃣7️⃣ 2️⃣9️⃣ 3️⃣0️⃣ 0️⃣3️⃣ 3️⃣1️⃣ 0️⃣7️⃣ 0️⃣4️⃣ 3️⃣2️⃣ 3️⃣3️⃣ 2️⃣3️⃣ 1️⃣8️⃣ 3️⃣4️⃣ 1️⃣2️⃣
Accuracy test runs against libc's pow().
Gamma LUT calculation optimized for ARM Cortex-M33 #RP2350 #Pico2. 256-entry, 16-bit output LUT. 29 instr / 30 cycles per 2 entries (interleaved to mask latency). Targeted range γ = 1.000…3.000 in 0.001 steps. Maximum error: 0…+1 LSB over entire specified range. Error explodes outside ROI.
Wordle 1,890 5/6 🟨⬜⬜⬜⬜ ⬜⬜🟨⬜⬜ 🟨🟨⬜⬜⬜ ⬜🟩🟩🟨⬜ 🟩🟩🟩🟩🟩 Daily Duotrigordle #1634 Guesses: 37/37 0️⃣6️⃣ 2️⃣8️⃣ 1️⃣7️⃣ 2️⃣9️⃣ 3️⃣0️⃣ 1️⃣8️⃣ 0️⃣3️⃣ 3️⃣1️⃣ 1️⃣2️⃣ 1️⃣9️⃣ 0️⃣7️⃣ 2️⃣0️⃣ 3️⃣2️⃣ 3️⃣3️⃣ 0️⃣5️⃣ 2️⃣1️⃣ 3️⃣6️⃣ 3️⃣7️⃣ 3️⃣4️⃣ 1️⃣3️⃣ 3️⃣5️⃣ 1️⃣5️⃣ 2️⃣2️⃣ 0️⃣8️⃣ 0️⃣9️⃣ 2️⃣3️⃣ 1️⃣1️⃣ 2️⃣4️⃣ 2️⃣5️⃣ 2️⃣6️⃣ 1️⃣6️⃣ 2️⃣7️⃣
Intermittently working on the HUB75 RP2350 solution. Updated project name is secret for now. It'll be a 100% ASM solution with a highly modular and extensible arch, and a rich set of compile-time switches. Everything is dynamically reconfigurable at runtime, aside from single-shot HW interface setup
75% done with #rp2350_hub75_agp - 95% in ASM. Added P4 support and checkerboard dithering on the lower planes. Planning P8 bank shifting (top 32/64/128 entries). Goals: ▶️Full runtime config within compile-time limits ▶️Compile-time switches for FW size / RAM optimization + RAM vs FLASH code execution
I highly recommend this series www.youtube.com/watch?v=GVjc... as well as all other videos from this channel.
Quick test of a 140W PD3.1 power bank module based on IP2366. Fnirsi HS-02B iron can run on a Parkside X20V 4Ah battery for 8+hrs under normal conditions. Same system can charge a notebook or a phone. Todo: ▶️Tap into battery's charger signaling port and battery MCU's UART. ▶️Control IP2366 via I2C.
75% done with #rp2350_hub75_agp - 95% in ASM. Added P4 support and checkerboard dithering on the lower planes. Planning P8 bank shifting (top 32/64/128 entries). Goals: ▶️Full runtime config within compile-time limits ▶️Compile-time switches for FW size / RAM optimization + RAM vs FLASH code execution
I've been working on #rp2350_hub75_agp on & off. Updated goals: ▶️User registered P8//RGB332/565/888 oversized panning buffer ▶️No 2x buffer. Single 1/8 frame PIO DMA buffer ▶️ASM pipeline with 12-bit gamma expansion faster than PIO DMA per row ▶️Core 1 max utilization, Core 0 free Hope it works out.
scLLptr reposted
Scientists Built Tiny, Portable Atomic Clocks—and Naturally, They’re Headed for Drones gizmodo.com/scientists-b...
I've been working on #rp2350_hub75_agp on & off. Updated goals: ▶️User registered P8//RGB332/565/888 oversized panning buffer ▶️No 2x buffer. Single 1/8 frame PIO DMA buffer ▶️ASM pipeline with 12-bit gamma expansion faster than PIO DMA per row ▶️Core 1 max utilization, Core 0 free Hope it works out.
I set goals for my RP2350 HUB75 driver project: ▶️13-bit/col render buffer ▶️2 cascaded PIOs + 2x frame buffer ▶️BCM, also bottom 3 bitplanes PWMed ▶️ASM parallel 4x4px RGB-shuffling on Core 1 ▶️Vsync + Active FB outputs ▶️DMA interrupt-free ▶️0 CPU cost for static output #RP2350 #Embedded #HUB75
A competent manager. What a rare breed. youtube.com/shorts/GIxnV...
You are up to date.