A Logic Analyzer is a diagnostic tool used to capture and display digital signals from electronic circuits. Unlike an oscilloscope, it focuses strictly on logic statesβHIGH (1) or LOW (0)βover time.
| Example 1 (PWM/UART) | Analysis |
|---|---|
![]() |
![]() |
| Example 2 (Timing) | Detailed View |
|---|---|
![]() |
![]() |
This project utilizes the PIC18F45K50, specifically chosen for its integrated USB 2.0 module.
- Active Clock Tuning: USB communication requires an exact 48 MHz clock. We utilized the internal oscillator with PLL and the Active Tuning feature to synchronize the clock with the USB host without an external crystal.
- Stability: Ensures reliable communication while reducing the external component count.
To reconstruct a signal without aliasing, the sampling rate must be at least twice the maximum frequency of the analyzed signal.
- Sampling Rate: Configured via Timer2 hardware interrupts every 10 Β΅s, achieving a stable 100 kHz rate.
- Buffer Capacity: Captures 900 consecutive samples through PIN B1 (RB1).
Programming is performed using the ICSP standard.
To flash the .hex file, PICkitminus is highly recommended due to its stability on modern operating systems.
Developed in Python using Visual Studio Code.
Install the required libraries using the following command:
pip install pyserial matplotlib This project is an evolving platform. Future updates will focus on expanding hardware capabilities and software analysis tools:
- Dual-Channel Support: Modify firmware to sample two digital pins (e.g., RB1 and RB2) simultaneously.
- Protocol Decoders: Add automated decoding for UART, I2C, and SPI directly on the Matplotlib interface.












