PicProm (formerly PIC-16Fxxx-Programmer): Ultimate Setup & How-To Guide
Overview
PicProm is a lightweight programmer utility for Microchip PIC microcontrollers, evolved from the older PIC-16Fxxx-Programmer. This guide walks through downloading, installing, configuring, connecting hardware, flashing firmware, verifying writes, and troubleshooting common issues so you can program PIC chips reliably.
System requirements
- Windows ⁄11, macOS (Intel/Apple Silicon), or Linux (Debian/Ubuntu, Fedora).
- USB-to-serial adapter or supported PIC programmer (e.g., PICkit-compatible TTL adapter) depending on your hardware setup.
- Target PIC microcontroller (common: 12F/16F/18F families).
- Power supply for target board (3.3V or 5V as required).
- Hex file compiled for your target PIC.
Download & installation
- Visit the official PicProm download page and grab the release for your OS (choose the latest stable build).
- Windows: run the installer or unzip portable build into a folder. macOS: open the DMG and move the app to Applications; for Apple Silicon, use the universal or arm64 build. Linux: extract the tar.gz, make the binary executable (
chmod +x picprom) and (optionally) move to/usr/local/bin. - Install drivers for your USB-to-serial adapter if needed (CH340/FTDI/Prolific). On Windows, install the vendor driver; on macOS with M1/M2, allow kernel extension or use driverless FTDI/CDC devices where possible.
Hardware connection
- Identify Vdd and Vss on your target PIC and confirm required supply voltage (3.3V vs 5V).
- Connect programmer GND to PIC Vss.
- Connect programmer Vpp/MCLR (programming voltage) to PIC MCLR via any required pull-up resistor.
- Connect PGD (data) and PGC (clock) lines between programmer and PIC ICSP pins. For 8-pin chips, refer to the datasheet for proper pin mapping.
- If using an external power supply, ensure voltage rails are stable before enabling programming. If using power from the programmer, verify its capability to supply the target MCU current.
PicProm initial configuration
- Launch PicProm.
- Select the serial/USB port representing your programmer in the Port dropdown.
- Choose the target device from the Device list (search by part number, e.g., PIC16F84A). If your part is not listed, choose the closest family member only if pinout and memory map match—better to add a custom device entry if supported.
- Set voltage level if the tool permits (3.3V/5V) or enable target-voltage detection.
- Enable verbose logging for the first session to capture any communication issues.
Loading and programming a HEX file
- Compile your project (XC8, HI-TECH C, or assembler) and generate the .hex file.
- In PicProm, click Load or Open and select the .hex file. Confirm the displayed file size matches expectations.
- Optional: Review configuration bits displayed by PicProm and adjust if needed (clock source, watchdog timer, code protection).
- Click Erase (recommended on a fresh or unknown chip) then Program/Write. Monitor the progress bar and status messages.
- After programming completes, click Verify to ensure the written flash matches the HEX file. Successful verification indicates a good write.
Reading and backing up device memory
- Use the Read or Dump function to export the chip’s flash and EEPROM to HEX files for backup.
- Store backups with versioned filenames and brief notes on configuration bits to simplify restores.
Setting configuration bits
- PicProm typically shows configuration fuses in a GUI. Toggle settings for oscillator, brown-out reset, watchdog, LVP, and code protection.
- When unsure, use conservative defaults (external crystal or internal oscillator as used during development) and avoid enabling code protection until final deployment.
Troubleshooting checklist
- No device found: confirm correct port, drivers installed, and programmer powered. Ensure target Vdd present.
- Write fails or verify mismatch: check wiring for PGD/PGC swap, weak Vpp, or noisy signals. Try lowering serial baud or adding small decoupling caps to target supply.
- MCLR/Vpp not reaching required voltage: verify programmer supports required Vpp for your PIC and that connections are secure.
- Unexpected resets after programming: check configuration bits (watchdog, brown-out) and ensure MCLR pull-up is appropriate.
- Blank or locked device: if device is code-protected, you cannot read flash back—only reprogram after mass erase if supported.
- Incompatible device selection: double-check part number; different PICs in the same family may have different memory sizes and config layouts.
Advanced tips
- Use a stable bench supply and common ground when debugging intermittent issues.
- For in-circuit programming