Engineering Lab Log

Lab Notes and Bug Reviews

Ten public-project debugging records preserving the symptom, hypothesis, investigation, evidence-supported cause, fix and reusable lesson.

FPGA DDS: Blank or Corrupted Display

Symptom: DDS, PWM and statistics simulations passed, but the 74HC595 display was blank or corrupted.

Investigation: Verified the algorithm blocks separately, then checked serial bit order, segment polarity and the adc_valid update boundary.

Cause: Shift order and active display levels were inconsistent; waveform generation was not at fault.

Fix: Centralized polarity and shift order in the display module and updated statistics only on valid ADC samples.

Boundary: Simulation, compilation and timing pass; analog board I/O remains to be measured.

View project →

FPGA QPSK: Correct Constellation but Growing BER

Symptom: Constellation points were correct while the error counter continued to grow.

Investigation: Checked all rotations, compared transmitted reference and decision cycle by cycle, and inspected signed I/Q widths.

Cause: Reference bits and decisions belonged to different pipeline cycles.

Fix: Added an equal reference delay, made signed widths explicit and sampled UART telemetry.

Lesson: A correct constellation does not verify BER alignment.

View project →

FreeRTOS Smart Car: C8T6 Resource Pressure

Symptom: Tasks, controls and diagnostics left little room in 64 KB Flash and 20 KB RAM.

Investigation: Built C8T6 and RCT6 targets, inspected size and linker output, ran host tests and checked the reserved Flash page.

Cause: The complete task, display, diagnostic and parameter set approached the MCU limits.

Fix: Used fixed arrays, removed a full OLED framebuffer, reduced task resources and reserved the final 1 KB page.

Boundary: Firmware and host tests pass; vehicle power, calibration and endurance are pending.

View project →

Temperature Monitor: PB3/PB4 Conflict with JTAG

Symptom: Key inputs on PB3/PB4 did not behave as GPIO.

Investigation: Brought up MCU, sensors, OLED, alarm, keys, SD and UART in order and checked debug-port multiplexing.

Cause: PB3/PB4 were still assigned to the full JTAG interface.

Fix: Disabled full JTAG while retaining SWD, then re-tested keys.

Lesson: Check pin multiplexing before rewriting application logic.

View project →

Modulation Recognition: Low-SNR Instability

Symptom: Phase and frequency-difference features became unstable at low SNR, while class amplitude scales biased decisions.

Investigation: Inspected waveforms, spectra, constellations, feature NaN/ranges and low/high-SNR confusion matrices; ruled out leakage.

Cause: Unequal scale and noise-sensitive individual features.

Fix: Normalized each frame and combined amplitude, phase and higher-order statistics in ECOC RBF-SVM.

Lesson: Accuracy requires context from normalization and confusion matrices.

View project →

Knowledge Base: A Reachable Homepage Is Not a Working Flow

Symptom: Opening the homepage did not prove login, upload, parsing, retrieval, detail, deletion or persistence.

Investigation: Checked Compose and syntax, then used cookie-preserving HTTP requests for the complete flow and re-tested after restart.

Cause: A single endpoint health check covered no stateful behavior.

Fix: Added end-to-end requests and persistence verification.

Lesson: Web acceptance must follow the real user path.

View project →

Origin Automation: Script Blocked by Execution Policy

Symptom: PowerShell automation did not run or no OPJU appeared.

Investigation: Checked source tables and previews, execution policy, result timestamps and the background Origin process.

Cause: Policy blocked the script and COM execution was not always visible.

Fix: Used process-scoped policy bypass, explicitly saved and exited Origin, and verified output timestamp plus process state.

Lesson: Validate automation from artifacts, not only a visible window.

View project →

RRT: Safe Nodes with an Edge Through an Obstacle

Symptom: New nodes were outside obstacles, but their connecting edges crossed obstacles.

Investigation: Reproduced with fixed seeds across default, narrow and sealed maps and compared GUI with headless output.

Cause: Endpoint-only checks did not establish edge safety, and robot radius was missing.

Fix: Checked every segment, inflated obstacles for clearance and propagated subtree cost after RRT* rewiring.

Lesson: Planning tests need edge collision, impossible maps and repeatable seeds.

View project →

first-repo: Saving Locally Did Not Change GitHub

Symptom: A saved file did not appear on GitHub.

Investigation: Checked status, log, branch, remote and the GitHub commit page.

Cause: Save, local commit and remote push were treated as one action.

Fix: Established the explicit save, stage, commit and push sequence.

Lesson: Git does not update a remote merely because a file was saved.

View project →

remote-repo: Push Rejected by Remote Updates

Symptom: A local commit could not be pushed because the remote branch had advanced.

Investigation: Verified remote, current branch and ahead/behind state.

Cause: The remote contained commits absent locally.

Fix: Pulled and resolved history before pushing; made remote and branch checks routine.

Lesson: Synchronization is bidirectional and push alone is not a complete workflow.

View project →

Future Log Template

Date: YYYY-MM-DD · Project: name

Symptom: Repeatable and observable behavior.

Hypotheses: Ranked possibilities, not conclusions.

Investigation: Environment → reproduction → minimal experiment → comparison.

Root cause: Evidence-supported explanation.

Fix and verification: Change plus regression evidence.

Lesson: Reusable method and remaining limits.