Download ENGG 3640: Microcomputer Interfacing

Document related concepts

Power electronics wikipedia , lookup

Operational amplifier wikipedia , lookup

Resistive opto-isolator wikipedia , lookup

UniPro protocol stack wikipedia , lookup

Valve RF amplifier wikipedia , lookup

Schmitt trigger wikipedia , lookup

Transistor–transistor logic wikipedia , lookup

Switched-mode power supply wikipedia , lookup

Current mirror wikipedia , lookup

Immunity-aware programming wikipedia , lookup

Power dividers and directional couplers wikipedia , lookup

Two-port network wikipedia , lookup

Charlieplexing wikipedia , lookup

Opto-isolator wikipedia , lookup

Rectiverter wikipedia , lookup

Transcript
ENG3640
Microcomputer Interfacing
Week #4
Parallel IO Interfacing
Topics




I/O Addressing Techniques
I/O Port Structure
CPU12 I/O Ports
Programming I/O Ports:





Driving LEDs/7-Segment Displays
Interfacing to Switches
Switch Debouncing
Keypad Interfacing Techniques/Issues
Liquid Crystal Displays
ENG3640 Fall 2012
2
Resources

Huang, Chapter 4 Sections



4.10 Intro to Parallel I/O Ports
4.11 Simple I/O Devices
Huang, Chapter 7 Section






7.2 I/O Related Issues
7.3 I/O Addressing Issues
7.5 The HCS12 Parallel Ports
7.6 Electrical Characteristics
7.7 Liquid Crystal Displays
Interfacing Parallel Ports to a keypad
ENG3640 Fall 2012
3
Why Parallel I/O?


Several embedded applications require interfacing an MCU with
Light Emitting Diodes, Switches, Liquid Crystal Display, Seven
Segment Displays.
I/O ports therefore have to be programmed to handle
input/output signals.
ENG3640 Fall 2012
4
I/O Addressing Techniques

If the same address bus is used for both
memory and I/O, how should the hardware
be designed to differentiate between
memory and I/O reads and writes?
CPU
Memory
I/O
Interface
Data
Address
Control
ENG3640 Fall 2012
5
Memory Mapped I/O vs. Isolated I/O

1.
2.
3.

1.
2.
3.
4.
Memory Mapped I/O (MOTOROLA):
Any instruction that reads or writes memory can read/write
I/O Port
Address specifies which module (input, output, RAM, ROM),
will communicate with the processor
Ex: LDAA #56 STAA $0024 (copy value to port H)
Isolated I/O (INTEL):
The control bus signals that activate the I/O are separate from those
that activate the memory device.
These systems have a separate address space.
Separate instructions are used to access I/O and Memory.
Ex: IN AL, $10 (copy values of port $10 into register AL)
Advantages/Disadvantages?
ENG3640 Fall 2012
6
I/O Port Structure
1.
2.
3.
Data Register: for data in transit
Control Register: Hold commands from processor to port
Status Register: Used to monitor I/O activity
Polling
Principle
functionality is
serve as way
station for data
in transit
between the
computer and
external world.
Interrupt
Driven
ENG3640 Fall 2012
7
1-KB SRAM
68HC812A4
Block
Diagram
4-KB EEPROM
CPU12
ENG3640 Fall 2012
8
Memory
Map
ENG3640 Fall 2012
9
Port Details
Port
Direction
Function
Port A
I/O
Single-chip modes: general-purpose I/O
Expanded modes: external address bus ADDR15–ADDR8
Port B
I/O
Single-chip modes: general-purpose I/O
Expanded modes: external address bus ADDR7–ADDR0
Port C
I/O
Single-chip modes: general-purpose I/O
Expanded wide modes: external data bus DATA15–DATA8
Expanded narrow modes: external data bus DATA15–DATA8/DATA7–
DATA0
Port D
I/O
Single-chip and expanded narrow modes: general-purpose I/O
External data bus DATA7–DATA0 in expanded wide mode(1)
Port E
I/O and I(2)
Port F
I/O
Chip select
General-purpose I/O
Port G
I/O
Memory expansion
General-purpose I/O
Port H
I/O
Key wakeup(3)
General-purpose I/O
Port J
I/O
Key wakeup(4)
General-purpose I/O
Port S
I/O
SCI and SPI ports
General-purpose I/O
Port T
I/O
Timer port
General-purpose I/O
Port AD
I
External interrupt request inputs, mode select inputs, bus control signals
General-purpose I/O
ADC port
General-purpose input
10
General Purpose I/O: Bidirectional
Most GPIO pins on the 68HC12 MCU can be programmed for use in
either direction.
Two registers: the data register PORT and data direction register DDR.


The DDR determines the direction of the port pin.



If the DDR = 1 then the port is an output and
if the DDR = 0 the data register output is disabled and the port pin is placed in
high impedance state.
ENG3640 Fall 2012
11
I/O PORTS Addresses
Register Name
Address
Functionality
PORTA
$0000
Port A Data Register
DDRA
$0002
Port A Data Direction Register
PORTB
$0001
Port B Data Register
DDRB
$0003
Port B Data Direction Register
PORTC
$0004
Port C Data Register
DDRC
$0006
Port C Data Direction Register
PORTD
$0005
Port D Data Register
DDRD
$0007
Port D Data Direction Register
PORTE
$0008
Port E Data Register
DDRE
$0009
Port E Data Direction Register
PORTF
$0030
Port F Data Register
DDRF
$0032
Port F Data Direction Register
PORTG
$0031
Port G Data Register
DDRG
$0033
Port G Data Direction Register
PORTH
$0024
Port H Data Register
DDRH
$0025
Port H Data Direction Register
PORTJ
$0028
Port J Data Register
DDRJ
$0029
Port J Data Direction Register
12
I/O PORTS Usage on EVB
1. Port B is connected to the Light Emitting Diodes (LEDS)
a) Each Port B line is monitored by an LED.
b) In order to turn on Port B LEDs, the PJ1 (Port J pin 1)
must be programmed as output and set for logic zero.
c) If you ignore the status of the LEDs, the Port B can drive
any other I/O on the breadboard.
2. Port P is connected to the Seven Segment Display
a) There are 4 digits of 7-Segment Displays on the EVB.
b) Port B is used to drive the 7-segment anodes and PP0-PP3
(Port P) to drive common cathodes
c) To use the 7-Segments you need to multiplex among them.
3. Port K is connected to the Liquid Crystal Display (LCD)
4. Port A is connected to the Hex Key Pad
5. Port H is connected to the DIP Switches and Push buttons.
13
General Purpose I/O Usage


Parallel ports are often used for simple I/O such as
turning on LEDs, 7-segment displays or reading
switches (unconditional transfer)
Steps for using Ports:
1. Identify the address of an I/O port and its Data
Direction Register (DDR)
2. Program the DDR by writing a value to it.
3. The value written to the DDR reflects the
appropriate setting for the port (i.e a `0’ will make
the corresponding pin an input and a `1’ will force
the pin in the port to be an output).
4. Load a register with a value and store this value to
the address of the I/O PORT.
ENG3640 Fall 2012
14
General Purpose I/O Usage
To make bit 0 of PORTH (PH0) an output, we
would use the following instruction:
DDRH EQU $25
bset DDRH, $01 ; Set PORTH direction
Once bit 0 of PORTH has been configured as an
output, we can make the pin go to one by
writing a one to bit0 of PORTH as follows:
PORTH EQU $24
bset PORTH,$01 ; Set PORTH bit-0 high
ENG3640 Fall 2012
15
Avoiding Transients and Glitches
When the MCU is powered up or reset, all GPIO ports
are configured as inputs.


The port will remain an input until the software changes the
data direction register.
Can this cause a problem when a port is used as an
output in normal operation?



The external device connected to the port may do strange
things!
For example, if an output is connected to a motor or solenoid
driver, the motor or solenoid may run intermittently during
this time and have serious consequences!
ENG3640 Fall 2012
16
Avoiding Transients and Glitches
A pull-up or pull-down resistor can be added to the
port so the node will always be pulled to the inactive
level instead of floating.
The port can be preset to the inactive level before
changing its direction to an output (when the port
direction is changed a temporary glitch on the
output will occur!)
1.
2.

To avoid the glitch, we can write to the port data register
before the direction is changed.
bset PORTH, $00
bset DDRH, $01
; preset PORTH bit-0 low
; PORTH bit-0 an output
ENG3640 Fall 2012
17
Interfacing: Voltage Parameters


Like any digital device, before we can connect
something to an input or output, we need to know
the specification for the interface parameter.
The first parameter to consider are the input and
output voltage levels and corresponding noise
margins.
VDD and VSS are supply
voltages. The output voltage
parameters are VOL and VOH.
The input voltage parameters
are VIL and VIH. For a digital
system to work correctly, the
output high voltage always
must be between VIH,min and
VDD.
Noise Margin?
ENG3640 Fall 2012
18
Interfacing: Applications
1.
2.
Like most digital logic devices, the output of MCUs
can sink more current than they can source.
Consequently, devices that require significant load
current like an LED should be connected active-low.
ENG3640 Fall 2012
19
Light Emitting Diodes (LED)
1.
2.
An LED emits light when current flows through it in
the positive direction i.e. when the voltage on the
anode side is made higher than the voltage on the
cathode side.
The forward voltage across the LED is typically about
1.5 to 2 Volts.
MCU produces
low
ENG3640 Fall 2012
20
Connecting an LED to an Output Port



Determine whether we can drive an active-low LED
from an M68HC12 output?
Assume that a high-efficiency LED with IF,min = 10mA
and VF,max = 2.0 V is used
The LED in the figure
is connected active
low so that when the
output goes low, the
current IL flows
through the LED and
turns it on.
ENG3640 Fall 2012
21
Connecting an LED to an Output Port


Using a 5-volt supply and assuming that the
LED has a 2.0 V drop across it, what resistor
value will limit the current to 10mA?
Answer:
 5V = 2.0V + IRx x Rx
 Setting IRx to 10mA the resistor Rx is solved
to be 300 Ohm.
ENG3640 Fall 2012
22
Connecting an LED to an Output Port


An I/O port pin of a microcontroller generally
does not have enough drive to supply the
current.
So an inverter is often used as a switch to
turn the LED on and off.
VCC
Active High since
MCU produced a 1 to
turn the LED on
74HC04
Figure 7.9 An LED connected to a CMOS inverter through a currentlimiting resistor.
ENG3640 Fall 2012
23
Use the 68HC12 Port H to drive green, yellow, red, and blue LEDs.
Light each of them for half of a second in turn and repeat. The 68HC12
uses a 16-MHz crystal oscillator to generate internal clock signals.
Solution:
The upper four pins of the Port H can be used for this purpose.
5V
68HC12
green
74HC04
5V
5V
red
yellow
300W
5V
300W
blue
300W
300W
PP7
74HC04
PP6
74HC04
PP5
74HC04
PP4
Figure 7.10 Circuit connection for example 7.3
ENG3640 Fall 2012
24
PORTH equ
DDRH equ
org
ldaa
staa
Forever ldaa
staa
jsr
ldaa
staa
jsr
ldaa
staa
jsr
ldaa
staa
jsr
jmp
swi
$24
$25
$1000
#$FF
DDRH
#$80
PORTH
delay_hs
#$40
PORTH
delay_hs
#$20
PORTH
delay_hs
#$10
PORTH
delay_hs
forever
; configure PORTH for output
;
“
; turn on green LED and turn off other LEDs
;
“
; wait for half of a second
; turn on yellow LED and turn off other LEDs
;
“
; wait for half of a second
; turn on red LED and turn off other LEDs
;
“
; wait for half of a second
; turn on blue LED and turn off other LEDs
;
“
; wait for half of a second
; repeat
ENG3640 Fall 2012
25
Seven Segment Displays
Consists of seven LED
segments (a, b, c, d, e, f, g)
Alphanumeric characters
can be displayed by
controlling the segments.
Two types of Seven Segment
Displays:



1.
2.
Common Cathode
Common Anode
ENG3640 Fall 2012
26
Seven Segment Displays

Common Anode:
1.
2.
All anodes are tied in
common.
Segment will be lit
whenever a low voltage
is applied.

Common Cathode:
1.
all cathodes are tied in
common.
Segment will be lit
whenever a high voltage
is applied.
Current limiting resistors
must be included or else
you might damage
ENG3640 Fall 2012
display.
2.

27
Seven Segment Displays: Examples
 Depending on the type of
display used a different hex
code is generated by the
MCU.
1. Common Anode: sending a
``0” will illuminate the
segment.
2. Common Cathode:
sending a ``1” will
illuminate the segment.
ENG3640 Fall 2012
28
Seven Segment Displays: Decoders



Some ICs are specially
designed to drive 7segment displays.
They contain buffers
to supply required
drive currents.
When using
MC144495 decoder, no
current limiting
resistors have to be
used since they are
built in the MC14495
ENG3640 Fall 2012
29
Software 7-Segment Code Look-up
If your interface circuit uses only buffers and
resistors to connect an output port to a seven
segment display, you will have to use software to
generate the character codes.
LAB #2






The program can do this by using a look-up table.
The contents of the table depends on the application and
type of display.
For example, to display hex digits for a common anode
display, entry 4 would have the byte $19.
What addressing mode to use?
ENG3640 Fall 2012
30
Interfacing a Switch: Pull Up




To convert the mechanical signal into an electrical signal, a
resistor pull-up is used.
The amount of current this output can source is determined by
the resistor value.
When the switch is open, Output?
When the switch is closed, Output?
+5V
1K
ENG3640 Fall 2012
switch
Output
I/O
Open
+5V
Port
Closed
0V
31
Interfacing a Switch: Pull Down


When the switch in pull-down circuit is open the output is
pulled to the ground
The amount of current this output can sink (IOL) is determined
by the resistor value.
+5V
1K
I/O
switch
Output
Port
Open
0V
Closed
+5V
ENG3640 Fall 2012
32
Interfacing a Switch: PORTJ MCU


Port J on the MC68HC812A4 supports both internal
pull-ups and pull-downs.
Either of the two previous circuits could be
implemented on the 6812 without the resistor
+5V
PJ1 with pull-down
PJ0 with pull-up
ENG3640 Fall 2012
33
PORTJ: Pull-up/Pull-down Registers



Each bit in the PUPSJ Register corresponds to a PORT J pin.
Each bit selects a pull-up or pull-down device for the
associated PORT J pin.
The pull-up or pull-down is active only if enabled by the PULEJ
Register
ENG3640 Fall 2012
34
PORTJ: Pull-up/Pull-down Registers
DDRJ PUPSJ bit
PULEJ bit
Port J mode
1
X
X
Regular output
0
X
0
Regular input
0
0
1
0
1
1
Input with passive pulldown
Input with passive pullup
ENG3640 Fall 2012
35
PORTJ: Data Register/Data Direction



RECALL: PORTJ can act as a general purpose I/O
PORTJ (Data Register) and DDRJ (Data Direction Register) are
used to setup the port for reading/writing information
PORT J is also used in the key wakeup feature of the MC6812!
ENG3640 Fall 2012
36
PORTJ : Wakeup Flag/Interrupt Enable



The key wakeup feature of the MC6812 issues an interrupt that
wakes up the CPU when it is in stop or wait mode.
Wakeups are triggered with falling/rising signal edge
An interrupt is generated when a bit in KWIFJ register and its
corresponding KWIEJ bit are both set.
ENG3640 Fall 2012
37
Switch Bouncing

When mechanical switches are opened or closed
there are brief oscillations due to mechanical
bouncing (switch bounce).
+5V
+5V
A
0V
What is the consequence of
such bouncing for
interfacing?
ENG3640 Fall 2012
38
Switch Debouncing



When the mechanical switch is touched (pressed) or released it
bounces microscopically for a period of milliseconds.
The MCU will see many occurrences of ``make” and ``break”
instead of one occurrence.
The MCU should see only one ``break” and one ``make”
ENG3640 Fall 2012
39
Switch Debouncing: Techniques
Several techniques exist to solve the
debouncing problem:
Hardware Techniques:


1.
2.
3.
RS-flip flop
Integrating debouncer (capacitor)
Schmitt Trigger Circuit
Software Techniques:

1.
Delay loops
ENG3640 Fall 2012
40
Hardware Debouncing: Flip Flop

NAND
An SR latch can be used to debounce a switch
+5V
S
Q
S
R
R
Q
+5V
ENG3640 Fall 2012
I1
I2
F
0
0
1
0
1
1
1
0
1
1
1
0
S
R
Q
0
1
1
1
1
1
1
0
0
1
1
0
0
0
X
41
Hardware Debouncing: Schmitt Trigger



A Schmitt trigger is a special circuit that uses feedback
internally to shift the switching threshold depending on
whether the input is changing from low to high or high to low.
The difference between V T+ and V T- is called hysteresis.
A 74LS14 Schmitt Trigger inverter can be used to debounce a
switch.
VOUT
V TV T+
5.0
2.1
Example: 74LS14
ENG3640 Fall 2012
2.9
5.0
VIN
42
Hardware Debouncing: Schmitt Trigger
A noisy slowly
changing input
Output produced by
ordinary inverter
ENG3640 Fall 2012
43
Hardware Debouncing: Schmitt Trigger
A noisy slowly
changing input
Output produced by
ordinary inverter
Output produced by
inverter with 0.8 V
of hysteresis
ENG3640 Fall 2012
44
Integrating Debouncer:

5V

R
Vout
The RC constant of the
integrator determines the
rate at which the capacitor
charges up towards the
supply voltage.
The capacitor value is
chosen large enough so that
Vout does not exceed the
zero threshold value while
the switch is bouncing!
Threshold Level
C
ENG3640 Fall 2012
45
Calculating the capacitor value
Given R = 1K, bounce time = 5ms, what is the
value of C such that the output voltage seen
by the MCU = 0.7V?


Vout = 5 – 5e-t/RC
0.7 >= 5 – 5e -5ms/(1K.C)
0.86 <= e -5ms/(1K.C)

1/0.86 >= e 5ms/(1K.C)

1.16 > = e 5ms/(1K.C)
ln(1.16) >= 5ms/(1K.C)
C >= 5ms/(1K.ln(1.16)) = 33micro Farad.




ENG3640 Fall 2012
46
Integrating Debouncer:

5V
R
The capacitor value is
chosen such that the
voltage does not exceed
the 0.7-V threshold of the
NOT gate while it is
bouncing.
74LS14
MCU
Vout
Input Port
C
Problem?
ENG3640 Fall 2012
47
Integrating Debouncer:
5V
74LS14
1K
Vout
MCU
Input Port
22 ohm
C
Current can be large (causes spark), these sparks
will produce carbon deposits on the switch that will
build up until switch no longer works.
To limit the current a small resistor is placed in
series with the switch.
ENG3640 Fall 2012
48
Software Debouncing

To debounce a switch we can use the
following simple approach:
1. A software time delay is used that provides
a time delay (usually 10-20 ms) longer than
the duration of the switch bouncing action.
2. So if switch goes low, wait for longer than
10ms or 20ms and then test for the switch
still being low.
ENG3640 Fall 2012
49
Keyboard/Keypad Interfacing




Keyboards are used to enter input into a computer.
A common type of keyboard is the matrix type.
It saves an amount of I/O wiring because the keys share wires.
Each has its own combination of row and column.
ENG3640 Fall 2012
50
Keypad Interfacing




Each key has an identifying number (key code or scan code)
as well as a character or function associated with it.
For example key 11 has the character (0).
How does the MCU identify that key 11 was pressed?
By Sending a signal to terminal G and Checking terminal E, it
will find a short circuit thus it will identify the key to be 11.
ENG3640 Fall 2012
51
Keypad Decoding
1. To detect a short circuit, the MCU drives one of the output lines low
2. Checks the corresponding input line, if it is low, key was pressed.
3. If the key was not pressed, the open circuit allows the resistor to pull up
the input line to logic high.
4. The combination of both low logic column and row will identify the
pressed
key.
68HC12
PP7
1
PP6
PP5
PP4
Table 7.6 Sixteen-key keypad row selections
0
PP3
3
7
B
F
PP2
2
6
A
E
PP1
1
5
9
D
PP0
0
4
8
C
PP7
PP6
PP5
PP4
1
1
1
0
1
1
0
1
1
0
1
1
0
1
1
1
Selected keys
0,
4,
8,
C,
1,
5,
9,
D,
2,
6,
A,
E,
and 3
and 7
and B
and F
10KW
VCC
Figure 7.23 Sixteen-key keypad connected to 68HC12
52
Keypad Decoding
• Write an assembly subroutine that reads a character from the keypad.
The subroutine should perform keypad scanning, debouncing, and
ASCII code generation.
• Steps:
1. Configure Port H such that 4 MSB are output and 4 LSB are input.
2. Select the row containing keys 0,1,2,3
3. If Key 0 pressed then
4.
debounce key 0 (i.e. jump to subroutine wait 10ms)
5.
get the ASCII code of 0
6. else if key 1 pressed then
7.
debounce key 1 (i.e. jump to subroutine wait 10ms)
See page 265, Example 7.9 in your text book
ENG3640 Fall 2012
53
Liquid Crystal Displays
Liquid Crystal Displays (LCDs) are widely used in
microcomputer systems (Embedded Systems).

1.
They are used in watches, calculators, instrument panels, consumer
electronic displays (VCRs)
Advantages over LEDs and 7-Segment Displays?

1.
2.
Low power consumption with respect to LEDs. This allows the
display and even the computer system to be battery operated.
LCDs are more flexible in their sizes and shapes. So this permits the
combination of numbers-letters, graphics to be driven with
relatively simple interface.
Disadvantage?

1.
Low response.
ENG3640 Fall 2012
54
Liquid Crystal Displays: Structure
1. An LCD display has two plates
separated by crystal material.
2. The polarizer plates are used
to pass light (acts like a
capacitor).
3. The liquid crystal can be made
to pass or stop light.
4. Unlike LEDs that convert
electric power to optical power,
an LCD uses AC voltage to
change the light.
5. An LCD could be either of
reflective type or an absorption
type.
ENG3640 Fall 2012
55
Liquid Crystal Displays: Operation
1. The light energy is supplied by
(a) room (b) separate back light.
2. The LCD display requires an
alternating excitation wave
applied to selected electrodes to
charge selected areas.
3. The excitation wave develops an
electrostatic field to align the
liquid crystal molecules in these
selected areas.
4. When the crystals are aligned
they allow light to pass through
to the mirror.
5. In the charged areas the mirror
reflects more light.
ENG3640 Fall 2012
56
Liquid Crystal Displays: Operation

An LCD display requires an alternating excitation wave applied
to selected electrodes to change selected areas.

A constant (DC) excitation signal will polarize and destroy
the crystal.
Control
FP
Front Plane
XOR
VLCD
60 Hz
Oscillator
BP
Liquid Crystal Material
Back Plane
ENG3640 Fall 2012
57
Liquid Crystal Displays: Operation




The oscillator output BP is a square wave with frequency of 60Hz.
When the Control signal is low, FP is in phase with BP.
Therefore, VLCD will be zero (display is blank).
When control signal is high, VLCD will be an AC square wave and
the display reflects light (display is visible).
ENG3640 Fall 2012
58
Liquid Crystal Displays: HD44780





The HD44780 is an industry standard LCD controller.
An I/O port can easily be used to interface with the HD44780.
By controlling the value of RS and R/W the MCU can easily either
sends instructions or data to the controller.
Most operations require 40 micro seconds to complete.
To be used in LAB #4.
ENG3640 Fall 2012
59
HD44780 LCD Controller Instr. Set
Instruction
Command Code
Description
Time
Clear Display
00000001
Clears Display
1.64 ms
Cursor Home
0000001x
Returns cursor to home position
1.64 ms
Function Set
001 DL N F * *
Sets interface data length, # of
display lines, char font
40 micro sec
Display on/off
control
0000 1 D C B
Set on/off of all display (D),
cursor on/off (C), and blink (B)
40 micro sec




D: display on/off.
F: font size
B: cursor blink on/off.
N: number of lines.
0=off, 1=on
0=5x7 dots, 1=5x10 dots
0=off, 1=on
0=1 line, 1=2 lines
ENG3640 Fall 2012
60
HD44780: Initialization
LCD Initialization Routine
initlcd
ldaa
jsr
ldaa
jsr
ldaa
jsr
ldaa
jsr
rts
#$3C
lcdcmd
#$0f
lcdcmd
#$14
lcdcmd
#$01
lcdcmd
; configure display format to 2x40
;
”
; turn on display and cursor
;
“
; shift cursor right
;
“
; clear display and return cursor to home
;
“
; Send a command in A to the LCD command register
lcdcmd staa cmd_reg ; write command
jsr delay40 ; wait
rts
ENG3640 Fall 2012
61
ENG3640 Fall 2012
62
Interfacing: Loads
The second case is to loads which will
require more current than 10mA

1.
2.

We might want to connect an LED or small relay to
an output of the MCU.
To do this we need to add a resistor to limit the
current or a driver IC to protect the MCU from
dangerous current levels or transients.
The Maximum Ratings in the electrical
specifications for the 68HC12 is +/- 25mA.
 This Maximum ratings give the value that
if exceeded may destroy the part.
ENG3640 Fall 2012
63
Interfacing: No-Loads

The data sheet for a digital device lists two values
for the voltage output levels.
1. The first is for small loads, typically 10mA (use for
the same family, i.e HCMOS devices)
2. This represents about 10 HCMOS logic gates.
ENG3640 Fall 2012
64
Interfacing: Current Parameters
The interface current parameters are the output
currents, IOH and IOL, and the input leakage current
IIN.

1.
2.
3.
IOH is the current flowing out of a high output
IOL is the current flowing out of a low output
IIN is the leakage current that flows into or out of an input pin.
These currents are used to determine the static
fanout of a device, that is, the number of inputs that
can be connected to one output while preserving the
required voltage margins.

1.
2.
3.
Static fanout for a low output is: nL = | IOL,max |/| IIn |
Static fanout for a high output is: nH = | IOH,max |/| IIn |
n = min [ nH, nL ]
ENG3640 Fall 2012
65
Interfacing: Simple Load Model
To determine the output
characteristics, we need to model the
port output as shown.
Rp is the equivalent resistance of the
internal PMOS, and Rn is the equivalent
resistor of the internal NMOS.
When the output is high, the PMOS is
on and the NMOS is off.






Assume that the resistance for a transistor
that is off is infinite.
Rp(on)max = VDD-VOH,min / | IOH |
Rn(on)max = VOL,max / | IOL |
ENG3640 Fall 2012
66
Operating Modes and Resource Mapping




1.
2.
The MCU can operate in eight different modes. Each mode has
a different default memory map and external bus configuration.
After reset, most system resources can be mapped to other
addresses by writing to the appropriate control register.
The states of BKGD, MODB and MODA pins during reset
determine the operating mode after reset.
Two basic types of operating modes
Normal Mode
Special Mode
ENG3640 Fall 2012
67
Operating Modes
Normal Modes: Some registers and bits are protected against
accidental changes.
Special Modes: Protected control registers and bits are allowed
greater access for special purposes such as testing and emulation.


BKGD
MODB
MODA
Mode
Port A
Port B
Port C
Port D
0
0
0
Special single-chip
G.P.(1) I/O
G.P. I/O
G.P. I/O
0
0
1
Special expanded narrow
ADDR
DATA
G.P. I/O
0
1
0
Special peripheral
ADDR
DATA
DATA
0
1
1
Special expanded wide
ADDR
DATA
DATA
1
0
0
Normal single chip
G.P. I/O
G.P. I/O
G.P. I/O
1
0
1
Normal expanded narrow
ADDR
DATA
G.P. I/O
1
1
0
Reserved
(forced to peripheral)
—
—
—
1
1
1
Normal expanded wide
ADDR
DATA
DATA
ENG3640 Fall 2012
68
Operating Modes




Normal Single Chip: No external buses. The MCU operates as a
stand-alone device and all program and data resources are on
chip.
Special Single-Chip Mode: This mode can be used to force the
MCU to active Background Debug Mode (BDM).
Normal Expanded Wide Mode: The 16-bit external address bus
uses port A for the high byte and port B for the low byte. The
16-bit external data bus uses port C for the high byte and port D
for the low byte (Factory Configured!)
Special Peripheral Mode: The CPU is not active in this mode.
An external master can control on-chip peripherals for testing
purposes.
ENG3640 Fall 2012
69
Normal Drive Strength Output Characteristics
Parameter
68HC912B32 Value
VOH,min (no load, IOH < 10m A)
VDD-0.2V
VOH,min (IOH = -0.8mA)
VDD-0.8V
VOL,max (no-load, IOL < 10m A)
0.2V
VOL,max (IOL = 1.6mA)
0.4V
R p(on), max
1000W
R n(on), max
250W
ENG3640 Fall 2012
70
Connecting an LED to an Output Port
Step 1. Determine RL such that IL is at least 5mA.

1.
2.
3.
4.
IL flows through RL the LED, and through R n(on) . R p(on) is
infinite because PMOS is off.
RL = (VDD - IF.R n(on) – VF) / IF
= (5V – 5mA.250W – 2V) / 5mA = 150
The closest 1% standard resistor value is 147
Step 2. Determine if 147 is large enough to limit the
current to less than 25mA under all conditions and
assume VDD,max = +5V (+-10%) = 5.5V

1.
2.
Conservative approach: set R n(on), min =0 and V F,min = 0
Practical approach: use 50% of the maximum values for
R n(on), min and V F,min
ENG3640 Fall 2012
71
Connecting an LED to an Output Port

Conservative Approach:
IF,max = (VDD,max) / (RL,min)
= 5.5V/145.5 = 37.8mA

This exceed the max current specs (25mA)
which means that the MCU could be
destroyed.
Another IC such as a 74AC240 would have to
be used to drive the LED

ENG3640 Fall 2012
72
Connecting an LED to an Output Port

Practical Estimation (Cost of adding an extra IC can
be prohibitive for some cost-sensitive designs!)
IF,max = (VDD,max – VF,min)) / (RL,min + R n(on).min)
= (5.5V-1V)/(145.5 ohm – 125 ohm) =
16.64mA

This is well within the 25mA limit of the
output and the maximum current limit of the
LED.
ENG3640 Fall 2012
73
PORTJ: Initialization
The software initialization sets bits in PUPEJ register to enable
pull-up or pull-down.

For each Port J pin that is enabled for pull-up or pull-down, the
corresponding bit in the PUPSJ register determines if it is pull-up
(1) or pull-down (0).
// MC68HC812A4
// Port J bit 1 is connected to a switch to +5, using internal pull-down
// port J bit 0 is connected to a switch to 0, using internal pull-up
Void Initialization(void){
DDRJ &= 0xFC;
// PJ1 PJ0 inputs
KPOLJ |= 0x03;
// flags set on the rise of PJ1 and PJ0
KWIEJ &= 0xFC;
// disarm PJ1, PJ0
KWIFJ = 0x03;
// clear flags
PUPSJ = (PUPSJ&0xFC)|0x01; // pull-down on PJ1, pull-up on PJ0
PULEJ |= 0x03;}
// enable pull-up and pull-down

ENG3640 Fall 2012
74
Hardware Debouncing: Flip Flop

R
An SR latch can be used to debounce a switch
+5V
S
Q
+5V
ENG3640 Fall 2012
75
Software Flowcharts for debouncing
Wait for press
Wait for release
Switch
Switch
not pressed
pressed
not pressed
pressed
Wait 10 ms
Wait 10 ms
RTS
RTS
Polling vs Interrupt Driven?
ENG3640 Fall 2012
76
Using Hardware Decoding Chips
 8x8 matrix keyboard with 64-keys, 74HC138 (3-to-8 Decoder), and
74HC151 (multiplexer).
 PC0, PC1, PC2 are used to send values to rows
 The MCU will scan the columns one by one via PC3, PC4, PC5
ENG3640 Fall 2012
77
Software Debouncing
To debounce a switch we can use several approaches:
Approach #1:


1.
2.
A software time delay is used that provides a time delay (usually 1020 ms) longer than the duration of the switch bouncing action.
So if switch goes low, wait for longer than 10ms or 20ms and then
test for the switch still being low.
Approach #2:

1.
2.
3.
Initialize a counter with a value of 10 and after the first logic low
level is detected, poll the switch every millisecond.
If the switch output is low, decrement the counter. If the switch
output is high increment the counter.
When the counter reaches zero, we know the switch output has
been low for at least 10 ms. But if the counter reaches 20, we know
that the switch has been open for at least 10 ms.
ENG3640 Fall 2012
78
Keyboard Decoding



Some keyboards have an extra common terminal. So if a key is
pressed, a short circuit occurs between the common and the
keys row and column line.
When PC0 is driven low and one key is pressed, one of the row
inputs and one of the column inputs will be low.
The keyboard software driver routine checks which inputs are
low and determine the key code.
ENG3640 Fall 2012
79
Keypad Decoding
1. To detect a short circuit, the MCU
drives one of the output lines low
2. Checks the corresponding input
line.
3. If it is low, the key was pressed.
4. If the key was not pressed, the
open circuit allows the resistor to
pull up the input line to logic high.
5. The combination of both low logic
column and row will identify the
pressed key.
6. For example, to check key code 5
the MCU drives PC1 (terminal J)
low and checks the input at PC5
(terminal E) .
ENG3640 Fall 2012
80
Keypad Interfacing
Understand
Keypad Interface
*(Note: 68HC12812A4 has
internal pull-up on all pins;
not all are shown here)
To identify the key code,
the MCU scans each
contact in sequence.
ENG3640 Fall 2012
81
Keypad Decoding: 4x4 keypad
MCU
sends low
signal to
these lines
MCU
checks
these lines
ENG3640 Fall 2012
82