I am currently running some display add-on tests using Charlie and Charlene, and I’ve run into a difficulty:
The Waveshare e-Paper display also uses SPI to communicate, though it uses a different channel.[1] Due to a hardware/software limitation, neither the GoPiGo controller nor the Waveshare display board can detect if the other channel is being used and this creates the possibility of SPI buss collisions that cause the robot controller board to go entirely brain-dead.
The existing solution is to reboot the robot. Unfortunately, this seriously disrupts any attempts to create, and test, potential solutions.
Question:
Is there any way, either programmatically, (a “hard reset” command?), or via a hardware modification, (a hard-wired “reset” button?), to completely reset the GoPiGo3’s controller hardware and return it to a working state without rebooting the entire robot?
Supposedly pin 10 of the “programming header” has AT_RESET but I can’t tell if that is also connected to RPI_Reset
I tried every software approach, nothing worked. Perhaps we need a jumper from an unused GPIO pin to the programming header AT_RESET (to clear SPI or I2C errors)
It may be that they want both to reset at the same time. Perhaps that could still work with a wire from the RPi GPIO that would reset both chips. Perhaps the GoPiGo3 power program should be changed to watch for single or double presses - single press for shutdown sequence as currently programmed, double press for reset.
I doubt it. Resetting the Pi would be a catastrophic event as nothing would be formally closed or shut down.
My suspicion is that it’s a (un-implimented?) feature for resetting the robot if it hangs.
Or, it might be used during firmware programming to start it running the updated version?
Assuming that it IS possible to reset the controller board using that pin, it should be just a “simple matter of programming” to implement a watchdog that would reset the controller board when it “bites”.
I am tempted to bring a couple of push-button switches out to the edge of the robot’s top cover - a power button, (which is obscured behind the video connection extender now), and a “reset” button.
IIRC there was a comment in the code about holding off the RPi during reprogramming of the redboard, but I didn’t try to understand the code for updating the GoPGo3 firmware.