RC RESET
Context
● You are developing an embedded application using one or more members of the 8051 family of microcontrollers.
● You are designing an appropriate hardware foundation for your application.
Problem
How do you create a low-cost reset circuit for your 8051 microcontroller?
Background
As discussed in the introduction to this chapter, the reset process which must be com- pleted prior to the execution of any other code requires that the microcontroller’s oscillator is operating. To trigger the reset operation, the original members of the 8051 family have a ‘RESET’ pin. When this is held at Logic 0, the chip will run nor- mally. If, while the oscillator is running, this pin is held at Logic 1 for two (or more) machine cycles, the microcontroller will be reset.
Note that, if the reset operation is not completed correctly, the microcontroller will usu- ally not operate at all: in rare circumstances, it may operate, but incorrectly. In either event, there is usually nothing that you can do, in software, to recover control of the system. Clearly, therefore, ensuring correct reset operation is a crucial part of any application.
Solution
Various techniques may be used to ensure that – when power is applied to your 8051- based application – the reset process is automatically carried out. The most widely used techniques are based on the use of an external capacitor and resistor: these tech- niques are considered in detail here.
RC reset circuits
A typical RC reset circuit is as shown in Figure 5.1.
The circuit in Figure 5.1 operates as follows. We assume that Vcc is initially at 0V (that is, the power has not been applied to the system) and that the capacitor C is fully discharged. When power is applied, the capacitor will begin to charge. Initially, the voltage across the capacitor will be 0V and – therefore – the voltage across the resistor (and the voltage at the RESET pin) will be Vcc: this is a Logic 1 value. Gradually, the capacitor will charge and its voltage will rise, eventually to Vcc: at this time, the voltage at the reset pin will be 0V.
In the real system, the microcontroller’s input voltage threshold is around 1.1 – 1.3V10: input voltages below this level are interpreted as Logic 0 and voltages above this level are interpreted as Logic 1. Thus, the reset operation will continue until the voltage at the RESET pin falls to a level of around 1.2V.
We can use this information to calculate the required values of R and C. To make this calculation, we use the fact that the capacitor in Figure 5.1 will have a voltage (Vcap) at time (t) seconds after it begins charging, given by Equation 5.1.
Note that Equation 5.1 assumes that the capacitor begins charging at a voltage of 0 and that the power supply voltage increases from 0V to Vcc in an instantaneous ‘step’ (rather than a slow ramp): these assumptions, although often made, are frequently invalid: see ‘Safety and reliability issues’ for a discussion of these issues.
The Intel 8051 data sheet recommends values of 8.2K for R and 10uf for C when this form of reset circuit is used. Figure 5.2 substitutes these values into Equation 5.1 and plots the result over a period of 500 ms.
When looking at Figure 5.2, remember that all 8051s complete their reset oper- ation in 24 oscillator periods or less: if we use a 12 MHz oscillator, this is a maximum period of 0.002 ms: by contrast, the recommended reset circuit takes around 100 ms to complete the reset operation. This may seem like an excessive reset period
1. The data sheet for your chosen microcontroller will provide a precise value, if you require it.
but, for reasons discussed under ‘Safety and reliability issues’, allowing approximately 100 ms for the reset is generally good practice.
Choosing values of R and C
If, having reviewed all aspects of this pattern, you have decided to use an RC-based reset circuit, what values of R and C should you use?
Rather than trying to determine values of R and C directly from Equation 5.1, we can simplify matters by noting that the product of R (in Ohms) multiplied by C (in Farads) is known as the ‘time constant’ (in seconds) of this form of RC circuit. This time con- stant is the time taken for the capacitor to be charged to 60% of its final voltage. Thus, with a 5V supply and the circuit in Figure 5.1, this is the time taken for the capacitor voltage to reach 3V and, therefore, the voltage at the reset pin to reach 2V (that is, Vcc – 3V): this is still high enough (because it is greater than 1.2V, as already discussed) to ensure that the device is in reset mode. As long as the device is still in this mode until approximately 1 ms after the power supply reaches Vcc (typically around 100 ms after starting: see ‘Safety and reliability issues’), the device will be reset correctly.
A basic rule of thumb, therefore, is that the RC time constant should be approxi- mately 100 ms and values of R and C chosen to meet this requirement will usually ensure effective reset operation (Equation 5.2):
We can summarize the key material in this section as follows:
● A combination of a 10K resistor and a 10 µF capacitor in a RC reset circuit gives a 100 ms time constant. Bearing in mind the general limitations of RC reset circuits (see ‘Safety and reliability issues’), this value is suitable for the majority of 8051- based systems.
● The standard 8K2, 10 µF RC reset combination gives a time constant of 82 ms: this is generally adequate.
● Values of 1K and 10 µF (which appear in some books) provide a time constant of only 10 ms: these values will not provide a reliable reset operation with all power supplies.
Adding a RESET button
In some systems, it is helpful to have a reset button, to force a hardware reset. This is easy to achieve. Figure 5.4 shows a suitable circuit.
Note that the reset button pulls the RESET pin (assumed to be active high: see ‘Portability’) to Vcc. Note also that this button also discharges the capacitor, ensuring that – when the switch is released – the proper reset process will be carried out.
Hardware resource implications
This pattern has no implications for CPU or memory usage.
Reliability and safety issues
There are a number of reliability and safety issues related to the use of RC reset circuits. The key issues are considered in this section.
Overall, however, we make the recommendation as seen in the box.
Many of the reliability problems with embedded systems can be traced back to defects in the reset circuit. If cost is the only concern, consider using an RC reset: if reliability is a consideration, use a ROBUST RESET [page 77].
Time taken for power supply to reach steady state
Suppose you are developing an embedded industrial control system and you want to ensure that the system begins operating as soon as possible after power is applied. You note (from ‘Solution’) that the reset process on an 8051 microcontroller (with a 12 MHz oscillator) will take 0.002 ms. You conclude that, allowing a reset period of 1 ms (rather than the 100 ms figure recommended earlier) will provide sufficient margin for error.
Suppose you adjust the values to reduce the reset period to around 1 ms. For exam- ple, Figure 5.5 shows the result of using a 0.1 µF capacitor and a 6K7 resistor.
This combination of values may, sometimes, work: but in most systems it will fail. The reason is that real power supplies do not switch instantly from 0V to their specified output voltage: in reality, many supplies take 50 ms or 100 ms to reach this voltage when first switched on. You need to allow for this ‘ramped’ voltage input in your design.
If the supply voltage increases slowly, then the capacitor in your RC reset circuit will comparatively quickly charge up and will simply ‘follow’ the increasing power supply voltage. As a result, Vreset will be held at Logic 0 many milliseconds before the chip reaches its operating voltage (~5V). Therefore, the chip will only be ready to run its reset routine after the RESET signal is complete and no reset will be performed. Your application will therefore not start correctly.
If you really must have a rapid reset and you have control over the design of the power supply there are various ways of dealing with this problem. You may, for example, be able to increase the transformer capacity or reduce the values of these filter capacitors. Note, however, that tying the operation of a device to a particular power
supply will make your system design much less portable. If, to give a common example, your company subsequently decides to ‘outsource’ the power supplies or to use a single power supply across a range of different boards, you can quickly run into difficulties.
Time taken for oscillator to start
If the start of the (crystal) oscillator in your circuit is delayed the RC reset cycle may be completed before the oscillation begins. If this happens, the chip will not be reset.
Typical start-up times for crystal oscillators are 0.1 to 10 ms: however, the time taken for a crystal oscillator to start operating depends on its being mounted correctly and having appropriate capacitors. These issues are discussed in detail in the pattern CR YST AL OSCILLA TOR [page 54].
Handling brownouts and other power disruptions
Potential problems with reset circuits do not, unfortunately, only arise when embed- ded devices are first powered up. Consider, for example, Figure 5.6. This shows changes in the system supply voltage (nominally 5V) in the presence of two prob- lems. The first of these (at time = 4 seconds) is a simple power ‘glitch’, where the supply voltage drops briefly to 0V. The second problem (beginning at time = 14 sec- onds) is a ‘brownout’ condition: this means that the (mains) supply voltage is reduced significantly for a period of time, but the supply does not fail completely. These types of fault are comparatively common in mains-powered systems.
To ensure our system operates in a predictable manner, we need to be able to deal with each supply problem. In most systems, the power glitch will not pose a signifi- cant hazard. When the power fails, the voltage drops rapidly (to 0V) and the system will stop operating. When the power returns, the system will be reset in the usual way.
The brownout is potentially more problematic. If the supply voltage drops below the minimum operating voltage (typically 4.5V for most members of the family, although this varies), the microcontroller will stop operating. If the voltage then rises again, the microcontroller will begin to operate again; however, if using a simple RC reset, the device will not be reset. The results are difficult to predict and the RC reset circuit is therefore neither reliable nor safe if brownouts are a possibility: see ‘Related patterns and alternative solutions’ for some alternative techniques.
Portability
Some portability issues, related to the different performance of various power supplies, have been considered elsewhere in this pattern. These will not be discussed further here.
Note also that, as discussed in a following example, not all 8051 family members have ‘active high’ resets: some are ‘active low’. While the underlying principles are the same, the wiring of ‘active high’ and ‘active low’ resets are fundamentally incom- patible (see ‘Example: Working with active low resets’).
Overall strengths and weaknesses
RC reset circuits are cheap to implement.
RC resets are well understood and widely used in other microprocessor and microcontroller systems.
If your system is mains powered and safety and reliability are not issues (and cost is) this technique may be a good solution.
If the system power supply characteristics are unknown or vary or are subject to brownout, the reset operation may not always be effective: RC resets are generally not suitable for main-powered applications which must be reliable or safe.
Related patterns and alternative solutions
The pattern ROBUST RESET [page 77] describes a more expensive but generally much more reliable reset solution.
Example: Minimal Atmel 89C2051 circuit with crystal and RC reset
A minimal Atmel 89C2051 circuit, using an RC reset, is shown in Figure 5.7. Please see the pattern CR YST AL OSCILLA TOR [page 54] for details of the oscillator circuit.
Note that the Atmel device does not support external memory so that the /EA pin is not present: see the ‘memory patterns’ (Chapter 6) for details.
Example: Working with active low resets
The reset circuits considered so far have been ‘active high’ in nature. This means that normally the RESET pin will be held at a low level (~0V): to effect a reset, the RESET pin needs to be pulled high (~Vcc), while the oscillator is running.
However, some 8051 devices have ‘active low’ inputs: these can be identified by the presence of a RESET pin. As the name suggests, these pins are held at a high level during normal operation and must be pulled low (again usually for 24 clock cycles) to effect a reset. Examples of 8051 devices with active low inputs include the Infineon C509, C515C and C517A. All of these are popular and widely used devices.
Wiring an active low reset circuit is straightforward. Figure 5.8 shows a possible cir- cuit for these various active low devices.