I have an ARM Cortex-M3 that talks to a dsPic33F. I am attempting to do ICSP programming of the attached PIC. I have an analyzer and can see that I cannot control the MCLR line the same way the ICD3 does. I am a software guy and am thinking it might be due to the way the MCLR pin is setup and the ARM just can't pull it low like the ICD3 can.

Here is a the schematic of the MCLR setup, Vpp is a ARM gpio line:


Is the ARM just unable to sink enough current compared to the ICD3?


The ARM is an stm32f103vf and the pic is a dsPIC33FJ128GP804.

  • \$\begingroup\$ Can you describe what you see when you probe !MCLR while your ARM is trying to pull it low? (and also when it's not). You say you've used an analyzer but an oscilloscope is likely to be more useful in this case; if you don't have one then you can at least see the steady-state with a multimeter. \$\endgroup\$ – pericynthion Oct 20 '14 at 3:22
  • \$\begingroup\$ Also, please specify the actual part numbers of your dsPIC33F and your ARM microcontroller ("Cortex-M0" only describes the processor core, not the peripherals and their drive strengths). Preferably, link to datasheets. \$\endgroup\$ – pericynthion Oct 20 '14 at 3:24
  • \$\begingroup\$ The analyzer shows high frequency noise on the !MCLR line when pulled low, I can keep it high no problem, just not keep it low without it going back up. \$\endgroup\$ – RobC Oct 20 '14 at 5:44
  • \$\begingroup\$ What sort of analyzer is this? Can you post a screenshot? With the circuit depowered, what resistance do you measure with a multimeter between !MCLR and +3V3? \$\endgroup\$ – pericynthion Oct 20 '14 at 6:18
  • 1
    \$\begingroup\$ Are you using LVP, or are you expecting the ARM's GPIO to generate the 10V+ that is required on \$\overline{MCLR}\$ to enter programming mode? \$\endgroup\$ – Majenko Oct 20 '14 at 9:29

Really we need more detailed information, as I've noted in comments on the question.

From what you've described so far, I would guess that no, it is not a fundamental limitation of the current sink ability of the ARM, because the !MCLR input should be a fairly high impedance and the 22k pull-up will only require sinking a few tens of microamps. More likely it's a configuration issue in the ARM; sometimes quite a few registers have to be set up correctly before you can use GPIO. Can you set up a spare pin as a general-purpose output (either push-pull or open-drain) and check that you can control it correctly without worrying about the PIC?

You might even have burnt the pin out from bus contention, e.g. if you tried to drive it high from the ARM while the PIC was pulling it low - the 10 ohm series resistor may not offer sufficient protection here. I would class that as relatively unlikely, though.

  • \$\begingroup\$ I am using a couple other GPIO pins as a clock source and data line and they both work fine. \$\endgroup\$ – RobC Oct 20 '14 at 5:43

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.