AN2039 - Four-Channel PIC16F1XXX Based Power Sequencer


Power sequencers are commonly used in system-level board designs where multiple power supplies are enabled in a sequential manner. Typically, systems using a power sequencer have different components on them that require different power supply voltages and power levels. The sequence of enabling the different voltages would ensure that there is no conflict between components being powered up, and all units are powered up correctly. When shutting down the system, there may also be a sequence. The power-up and power-down sequence is programmable and is time-based.


This application note defines a four-channel power sequencer. The four voltages defined are 5.0 V, 3.3 V, 2.5 V, and 1.8 V. Each of these voltages is provided through a Power Module (PM) unit (BEL Power Modules: VRAE-10E1A0 Series).

These PM units typically have five pins (Figure 1):

  • Input Power
  • Output Power
  • Ground
  • Enable
  • Trim

Users can select any number of PM units in their system. The software has been written in a modular format to support up to ten PMs. These can be added or removed to meet specific needs. An enhanced core PIC16F1509 device has been selected as the MCU for this application.

State Machine

The project algorithm will follow a state machine arrangement as seen here.


Power Sequencer Graphical User Interface (GUI):

The application also has a GUI that can control the electronics.

The Power Sequencer GUI has been designed for the user to:
1. Enter relevant data for the Power Sequencer application
2. Monitor relevant data from the Power Sequencer application
3. Control the Power Sequencer application.


The main window has the system options on the left and the module options as tabs on the right.

In the System Options, the user can Start, Stop, Reset, and Read the current firmware values. The Status window section allows the user to define the Vout corresponding to the Module index. These values can be modified by the user and will be saved when the GUI is closed. The user can also enter the Analog-to-Digital Converter (ADC) reference value which for this application note is set at 5.0 V. Finally, the user can Burn the updated Module settings into Flash Program Memory by clicking on the Burn Flash button.

Under each Module Tab, the user can also set or read existing values for each module. Module 1 is the 5 V module and the user can set the Normal/Margin, Over/Under Limits for this module, along with Start and Stop times in mS for this module. Also, the voltage divide factor can also be edited and entered in this tab. The Read Values button reads the existing values in RAM and the Update Values writes new values to the RAM. If the users want to make these values permanent, then they would have to be programmed into the Flash using the Burn Flash button. By clicking on the appropriate tab, the user can modify/read/update values from all modules.

When a Fault occurs, the GUI is not automatically updated, since the I²C implementation on the PIC16 is in Slave mode. The user has to click the Read Current Firmware Values button, to get a status update and figure out which module failed.

In each module tab, the Digital-to-Analog Converter (DAC) value can be incremented or decremented using the up/down arrow located at one side of the DAC value box. The value increments or decrements and if the module is ON, then the output voltage will be read and updated. To see the voltage change, more than one increment or decrement may have to be performed. This feature allows the user to increase or decrease the output voltage during a system test when voltages reach their limit. This is called voltage limit testing and allows the customer to test a complete system when one or more of the output voltages reach the under/over voltage limits. The voltage values are displayed as actual voltage values (3.3 V or 2.5 V). The DAC value and the margin limits are displayed as 8-bit values from 0 to 255.


This application note is designed for easy use for a customer to implement a Power Sequencer Design application using a PIC16F1xxx device. The customer can easily modify this existing application note to control four voltage modules in their own design application. Additionally, customers can add more power modules to their application or remove modules for a smaller application. The hardware and firmware have been created in a modular format to accomplish these goals very easily. The completed board is shown here.


Additional Project Detail

For more detail on the specifics of this project refer to the linked pages below:

Firmware Implementation of AN2039
Hardware Implementation of AN2039

PDF Download

Full PDF Download of the full AN2039 application note

© 2024 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.