I have been looking for a solution on this forum but unfortunately never found a solution to my problem.
I'm using the Intel Edison to send a PWM signal to 2 motor controllers that will then make motors turn.
I'm using GPIO12 and GPIO13.
At the edison boot up those two pins are high, which make my motors turn.
Would you have a way to set those GPIO to low at boot up ?
This issue has been discussed previously in the community. I looked at some threads and found one I think you should look /thread/78421 https://communities.intel.com/thread/78421 . It explains why the GPIO during boot have unexpected values and provides a suggestion on how to try and control the GPIOs at boot. The suggestion is to build a custom image following the Edison BSP to have the GPIO settings you need. The BSP of the Edison can be found here http://www.intel.com/content/www/us/en/support/boards-and-kits/000005616.html http://www.intel.com/content/www/us/en/support/boards-and-kits/000005616.html .
Unfortunately, there aren't any guides on how to disable specifically the drivers required, just the information that can be found on the BSP. You can try this approach and let us know if you're able to obtain positive results.
Unfortunately I don't know enough in image customization to do so.
So yes I still need help on this topic. I know how to set the GPIO to low after the boot up but the motors are still turn during the boot up.
Thanks for your help
There's another option that might work as a workaround. What you could try would be to have some external circuitry that controls the motors during boot. This external circuitry would have to be enabled during boot and disabled after boot. In this case, the circuitry would be in charge of giving low signals to the motors during the period of time it takes the Edison to boot so the motors don't receive random signals. I haven't tried this approach but it should work as another option to control the Edison without the need of image customization.
Let us know if you found this useful.
In the end I am using an IO expander driven via I2C, then the Edison IOs are not in direct contact with the critical elements.
The initial sates of this expander pins are know so no problem with any random status at the boot up.
As they are known if the state is not the one I want, I use an inverter after the IO expander pin.
That didn't really solved the problem of the random IO state at the boot up of the edison but I got around it.
Thank you for letting us know you managed to solve this issue and for sharing your solution. We encourage you to remain involved in the community and if you have any other questions don't hesitate to ask, we'd be happy to help you.