AN1326, Barometric Pressure Measurement Using Semiconductor

Freescale Semiconductor
Application Note
AN1326
Rev 3, 11/2006
Barometric Pressure Measurement Using
Semiconductor Pressure Sensors
by: Chris Winkler and Jeff Baum
Discrete Applications Engineering
ABSTRACT
The most recent advances in silicon micromachining
technology have given rise to a variety of low-cost pressure
sensor applications and solutions. Certain applications had
previously been hindered by the high-cost, large size, and
overall reliability limitations of electromechanical pressure
sensing devices. Furthermore, the integration of on-chip
temperature compensation and calibration has allowed a
significant improvement in the accuracy and temperature
Digit1
stability of the sensor output signal. This technology allows for
the development of both analog and microcomputer-based
systems that can accurately resolve the small pressure
changes encountered in many applications. One particular
application of interest is the combination of a silicon pressure
sensor and a microcontroller interface in the design of a digital
barometer. The focus of the following documentation is to
present a low-cost, simple approach to designing a digital
barometer system.
Digit2
Digit3
MCU
Signal Conditioning
Pressure
Sensor
Figure 1. Barometer System
© Freescale Semiconductor, Inc., 2006. All rights reserved.
Digit4
INTRODUCTION
SYSTEM OVERVIEW
Figure 1 shows the overall system architecture chosen for
this application. This system serves as a building block, from
which more advanced systems can be developed. Enhanced
accuracy, resolution, and additional features can be integrated
in a more complex design.
There are some preliminary concerns regarding the
measurement of barometric pressure which directly affect the
design considerations for this system. Barometric pressure
refers to the air pressure existing at any point within the earth's
atmosphere. This pressure can be measured as an absolute
pressure, (with reference to absolute vacuum) or can be
referenced to some other value or scale. The meteorology and
avionics industries traditionally measure the absolute
pressure, and then reference it to a sea level pressure value.
This complicated process is used in generating maps of
weather systems. The atmospheric pressure at any altitude
varies due to changing weather conditions over time.
Therefore, it can be difficult to determine the significance of a
particular pressure measurement without additional
information. However, once the pressure at a particular
location and elevation is determined, the pressure can be
calculated at any other altitude. Mathematically, atmospheric
pressure is exponentially related to altitude. This particular
system is designed to track variations in barometric pressure
once it is calibrated to a known pressure reference at a given
altitude.
For simplification, the standard atmospheric pressure at
sea level is assumed to be 29.9 in-Hg. “Standard” barometric
pressure is measured at particular altitude at the average
weather conditions for that altitude over time. The system
described in this text is specified to accurately measure
barometric pressure variations up to altitudes of 15,000 ft.
This altitude corresponds to a standard pressure of
approximately 15.0 in-Hg. As a result of changing weather
conditions, the standard pressure at a given altitude can
fluctuate approximately ±1 in-Hg. in either direction. Table 1
indicates standard barometric pressures at several altitudes of
interest.
In order to measure and display the correct barometric
pressure, this system must perform several tasks. The
measurement strategy is outlined below in Figure 2. First,
pressure is applied to the sensor. This produces a proportional
differential output voltage in the millivolt range. This signal
must then be amplified and level-shifted to a single-ended,
microcontroller (MCU) compatible level (0.5 – 4.5 V) by a
signal conditioning circuit. The MCU will then sample the
voltage at the analog-to-digital converter (A/D) channel input,
convert the digital measurement value to inches of mercury,
and then display the correct pressure via the LCD interface.
This process is repeated continuously.
Table 1. Altitude versus Pressure Data
Signal
Cond.
Amplifier
MPX2100AP
Pressure
Sensor
MC68HC11E9
Microcontroller
Clock Sy nch
Data
4-Digit LCD
& MC145453
Display Driver
Figure 2. Barometer System Block Diagram
There are several significant performance features
implemented into this system design. First, the system will
digitally display barometric pressure in inches of mercury, with
a resolution of approximately one-tenth of an inch of mercury.
In order to allow for operation over a wide altitude range
(0 – 15,000 ft.), the system is designed to display barometric
pressures ranging from 30.5 in-Hg. to a minimum of 15.0 inHg. The display will read “lo” if the pressure measured is
below 30.5 in-Hg. These pressures allow for the system to
operate with the desired resolution in the range from sea-level
to approximately 15,000 ft. An overview of these features is
shown in Table 2.
Altitude (Ft.)
Pressure (in-Hg)
0
29.92
500
29.38
1,000
28.85
Resolution
0.1 in-Hg.
6,000
23.97
System Range
15.0 – 30.5 in-Hg.
10,000
20.57
Altitude Range
0 – 15,000 ft.
15,000
16.86
Table 2. System Features Overview
Display Units
in-Hg
DESIGN OVERVIEW
The following sections are included to detail the system
design. The overall system will be described by considering
the subsystems depicted in the system block diagram,
Figure 2. The design of each subsystem and its function in the
overall system will be presented.
AN1326
2
Sensors
Freescale Semiconductor
Table 3. MPX2100AP Electrical Characteristics
Characteristic
Symbol
Minimum
Typical
Max
Unit
Pressure Range
POP
0
—
100
kPa
Supply Voltage
VS
—
10
16
Vdc
Full Scale Span
VFSS
38.5
40
41.5
mV
Voff
—
—
±1.0
mV
Sensitivity
S
—
0.4
—
mv/kPa
Linearity
—
—
0.05
—
%FSS
Temperature Effect on Span
—
—
0.5
—
%FSS
Temperature Effect on Offset
—
—
0.2
—
%FSS
Zero Pressure Offset
Pressure Sensor
The first and most important subsystem is the pressure
transducer. This device converts the applied pressure into a
proportional, differential voltage signal. This output signal will
vary linearly with pressure. Since the applied pressure in this
application will approach a maximum level of 30.5 in-Hg.
(100 kPa) at sea level, the sensor output must have a linear
output response over this pressure range. Also, the applied
pressure must be measured with respect to a known
reference pressure, preferably absolute zero pressure
(vacuum). The device should also produce a stable output
over the entire operating temperature range.
The desired sensor for this application is a temperature
compensated and calibrated, semiconductor pressure
transducer, such as the MPXM2102A series sensor family.
The MPX2000 series sensors are available in full-scale
pressure ranges from 10 kPa (1.5 psi) to 200 kPa (30 psi).
Furthermore, they are available in a variety of pressure
configurations (gauge, differential, and absolute) and porting
options. Because of the pressure ranges involved with
barometric pressure measurement, this system will employ an
MPXM2102AS (absolute with single port). This device will
produce a linear voltage output in the pressure range of 0 to
100 kPa. The ambient pressure applied to the single port will
be measured with respect to an evacuated cavity (vacuum
reference). The electrical characteristics for this device are
summarized in Table 3.
As indicated in Table 3, the sensor can be operated at
different supply voltages. The full-scale output of the sensor,
which is specified at 40 mV nominally for a supply voltage of
10 Vdc, changes linearly with supply voltage. All non-digital
circuitry is operated at a regulated supply voltage of 8 Vdc.
Therefore, the full-scale sensor output (also the output of the
sensor at sea level) will be approximately 32 mV.
8
⎛ ----- × 40 mV⎞
⎝ 10
⎠
The sensor output voltage at the systems minimum range
(15 in-Hg.) is approximately 16.2 mV. Thus, the sensor output
over the intended range of operations is expected to vary from
32 to 16.2 mV. These values can vary slightly for each sensor
as the offset voltage and full-scale span tolerances indicate.
Signal Conditioning Circuitry
In order to convert the small-signal differential output signal
of the sensor to MCU compatible levels, the next subsystem
includes signal conditioning circuitry. The operational amplifier
circuit is designed to amplify, level-shift, and ground reference
the output signal. The signal is converted to a single-ended,
0.5 – 4.5 Vdc range. The schematic for this amplifier is shown
in Figure 3.
This particular circuit is based on classic instrumentation
amplifier design criteria. The differential output signal of the
sensor is inverted, amplified, and then level-shifted by an
adjustable offset voltage (through Roffset1). The offset voltage
is adjusted to produce 0.5 volts at the maximum barometric
pressure (30.5 in-Hg.). The output voltage will increase for
decreasing pressure. If the output exceeds 5.1 V, a zener
protection diode will clamp the output. This feature is included
to protect the A/D channel input of the MCU. Using the transfer
function for this circuit, the offset voltage and gain can be
determined to provide 0.1 in-Hg of system resolution and the
desired output voltage level. The calculation of these
parameters is illustrated below.
In determining the amplifier gain and range of the trimmable
offset voltage, it is necessary to calculate the number of steps
used in the A/D conversion process to resolve 0.1 in-Hg.
steps
( 30.5 – 15.0 )in-Hg∗ 10 ---------------- = 155 steps
Hg
The span voltage can now be determined. The resolution
provided by an 8-bit A/D converter with low and high voltage
references of zero and five volts, respectively, will detect
19.5 mV of change per step.
VRH = 5 V, VRL = 0 V
Sensor Output at 30.5 in-Hg = 32.44 mV
Sensor Output at 15.0 in-Hg = 16.26 mV
∆Sensor Output = ∆SO = 16.18 mV
3.04 V
Gain = ------------------ = 187
∆SO
Note: 30.5 in-Hg and 15.0 in-Hg are the assumed
maximum and minimum absolute pressures, respectively.
This gain is then used to determine the appropriate resistor
values and offset voltage for the amplifier circuit defined by the
transfer function shown below.
R2
V out = – ------- + 1 * ∆ V + V off
R1
∆V is the differential output of the sensor.
AN1326
Sensors
Freescale Semiconductor
3
+12 V
U1
MC78L08ACP
IN
VS = 8 V
OUT
GROUND
C1
0.33 µF
3
C2
0.33 µF
U2B
MC33272
MPXM2102AS
2
S-
Vout
+
-
1
4
1
1
2
Roffset1
1 kΩ
S+
1
1
1
Roffset2
2.5 kΩ
+
-
2
2
2
5.1 V
ZENER
R4
R3
22.6 kΩ
121 Ω
U2A
MC33272
R2
22.6 kΩ
2
1
2
R1
121 Ω
Figure 3. Signal Conditioning Circuit
The gain of 187 can be implemented with:
R1 ≈ R3 = 121 Ω
R2 ≈ R4 = 22.6 kΩ.
Choosing Roffset1 to be 1 kΩ and Roffset2 to be 2.5 kΩ, Vout
is 0.5 V at the presumed maximum barometric pressure of
30.5 in-Hg. The maximum pressure output voltage can be
trimmed to a value other than 0.5 V, if desired via Roffset1. In
addition, the trimmable offset resistor is incorporated to
provide offset calibration if significant offset drift results from
large weather fluctuations.
The circuit shown in Figure 3 employs an MC33272 (lowcost, low-drift) dual operational amplifier IC. In order to control
large supply voltage fluctuations, an 8 Vdc regulator,
MC78L08ACP, is used. This design permits use of a battery
for excitation.
Microcontroller Interface
The low cost of MCU devices has allowed for their use as a
signal processing tool in many applications. The MCU used in
this application, the MC68HC11, demonstrates the power of
incorporating intelligence into such systems. The on-chip
resources of the MC68HC11 include: an 8 channel, 8-bit A/D,
a 16-bit timer, an SPI (Serial Peripheral Interface –
synchronous), and SCI (Serial Communications Interface –
asynchronous), and a maximum of 40 I/O lines. This device is
available in several package configurations and product
variations which include additional RAM, EEPROM, and/or I/O
capability. The software used in this application was
developed using the MC68HC11 EVB development system.
The following software algorithm outlines the steps used to
perform the desired digital processing. This system will
convert the voltage at the A/D input into a digital value, convert
this measurement into inches of mercury, and output this data
serially to an LCD display interface (through the on-board
SPI). This process is outlined in greater detail below:
1.
2.
3.
4.
5.
6a.
6b.
7.
Set up and enable A/D converter and SPI interface.
Initialize memory locations, initialize variables.
Make A/D conversion, store result.
Convert digital value to inches of mercury.
Determine if conversion is in system range.
Convert pressure into decimal display digits.
Otherwise, display range error message.
Output result via SPI to LCD driver device.
The signal conditioned sensor output signal is connected to
pin PE5 (Port E-A/D Input pin). The MCU communicates to the
LCD display interface via the SPI protocol. A listing of the
assembly language source code to implement these tasks is
included in the appendix. In addition, the software can be
downloaded directly from the Freescale MCU Freeware
Bulletin Board (in the MCU directory). Further information is
included at the beginning of the appendix.
LCD Interface
In order to digitally display the barometric pressure
conversion, a serial LCD interface was developed to
communicate with the MCU. This system includes an
MC145453 CMOS serial interface/LCD driver, and a 4-digit,
AN1326
4
Sensors
Freescale Semiconductor
non-multiplexed LCD. In order for the MCU to communicate
correctly with the interface, it must serially transmit six bytes
for each conversion. This includes a start byte, a byte for each
of the four decimal display digits, and a stop byte. For
formatting purposes, decimal points and blank digits can be
displayed through appropriate bit patterns. The control of
display digits and data transmission is executed in the source
code through subroutines BCDCONV, LOOKUP, SP12LCD,
and TRANSFER. A block diagram of this interface is included
below.
CONCLUSION
This digital barometer system described herein is an
excellent example of a sensing system using solid state
components and software to accurately measure barometric
pressure. This system serves as a foundation from which
more complex systems can be developed. The MPXM2102A
series pressure sensors provide the calibration and
temperature compensation necessary to achieve the desired
accuracy and interface simplicity for barometric pressure
sensing applications.
+5 V
BP
BP
20
VDD
BP IN
BP OUT
DIGIT1
OSC IN
DIGIT2
DIGIT3
DIGIT4
OUT 33
MC145453
MC68HC11
MOSI
SCK
DATA
CLOCK
VSS
OUT1
1
Figure 4. LCD Display Interface Diagram
AN1326
Sensors
Freescale Semiconductor
5
APPENDIX
MC68HC11 Barometer Software Available on:
Freescale Electronic Bulletin Board
MCU Freeware Line
8-bit, no parity, 1 stop bit
1200/300 baud
(512) 891-FREE (3733)
*
*
*
*
*
*
*
*
*
*
*
BAROMETER APPLICATIONS PROJECT - Chris Winkler
Developed: October 1st, 1992
- Freescale Discrete Applications
This code will be used to implement an MC68HC11 Micro-Controller
as a processing unit for a simple barometer system.
The HC11 will interface with an MPX2100AP to monitor,store
and display measured Barometric pressure via the 8-bit A/D channel
The sensor output (32mv max) will be amplified to .5 - 2.5 V dc
The processor will interface with a 4-digit LCD (FE202) via
a Freescale LCD driver (MC145453) to display the pressure
within +/- one tenth of an inch of mercury.
The systems range is 15.0 - 30.5 in-Hg
*
*
*
*
A/D & CPU Register Assignment
This code will use index addressing to access the
important control registers. All addressing will be
indexed off of REGBASE, the base address for these registers.
REGBASE
ADCTL
ADR2
ADOPT
PORTB
PORTD
DDRD
SPCR
SPSR
SPDR
EQU
*
*
*
*
User Variables
The following locations are used to store important measurements
and calculations used in determining the altitude. They
are located in the lower 256 bytes of user RAM
DIGIT1
DIGIT2
DIGIT3
DIGIT4
COUNTER
POFFSET
SENSOUT
RESULT
FLAG
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
*
*
*
*
*
*
*
*
*
*
*
*
*
MAIN PROGRAM
The conversion process involves the following steps:
*
*
*
This process is continually repeated as the loop CONVERT
runs unconditionally through BRA (the BRANCH ALWAYS statement)
Repeats to step 3 indefinitely.
ORG
$C000
* DESIGNATES START OF MEMORY MAP FOR USER CODE
LDX
#REGBASE
* Location of base register for indirect adr
BSR
SPI_CNFG
* Set-up SPI Module for data X-mit to LCD
BSR
SET_UP
* Power-Up A/D, initialize constants
BSR
ADCONV
* Calls subroutine to make an A/D conversion
BSR
DELAY
* Delay routine to prevent LCD flickering
CONVERT
$1000
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
$0001
$0002
$0003
$0004
$0005
$0010
$0012
$0014
EQU
$30
$32
$39
$04
$08
$09
$28
$29
$2A
* register
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
$0016
1.
2.
3.
4.
5.
a.
b.
6.
7.
8.
base of control register
offset of A/D control register
offset of A/D results register
offset for A/D option register location
Location of PORTB used for conversion
PORTD Data Register Index
offset of Data Direction Reg.
offset of SPI Control Reg.
offset of SPI Status Reg.
offset of SPI Data Reg.
BCD blank digit (not used)
BCD tens digit for pressure
BCD tenths digit for pressure
BCD ones digit for pressure
Variable to send 5 dummy bytes
Storage Location for max pressure offset
Storage location for previous conversion
Storage of Pressure(in Hg) in hex format
* Determines if measurement is within range
Set-Up SPI deviceSet-Up A/D, Constants
Read A/D, store sample
Convert into in-Hg
Determine FLAG conditionIN_HG
Display error
Continue Conversion
Convert hex to BCD formatBCDCONV
Convert LCD display digits
Output via SPI to LCD
SPI_CNFG
SET_UP
ADCONV
IN_HG
ERROR
INRANGE
LOOKUP
SPI2LCD
AN1326
6
Sensors
Freescale Semiconductor
BSR
*
*
*
*
IN_HG
* Converts hex format to in of Hg
The value of FLAG passed from IN_HG is used to determine
If a range error has occurred. The following logical
statements are used to either allow further conversion or jump
to a routine to display a range error message.
LDAB
CMPB
BEQ
BSR
BRA
FLAG
#$80
INRANGE
ERROR
OUTPUT
*
*
*
system
*
* Branches
Determines if an range Error has ocurred
If No Error detected (FLAG=$80) then
will continue conversion process
If error occurs (FLAG<>80), branch to ERROR
to output ERROR code to display
*
No Error Detected, Conversion Process Continues
INRANGE
JSR
BCDCONV
JSR
LOOKUP
* Converts Hex Result to BCD
* Uses Look-Up Table for BCD-Decimal
OUTPUT
JSR
SPI2LCD
BRA
CONVERT
* Output transmission to LCD
* Continually converts using Branch Always
*
*
*
Subroutine SPI_CNFG
Purpose is to initialize SPI for transmission
and clear the display before conversion.
SPI_CNFG BSET
PORTD,X #$20
LDAA
#$38
STAA
DDRD,X
LDAA
STAA
#$5D
SPCR,X
LDAA
STAA
#$5
COUNTER
LDAA
SPSR,X
* Set SPI SS Line High to prevent glitch
* Initializing Data Direction for Port D
* Selecting SS, MOSI, SCK as outputs only
CLRA
ERASELCD JSR
* Initialize SPI-Control Register
* selecting SPE,MSTR,CPOL,CPHA,CPRO
* sets counter to X-mit 5 blank bytes
* Must read SPSR to clear SPIF Flag
* Transmission of Blank Bytes to LCD
TRANSFER
* Calls subroutine to transmit
DEC
COUNTER
BNE
ERASELCD
RTS
*
*
*
SET_UP
Subroutine SET_UP
Purpose is to initialize constants and to power-up A/D
and to initialize POFFSET used in conversion purposes.
LDAA
#$90
* selects ADPU bit in OPTION register
STAA
ADOPT,X
* Power-Up of A/D complete
LDD
#$0131+$001A
* Initialize POFFSET
STD
POFFSET
* POFFSET = 305 - 25 in hex
LDAA
#$00
* or Pmax + offset voltage (5 V)
RTS
*
*
*
Subroutine DELAY
Purpose is to delay the conversion process
to minimize LCD flickering.
DELAY
OUTLOOP
INLOOP
LDB
DECB
LDA
#$FF
#$FF
BNE
DECA
BNE
RTS
INLOOP
* Loop for delay of display
* Delay = clk/255*255
OUTLOOP
*
*
*
ADCONV
Subroutine ADCONV
Purpose is to read the A/D input, store the conversion into
SENSOUT. For conversion purposes later.
LDX
#REGBASE
* loads base register for indirect addressing
LDAA
#$25
STAA
ADCTL,X
* initializes A/D cont. register SCAN=1,MULT=0
WTCONV
BRCLR
ADCTL,X #$80 WTCONV
LDAB
ADR2,X
CLRA
STD
SENSOUT
RTS
* Wait for completion of conversion flag
* Loads conversion result into Accumulator
* Stores conversion as SENSOUT
AN1326
Sensors
Freescale Semiconductor
7
*
*
*
*
IN_HG
TOHIGH
Subroutine IN_HG
Purpose is to convert the measured pressure SENSOUT, into
units of in-Hg, represented by a hex value of 305-150
This represents the range 30.5 - 15.0 in-Hg
LDD
POFFSET
* Loads maximum offset for subtraction
SUBD
SENSOUT
* RESULT = POFFSET-SENSOUT in hex format
STD
RESULT
* Stores hex result for P, in Hg
CMPD
#305
BHI
TOHIGH
LDAB
TOLOW
CMPD
BLO
#150
TOLOW
LDAB
STAB
BRA
#$80
FLAG
END_CONV
#$FF
STAB
BRA
FLAG
END_CONV
LDAB
STAB
#$00
FLAG
END_CONV RTS
*
*
*
*
Subroutine ERROR
This subroutine sets the display digits to output
an error message having detected an out of range
measurement in the main program from FLAG
ERROR
SET_HI
LDAB
LDAB
STAB
STAB
#$00
DIGIT1
DIGIT4
LDAB
CMPB
BNE
FLAG
#$00
SET_HI
* FLAG is used to determine
* if above or below range.
* If above range GOTO SET_HI
LDAB
STAB
LDAB
STAB
BRA
#$0E
DIGIT2
#$7E
DIGIT3
END_ERR
* ELSE display LO on display
* Set DIGIT2=L,DIGIT3=O
#$37
STAB
LDAB
STAB
DIGIT2
#$30
DIGIT3
RTS
*
*
*
*
*
Subroutine BCDCONV
Purpose is to
uses standard
Divide HEX/10
process until
BCDCONV
LDAA
CONVLP
*
*
*
*
*
LDX
* GOTO exit of subroutine
* Set DIGIT2=H,DIGIT3=1
END_ERR
#$00
STAA
STAA
STAA
LDY
LDD
#$A
IDIV
STAB
DEY
CPX
XGDX
BNE
LDX
RTS
* Initialize digits 1,4 to blanks
convert ALTITUDE from hex to BCD
HEX-BCD conversion scheme
store Remainder, swap Q & R, repeat
remainder = 0.
* Default Digits 2,3,4 to 0
DIGIT2
DIGIT3
DIGIT4
#DIGIT4
RESULT
0,Y
#$0
CONVLP
#REGBASE
* Conversion starts with lowest digit
* Load voltage to be converted
* Divide hex digit by 10
* Quotient in X, Remainder in D
* stores 8 LSB's of remainder as BCD digit
* Determines if last digit stored
* Exchanges remainder & quotient
* Reloads BASE into main program
Subroutine LOOKUP
Purpose is to implement a Look-Up conversion
The BCD is used to index off of TABLE
where the appropriate hex code to display
that decimal digit is contained.
AN1326
8
Sensors
Freescale Semiconductor
*
LOOKUP
TABLOOP
DIGIT4,3,2 are converted only.
LDX
DEX
#DIGIT1+4
LDY
LDAB
ABY
LDAA
STAA
CPX
BNE
#TABLE
0,X
0,Y
0,X
#DIGIT2
TABLOOP
* Counter starts at 5
* Start with Digit4
* Loads table base into Y-pointer
* Loads current digit into B
* Adds to base to index off TABLE
* Stores HEX segment result in A
* Loop condition complete, DIGIT2 Converted
RTS
*
*
*
*
*
*
Subroutine SPI2LCD
Purpose is to output digits to LCD via SPI
The format for this is to send a start byte,
four digits, and a stop byte. This system
will have 3 significant digits: blank digit
and three decimal digits.
*
SPI2LCD
Sending LCD Start Byte
LDX
#REGBASE
LDAA
SPSR,X
LDAA
#$02
BSR
TRANSFER
*
LDAA
ORA
STAA
DIGIT3
#$80
DIGIT3
LDAA
STAA
#$00
DIGIT1
* Reads to clear SPIF flag
* Byte, no colon, start bit
* Transmit byte
Initializing decimal point & blank digit
* Sets MSB for decimal pt.
* after digit 3
* Set 1st digit as blank
*
Sending four decimal digits
LDY
LDAA
BSR
INY
CPY
BNE
DLOOP
#DIGIT1
0,Y
TRANSFER
* Pointer set to send 4 bytes
* Loads digit to be x-mitted
* Transmit byte
* Branch until both bytes sent
#DIGIT4+1
DLOOP
*
Sending LCD Stop Byte
LDAA
BSR
#$00
TRANSFER
* end byte requires all 0's
* Transmit byte
RTS
*
*
*
Subroutine TRANSFER
Purpose is to send data bits to SPI
and wait for conversion complete flag bit to be set.
TRANSFER LDX
XMIT
#REGBASE
BCLR
STAA
BRCLR
BSET
LDAB
PORTD,X #$20
* Assert SS Line to start X-misssion
SPDR,X
* Load Data into Data Reg.,X-mit
SPSR,X #$80 XMIT * Wait for flag
PORTD,X #$20
* DISASSERT SS Line
SPSR,X
* Read to Clear SPI Flag
RTS
*
*
TABLE
Location for FCB memory for look-up table
There are 11 possible digits: blank, 0-9
FCB
END
$7E,$30,$6D,$79,$33,$5B,$5F,$70,$7F,$73,$00
AN1326
Sensors
Freescale Semiconductor
9
NOTES
AN1326
10
Sensors
Freescale Semiconductor
NOTES
AN1326
Sensors
Freescale Semiconductor
11
How to Reach Us:
Home Page:
www.freescale.com
Web Support:
http://www.freescale.com/support
USA/Europe or Locations Not Listed:
Freescale Semiconductor, Inc.
Technical Information Center, EL516
2100 East Elliot Road
Tempe, Arizona 85284
+1-800-521-6274 or +1-480-768-2130
www.freescale.com/support
Europe, Middle East, and Africa:
Freescale Halbleiter Deutschland GmbH
Technical Information Center
Schatzbogen 7
81829 Muenchen, Germany
+44 1296 380 456 (English)
+46 8 52200080 (English)
+49 89 92103 559 (German)
+33 1 69 35 48 48 (French)
www.freescale.com/support
Japan:
Freescale Semiconductor Japan Ltd.
Headquarters
ARCO Tower 15F
1-8-1, Shimo-Meguro, Meguro-ku,
Tokyo 153-0064
Japan
0120 191014 or +81 3 5437 9125
[email protected]
Asia/Pacific:
Freescale Semiconductor Hong Kong Ltd.
Technical Information Center
2 Dai King Street
Tai Po Industrial Estate
Tai Po, N.T., Hong Kong
+800 2666 8080
[email protected]
For Literature Requests Only:
Freescale Semiconductor Literature Distribution Center
P.O. Box 5405
Denver, Colorado 80217
1-800-441-2447 or 303-675-2140
Fax: 303-675-2150
[email protected]
AN1326
Rev. 3
11/2006
Information in this document is provided solely to enable system and software
implementers to use Freescale Semiconductor products. There are no express or
implied copyright licenses granted hereunder to design or fabricate any integrated
circuits or integrated circuits based on the information in this document.
Freescale Semiconductor reserves the right to make changes without further notice to
any products herein. Freescale Semiconductor makes no warranty, representation or
guarantee regarding the suitability of its products for any particular purpose, nor does
Freescale Semiconductor assume any liability arising out of the application or use of any
product or circuit, and specifically disclaims any and all liability, including without
limitation consequential or incidental damages. “Typical” parameters that may be
provided in Freescale Semiconductor data sheets and/or specifications can and do vary
in different applications and actual performance may vary over time. All operating
parameters, including “Typicals”, must be validated for each customer application by
customer’s technical experts. Freescale Semiconductor does not convey any license
under its patent rights nor the rights of others. Freescale Semiconductor products are
not designed, intended, or authorized for use as components in systems intended for
surgical implant into the body, or other applications intended to support or sustain life,
or for any other application in which the failure of the Freescale Semiconductor product
could create a situation where personal injury or death may occur. Should Buyer
purchase or use Freescale Semiconductor products for any such unintended or
unauthorized application, Buyer shall indemnify and hold Freescale Semiconductor and
its officers, employees, subsidiaries, affiliates, and distributors harmless against all
claims, costs, damages, and expenses, and reasonable attorney fees arising out of,
directly or indirectly, any claim of personal injury or death associated with such
unintended or unauthorized use, even if such claim alleges that Freescale
Semiconductor was negligent regarding the design or manufacture of the part.
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners.
© Freescale Semiconductor, Inc. 2006. All rights reserved.