0
\$\begingroup\$

I'll preempt this by saying that I'm a software person whose education (unfortunately) didn't even touch on the most basics of hardware or circuits.

I'm attempting to program a PIC16f1709 microchip with a PICkit3 via MPLab X v2.3. The PIC is part of a larger board, but is currently blank. The board in question is a manufactured product, not a dev board, but it does have exposed pins into which I've wired the PICKit, and I'm sure that the pins match up. I'm powering the board with its own power supply. The board doesn't have a pull-up resistor from Vpp/MCLR to Vdd. According to the PICkit User Guide, that resistor is "recommended" (see paragraph 2.4.2).

When I try to program the controller, MPLab warns me first that the target ID is being read as 0x00 rather than the expected value, and then after programming it reports that the instruction at address 0x00 is 0x00 rather than the expected first instruction. My understanding is that this means that the PICkit is not able to communicate with the controller, because it is reading everything as 0x00. I've read that a freshly-erased PIC sets all bytes to one, so even if my code didn't get programmed, it shouldn't be reading zeroes.

Target voltage detected
Target Device ID (0x0) does not match expected Device ID (0x3054).

The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0x3f

Device Erased...

Programming...
program memory
Address: 0 Expected Value: 3180 Received Value: 0
Failed to program device

So my question is this: is the pull-up resistor required (as I've read from less "official" sources)? Is the fact that it is missing causing the programmer to be unable to communicate with the controller?

\$\endgroup\$
  • \$\begingroup\$ What exactly is on your PIC's MCLR pin? Also, check for other connections on the 2 programming lines (PGD & PGC). If your PICkit can't drive these 3 pins the way its wants to then it won't be able to talk to your PIC. \$\endgroup\$ – brhans May 20 '15 at 12:38
  • \$\begingroup\$ @brhans according to the schematic, we have nothing on the MCLR right now, just a straight pin from the PIC to the PICkit. Assuming PGD and PGC means the same as ICSPDAT and ICSPCLK, they are the same -- a straight pin. \$\endgroup\$ – Woodrow Barlow May 20 '15 at 14:12
2
\$\begingroup\$

No the pullup resistor isn't required, however without it, unless there is something else to perform its function, the chip won't run under normal operation.

The purpose of the resistor is to ensure that MCLR is held high so that the chip isn't in a RESET state, which allows it to run. If you don't have that resistor you would need some other system to ensure that it is held high - maybe a reset / power management chip.

The fact that you can't program won't be related to that resistor, instead you should look to other connection or circuit issues, such as a lack of decoupling capacitors, not all the power pins connected, or other components on the programming pins interfering with the communication.

\$\endgroup\$
  • 1
    \$\begingroup\$ Did you mean decoupling capacitors? I've never heard of decoupling resistors... \$\endgroup\$ – TylerH May 20 '15 at 2:53
  • \$\begingroup\$ thank you. this explains the what i was misunderstanding about the pull up. \$\endgroup\$ – Woodrow Barlow May 20 '15 at 5:27
  • \$\begingroup\$ majenko, you've answered my question fully, but i wonder if you'd mind a follow-up question. can i assume that my code and configuration bits have nothing to do with the PICkit's inability to communicate with the device? \$\endgroup\$ – Woodrow Barlow May 20 '15 at 14:14
  • 2
    \$\begingroup\$ The fact that it's returning 0 for the device ID tells me it's completely unable to communicate. Code and configuration would normally have no effect on that scenario. Can you post a simplified schematic of that part of your circuit showing the main chip, it's support components, the PICkit connections, and anything else directly connected to the chip? \$\endgroup\$ – Majenko May 20 '15 at 14:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.