Why do the motors have to be disconnected when updating the firmware?

Is the precaution based on an actual bad experience, or is it based upon the desire to just be careful?

If the former, I’m curious to learn what bad thing happened in that bad experience. I can imagine 2 scenarios:

  1. The GoPiGo was sitting on a table while the firmware update randomly wiggled the motor control pins, and the robot ran off the edge of the table and broke.
  2. As the firmware update process randomly wiggled motor control pins, something got cooked.

The first scenario seems plausible to me (having run a robot off the edge of a table before myself). I’m having trouble imagining what could get cooked by randomly wiggling the pins controlling the '754410. If the GoPiGo had a true H-bridge, where the Atmega part wiggled both the top & bottom halves of the H-bridge independently, I could see cooking the bridge. But with the '754410, it seems to me that the worst that could happen is that one could apply full battery voltage to the motor for an indefinite amount of time.

Are the motors not sized for 12V? Is that the concern?

Or (this just came to me as I wrote this), are you concerned that that voltage supply might droop enough to corrupt the flashing process?

I’m just curious. And, when I get curious, I ask questions.


Hey wpd,
The reason to disconnect the motors during the firmware update is based on actual experience and we just added that as a precaution so that other users don’t face the problems that we had faced.

The whole problem originates from he fact that one of the SPI pins which is used for uploading the code from the Raspberry Pi to the ATmega328 to the GoPiGo is also used to control the motors. The reason we had to go this way was that we were running out of pins to use on the ATmega328.

When testing the GoPiGo, we found that when the motors were connected, they to wiggle around a lot and sometimes for some unknown reason, we destroyed the motor controllers. We were never able to find the exact reason for this problem and ended up adding current limiting resistors to the lines and it worked. But we still recommended disconnecting the motors as a precaution so that there is no chance of other people destroying their boards.

We haven’t seen any problems around the motor controller so I guess the solution worked.


Hmmm… I don’t see current limiting resistors on my board, nor on the schematics.

But I just checked the resistance across the leads of one of my motors. With my totally uncalibrated, ancient, 30 year old Radio Shack multimeter, I measured something like 6 Ohms across the leads. With a 12V battery pack, that means that the '754410 could be sourcing 2A, which exceeds the continuous output current rating of the '754410. So perhaps that is what was going on.

Regardless, I’m not planning on flashing the firmware with the motors connected. I was just curious to learn how this could lead to problems… and now I have have a working theory (plus experimental evidence gathered by you that it does, in fact, lead to problems).