Interfacing to Microprocessors Chapter 12 introduction • What constitutes a “controller” will vary from application to application. • It may be no more than an amplifier or a switch. • It may be a complex system that may include computers and other types of processors such as data acquisition and signal processors. • Most of the time, it is a microprocessors. • We shall therefore focus the discussion here on microprocessors. introduction • Focus on microprocessors as general purpose, flexible and reconfigurable controllers and the ways sensors and actuator relate to these. • Microprocessors are often called microcontrollers • What is a microprocessor? What is the different between a microprocessor and a computer or a microcomputer and how a distinguishing set of features is arrived at are all difficult and subjective issues. What is a microprocessor to one is a full fledged computer to another The microprocessor • A microprocessor is a stand alone, self contained single chip microcomputer. • It must have as a minimum: – a central processing unit (CPU) – nonvolatile and program memory – input and output capabilities. • A structure that has these can be programmed in some convenient programming language • can interact with the outside world through the input/output ports. The microprocessor • Other important requirements: • must be relatively simple • reasonably small • necessarily limited in most of its features – memory, processing power and speed, addressing range and, of course in number of I/O devices it can interact with. • The designer must have access to all features of the microprocessor – bus, memory, registers, all I/O ports, • In short, Microprocessors are components with flexible features that the engineer can configure and program to perform task or a series of tasks. The microprocessor • Two limits on the tasks microprocessors can perform: • The limitations of the microprocessor itself • The imagination (or capabilities) of the designer. The 8 bit microprocessor • We will narrow down to 8 bit microprocessors – these are the most common in sensor/actuator systems – they are simple and representative of all microprocessor • 16 and 32 bit microprocessors exist • There are a number of architectures being used. • We will emphasize the Harvard architecture because of its simplicity, flexibility and popularity. The architecture • There are about two dozen manufacturers of microprocessors • All based on a few architectures. • We shall only briefly describe here one architecture – the Harvard architecture • used in many microprocessors • Simple and efficient • The choice in smaller microprocessor • Example: Microchip and Atmel microprocessors The architecture • Main features: • Separate busses for program memory and operand memory. • Pipelined architecture • Allows fetching data while another operation executes. • Each cycle consists of fetching the (n+1)th instruction while executing the nth • Integer arithmetic • Limited instruction set The architecture • Bus widths vary depending on manufacturer and on the microprocessor size. • Example: Figure 12.1, bus architecture for a PIC18F452 from Microchip. • The instruction is 16bit • Program address is 15bit wide. • Data is 8bits and • Operand address is 12 bits. • These vary from device to device. Bus architecture The architecture • Example, the smallest microprocessors available (PIC10FXX) are 6 pin devices • Summarized in Table 12.1. • The architecture for this device is shown in Figure 12.2. • Here the program address bus is only 9 bits while the instruction buss is 12 bits. PIC10FXX microprocessors PIC10FXX microprocessors The architecture • Example: one of the largest, is the PIC18FXX20 • Has an address bus 21 bits wide. • The processor and its variants are shown in Table 12.2 • Its architecture in Figure 12.3. The architecture • Architecture supports: • Direct addressing for the first 8 bits of address space • Indirect addressing (variable pointer addressing) for all memory space. • Includes a CPU with associated status bits and a set of special functions registers. • I/O ports, other peripherals (such as comparators, A/D converters, PWM modules, etc.) • Timers, status indications and much more, The architecture • All modules available to the user. • User writable registers are also provided. • Microprocessors have been designed to respond to specific needs: common to find modifications that respond to these needs • Example: various processors from the same family may have a different instruction sets – PIC10FXX has 33 instructions – PIC18FXX20 has 77 instructions – ATmega128 (from Atmel) has 133 instructions. The architecture • Memory varies from 256 bytes to over 256 kbytes • Number of peripherals, ports, etc vary from as few as 4 to over 100 • Physical size: from 6 pin to 100 pins • Various chip configurations (DIP, surface mount, dies etc.) Addressing • 8 bit microprocessors have word length of 8 bits. • Integer data from 0 to 255 may be represented directly. • To address memory, usually a longer word is needed. • Most microprocessor have a 12 bit (4k) 14 (16k) or 16 bit (64k) memory address but longer address words are also used. Speed • Most microprocessor operate at clock speeds between 1 and 40 MHz. • Since often the clock is internally divided, the instruction cycle is slower than that • Typical values are up to about 10 MHz cycle clock or 0.1 s per instruction Instruction set • Microprocessors have a small instruction set – • sometimes no more than 2-3 dozen simple instructions. • Varies from a minimum of about 30 to a maximum of about 150 instructions. • These are selected to cover the common requirements of programming a device • Allows one to perform almost any task that can be physically performed within the basic limitations of the device. Instruction set • Instructions include: – logical instructions (AND, OR, XOR, etc.) – move and branching instructions (allow one to move data from and to registers and conditional and unconditional branching) – bit instructions (operations on single bits in an operand) – arithmetic instructions such as add and subtract, – subroutine calls – other instructions that have to do with the performance of the microprocessor such as reset, sleep and others. • Some are bit oriented, some are byte (register) oriented, some are literal and control operations Input and output • Input and output is defined by the availability of pins on the package. • Usually limited to less than about 100 pins (6, 8, 14, 18, 20, 28, 32, 40, 44, 64 and 100 pins are common). • Two pins are used to power to the device • For example, an 18 pin device can have no more than 14 I/O pins. • Of these, some may be used for other purposes such as oscillators or communication Input and output • All microprocessor will have a number of pins available as I/O. • Example, a 6 pin microprocessor may have as many as 4 I/O, a 64 pin processor can have in excess of 48 I/O pins. • I/O pins are grouped into ports, each addressable as an 8 bit word (each group has up to 8 I/O pins). • Different ports may have different properties and may be able to perform different functions. Input and output • I/O pins are tri-state enabling an I/O pin to serve as input, output or to be disconnected. • Most I/O are digital but some may be configured as analog as well. • I/O pins can supply or sink considerable current – usually in the range of 20-25 mA. • This is not sufficient to drive many actuators but it can drive low power devices directly or indirectly through switches and amplifiers. Clock and timers • Microprocessor must have a timing mechanism that defines the instruction cycle. • This is done by an oscillator • Oscillators may be internal or external. • Usually and RC oscillator is used for internal oscillation • A crystal is the most common way of setting the frequency externally (this requires either dedicated pins or the use of two I/O pins). Clock and timers • The oscillator frequency is usually divided internally to define the basic cycle time. • Microprocessors have internal timers – – – – – – under the control of the user used for various functions requiring counting/timing At least one counter is available larger microprocessors can have 4 or more timers some are 8 bit timers and some 16 bit timers. a watchdog timer is available for the purpose of resetting the processor should it be “stuck” in an inoperative mode. Clock and timers • • • • • • • Registers Used for Execution of commands Control over the functions of the microprocessor, Addressing Flagging Status indication Memory • Modern microprocessors, contain three types of memory: • program memory, in which the program is loaded, • data memory (RAM), • EEPROM memory • Note: EEPROM not available on some very small microprocessors. Memory • Program memory is usually the largest • From less than 256 bytes to over 256kBytes. • In most cases, flash memory which means that is rewritable at will and is nonvolatile (program is retained until rewritten or erased). • Data memory (RAM) is usually quite small and may be a small fraction of the program memory • Does not retain data upon removal of power. • EEPROM is nonvolatile rewritable memory used mostly to write data during execution Power • Most microprocessor operate from 1.8V to 6V. • Some have a more limited range (2.7-5.5V). • Based on CMOS technology: This means that: – power consumption is very modest. – power consumption is frequency dependent. • The higher the frequency the higher the power consumed Power • • • • Power is also dependent on What the processor does Which modules are functioning at any given time. The user has considerable control over power consumption through: – Choice of frequency – Mode of operation – Special functions such as interrupt wakeup and sleep. Other functionalities • Microprocessor must have certain modules (CPU, memory and I/O) • They can have many more modules • Add functionality and flexibility • Many microprocessors include – – – – – comparators (for digitization purposes), A/D converters, Capture and Compare (CCP) modules, PWM generators Communication interfaces. Other functionalities • One or two comparators are provided on many microprocessors. • Depending on the microprocessors 8 or 10 bit A/D converters are provided, usually in multiple channels (4 to 16). • PWM channels (up to 8) are common on some processors. • Serial interfaces such as UART, SPI, two wire interface (I2C), synchronous serial and USB ports are available Other functionalities • Many microprocessors provide multiple interfaces, all under the user’s control. • Other functions such as analog amplifiers and even transceivers are sometimes incorporated within the chip. • The I/O used for these functions are either digital I/O (for communication for example) or analog I/O (for A/D for example) Programs and programmability • A microprocessor is only useful if it can be programmed. • Programming languages and compilers have been designed specifically for microprocessors. • The basic method of programming microprocessors is through the Assembly programming language • Can be, and very often is done through use of higher level languages with C leading. Programs and programmability • These are specific compilers, adapted for a class of microprocessors. • They are based on a standard C compiled (such as ANSI C) and modified to produce executables that can be loaded onto the microprocessor. • Most microprocessors can be programmed in circuit allowing changes to be made, or the processors to be programmed or reprogrammed after the circuit has been built. Programs and programmability • Instruction sets for microprocessors are small and based on the assembly language nomenclature. • Microprocessors have been designed for integer operations. • Programming for control, especially sequential control is simple and logical. • Floating point operations and, are either not practical or difficult and tedious. • They also tend to require considerable time and should only be attempted if absolutely necessary. Programs and programmability • There are both integer and floating point libraries freely available. • Floating point operations are only practical on the larger microprocessors because they require much memory. Examples of microprocessors • • • • • PIC10FXXX (low level, 6 pin), PIC16F62X (midrange, 18 pin), PIC18FXX20 (high level, 64 or 80 pin), Atmega128 (high level, 64 pin). A comparison of these typical processors will reveal most of the properties and capabilities of microprocessors. Interfacing Issues • Three basic modes: – 1. Continuous dedicated monitoring of the sensor by the microprocessor – 2. Polling the sensor – 3. Interrupt mode Continuous mode • Microprocessor is dedicated for use with the sensor • Its output is monitored by the microprocessor continuously • The microprocessor reads the sensor’s output at a given rate • Output is then used to act Poling mode • Sensor operates as if the microprocessor did not exist. • Its output is monitored by the microprocessor • The microprocessor reads the sensor’s output at a given rate or intervals - poling • Output is then used to act Interrupt mode • Microprocessor is in sleep mode • Outputs of the sensor are not being processed • Upon a given event, microprocessor wakes up through one of its interrupt options • The sensor activates the interrupt Notes: • Interrupts can be timed • Interrupts can be issued by sources other than the sensor • The microprocessor may be involved in other functions, separate from the sensor, such as control of an actuator • Feedback from actuators may also be used to perform interrupts General Interfacing Requirements • Microprocessor input interfacing requirements • Microprocessor output requirements • Errors introduced by microprocessors Input interfacing requirements • Signal level • Impedance and matching • Response, frequency • Signal conditioning • Signal scaling • Isolation • Loading Output interfacing requirements • Signal levels • Power levels • Isolation Input signal levels • Basic level: zero to Vdd – Must scale signals if necessary • No dual polarity signals – Must translate/scale as necessary • Direct reading or A/D • Can read voltages only – AC or DC – Limitations in frequency Impedance P are high input impedance devices – ~ 1 - 10 M – Input current - < 1 A. • Ideal for direct connection of low impedance sensors (magnetic, thermistors, thermoelectric, etc.) • High impedance sensors (capacitive, pyroelectric, etc.) must be buffered – Voltage followers – FET amplifiers Response and frequency • Most sensors are slow devices – Can be interfaced directly – No concern for response and frequency range • Some sensors are part of oscillators – Frequencies may be quite high – Need to worry about proper sampling by the microprocessor Response and frequency • Example: 10 mHz P, cycle time of 0.4 s. (most processor divide the clock frequency by a factor - 4 in this case) • Any operation such as reading an input required n cycles, say n=5 • Effective frequency: 0.5 MHz • Sampling cannot be done at rates higher than 250 kHz • Any sensor producing a signal above this frequency will be read erroneously Response and frequency • Some solutions: – Divide the sensor’s frequency • Reduces sensitivity • Must be done externally to the P – F-V converter • Introduces conversion errors • Must be done externally – Frequency counter at input • Use output of the counter as input to mP. • Expensive – Faster microprocessors Input signal conditioning • Offset – – – – Primarily for dc levels Can be offset up or down Usually done to remove the dc level Sometimes needed to remove negative polarity. – AC signals may sometimes be coupled through capacitors to eliminate dc levels Offset • Example – Thermistor: 500 at 20ºC – Varies from 100 to 900 for temp. between 0 and 100ºC Offset • At 500ºC – V = (12/1500)*500 = 4 V • At 0ºC – V = (12/1400)*400 = 3.428 V • At 100ºC – V = (12/1900)*900 = 5.684 V • V varies between 3.428V and 5.684V – 5.684V is above the 5V operating voltage of the microprocessor Offset • Some solutions – Remove 3.428V through an inverting amplifier – Reduce the source voltage from 12V to, say 6V. This will change the range from 1.714V to 2.842V – Increase the resistor from 1000W to, say, 1500 W. This will reduce the output and will vary from 2.526V to 4.5V Offset - other solutions • For ac signals – Rectification • Only appropriate if signal is unipolar – Bi-polar signals produce negative signals • Cannot be used with microprocessors Offset - other solutions • Bridge connection – Battery must be floating – Output: 0V at 0ºC to 2.3V at 100ºC. – Offset of arbitrary value can be added • Done by decreasing the value of lower-left resistor • 1V offset with 285.7 resistor Scaling • By amplification – Operational amplifiers • By attenuation – Operational amplifiers – Resistance dividers – Transformers (for ac) • Amplifiers are preferrable • Dividers introduce errors • Transformers are noisy and big Isolation • Two basic methods – Transformers – Optical isolation Loading • Microprocessors load the sensor • Not an issue with low impedance sensors • Must be buffered for high impedance sensors • Solution: voltage followers with FET input stages • An error due to loading should be taken into account Output Interface • Most microprocessors: – 1.8 to 6V – 20 to 25 mA per output pin – Can power small loads directly (LEDs, small relays) – Protection diodes on all outputs Output Interface • Large loads: – Must add circuitry to boost current, power – MOSFETS are ideal for this purpose – Inductive loads: must add protection against large spikes – Often necessary to isolate output – Very often necessary to translate voltages for output Output pins • MOSFETS: – Driven Output pins connection of loads • Sourcing current • Sinking current • The two are somewhat different: Errors and resolution • Errors introduced by the microprocessor: – Due to resolution of A/D, D/A – Sampling errors • These come in addition to any errors in the sensor/actuator Resolution • Digital systems have an inherent resolution: • LSB - least significant bit – Any value smaller than the LSB cannot be represented – This constitutes an error – LSB is inherent in any module as well as in the CPU itself Resolution of modules • A/D - n bits resolution, meaning: a 10 bit A/D, digitizing a 5V input has a resolution of: 5V/1024 = 4.88 mV • • • • The A/D can resolve down to 4.88 mV Can represent data in increments of 4.88 mV (a 14 bit A/D resolves down to 0.3 mV) For a 1V span on a sensor, this is approximately 0.5% error Resolution of modules • PWM (Pulse Width Modulator) • Given a clock frequency fosc, the PWM resolution is: PWM res . = log(fosc /fPWM ) log(2) CPU errors • Most microprocessors are 8 bit microprocessors • Integer arithmetics • Largest value represented: 256 • Roundoff errors due to this representation • Special math subroutines have been developed to minimize these errors (otherwise they would be unacceptably high) Sampling errors • All inputs and outputs on a microprocessor are sampled. That is: – Inputs are only read at intervals – Outputs are only updated at intervals – Intervals depend on the frequency of the clock, operation to be executed and on the software that executes it – Sampling may not even be constant during operation because of the need to perform different tasks at different times – Errors are due to changes in input/output between sampling to which the microprocessor is oblivious – Errors are not fixed - depend among other things on how well the program is written