Do you have a morning ritual? I can barely function without mine. My brain has a hard time operating without a big breakfast, some piping hot coffee, and five minutes browsing through my inbox even when there are zero unread emails.
Having a morning ritual for your embedded system is helpful too. While you don’t need to serve any coffee to your PCB’s microcontroller, you do need to ensure that it efficiently handles the transitional state during power-up.
How Startup Transition Can Affect Embedded Systems Operation
Startup transition is the short moment between turning on the power and having a fully initialized microcontroller. This usually happens in milliseconds or microseconds and is virtually unnoticeable to the human eye. But in the world of electronics, this is the equivalent of months or years.
Most embedded system designers prioritize the application algorithm and hardware design and miss out this critical “booting up” state. After all, how could mere milliseconds affect an electronic device? If you’re stuck in this mindset, it’ll be a matter of time before something goes terribly wrong when someone powers up your system.
You do not want to accidentally turn on a pump.
Most microcontrollers and integrated circuits take a short period of time before they are fully powered up and operational. In this transitional period, the input/output pins are usually in their default state as ‘input’. But there are also cases where these pins experience a glitch and fluctuate between logic 'high and low during the power-up transition.
In actual applications, output pins may be indirectly connected to actuators, pumps, or motors that may be triggered accidentally during power up. You do not want to deal with rude surprises when your embedded system is operating in the field. In certain circumstances, unexpected situations can even pose a risk to public safety.
How to Deal With Startup Transition in Embedded Systems
There is little a firmware engineer can do before a microcontroller’s code is running. As such, a majority of the effort to manage startup transition lies in the hands of the hardware designer. A common practice is to place pull up or pull down resistors on the output to ensure that it is always in a safe state during power up.
For example, you’ll want a motor to remain powered off until the microcontroller decides it should be activated. In security applications, you’ll want to design the door access controllers to keep the electromagnetic lock energized until it has booted up completely. Hardware designers have to evaluate the design based on the applications on a case-to-case basis.
In some cases, a simple resistor may be insufficient. In cases where multiple inputs are connected to logic drivers, the outputs of the drivers may behave unpredictably and falsely trigger the controller output, despite the pull-up/down resistors.
A simple solution to transitional startup issues.
In this scenario, your design needs to have a more intelligent control that activates the logic drivers only when the microcontroller is fully powered up. Most logic drivers have an output enable (OE) pin that designers normally route to ground or VCC to keep it continuously activated. To mitigate startup transition effects, you can route the OE of the logic drivers to one of the microcontroller output pins and pull it to the right voltage level to keep it turned off during startup.
Taking all of these precautions simply to ensure the embedded system functions properly for mere milliseconds may seem like an unnecessary hassle. But after safely avoiding property damage or injuries, you’ll find it all worthwhile.
With great PCB design software, you can access complete design history compatibility and comprehensive design content. Altium’s Altium Designer software enables you to easily alter your design while mitigating potential startup transition effects.
Is your embedded system behaving erratically during startup? Talk to an expert at Altium.
About the Author
PCB Design Tools for Electronics Design and DFM. Information for EDA Leaders.More Content by Altium Designer