I/O Ports

advertisement
Microprocessors and Microcontrollers
I/O Ports
DC Electrical Characteristics
EE3954
by
Maarten Uijt de Haag, Tim Bambeck
I/O Part I.1
PORTB
PORTA
PORTE
PORTD
PORTC
PORTC
PORTD
PORTD
Multiplexing of I/O Pins
Pin Diagram from Datasheet
I/O Part I.2
I/O Part I.3
Typical I/O Port
I/O Part I.4
Typical I/O Port
Buffers
I/O Part I.5
Typical I/O Port
Flip-Flops
I/O Part I.6
Typical I/O Port
Logic Gates
I/O Part I.7
Typical I/O Port
MOS Transistors
(Output Drivers)
I/O Part I.8
Overview
DC Electrical Characteristics
I/O Pin
Voltage
•  Levels:
– 
– 
– 
– 
TTL
Schmitt Trigger
CMOS
Open drain
Current
•  Levels:
– 
– 
– 
– 
Sink current
Source current
Fan-in
Fan-out
I/O Part I.9
Input/Output Ports
Most PORT pins can be defined as either input or output
via the TRIS registers.
PORTA, PORTB, PORTC,
PORTD, PORTE
TRISA, TRISB, TRISC,
TRISD, TRISE
To read/write data from/to
inputs/outputs
Data Direction Registers
Determines if a pin is an input
(“1”) or an output (“0”)
I/O Part I.10
Special Function Registers
PORTs
are in
Bank 0
TRISs
are in
Bank 1
STATUS
Bank 0: RP1 = 0; RP0 = 0
Bank 1: RP1 = 0; RP0 = 1
I/O Part I.11
I/O Ports
PORTA equ
TRISA equ
org
nop
0x05
0x05
Example – Part 1
0x000
; Select Bank 1 to access the data direction registers (TRIS)
bcf
STATUS, RP1
bsf
STATUS, RP0
; Set pins 1, 2, 4, and 7 as input
; Set pins 0, 3, 5, and 6 as output
movlw B’1001 0110’
movwf TRISA
; Select Bank 0 to access the PORT itself
bcf
STATUS, RP0
NOTE: 1 looks like an ‘I’ for input
0 looks like an ‘O’ for output
I/O Part I.12
I/O Ports
Example – Part 2
; Select Bank 0 to access the PORT itself
bcf
STATUS, RP0
; Check the input on 2 and call the subroutine SUB_1 if its is ‘1’
btfsc PORTA, 2
call
SUB_1
…
…
…
; Set the output on pin 5 to “0”
bcf
PORTA, 5
…
…
; Set the output on pin 0 to “1”
bsf
PORTA, 0
NOTE: 1 looks like an ‘I’ for input; 0 looks like an ‘O’ for output
I/O Part I.13
I/O Port
Equivalent Statements
PORTA is at Data Memory address 0x05 and
TRISA is at Data Memory address 0x85
7 least significant bits of 0x05
PORTA equ
TRISA equ
0x05
0x05
00 0000101 -> 0x05
01 0000101 -> 0x85
I/O Part I.14
Typical I/O Port Pin
PORT Writes:
movwf PORTX
movwf TRISX
I/O Part I.15
Typical I/O Port Pin
PORT Reads:
movf PORTX,W
btfss PORTX,2
I/O Part I.16
Typical I/O Port
I/O Part I.17
Transistor p-channel:
p-channel transistor
“1”
=
Off
“0”
=
On
Source
Gate
Drain
P
I/O Part I.18
Transistor n-channel:
n-channel transistor
“1”
=
On
“0”
=
Off
Drain
Gate
N
Source
I/O Part I.19
Totem Pole Configuration
VDD
S
V1
V1 = VDD=‘1’;
V2 = VDD=‘1’
VDD
P
G
D
V1 = VSS=‘0’;
V2 = VSS=‘0’
VDD
Off
I/O Pin
On
“0” (VSS)
“1” (VDD)
D
V2
G
On
N
Off
S
VSS
VSS
VSS
I/O Part I.20
Interpretation Example
Writing to TRIS - Output
“0”
“0”
“1”
Here:
VSS = “0”
VDD = “1”
I/O Part I.21
Interpretation Example
Writing to a PORT Pin - Output
“0”
“1”
“1”
“0”
“1”
“0”
“0”
“1”
“1”
“1”
Here:
VSS = “0”
VDD = “1”
I/O Part I.22
Schmitt Trigger
Schmitt Trigger buffer:
Regular input buffer:
Vin
Vin
Vin
Vout
Switching
threshold
Vin
Vout
Positive-going
Threshold (4v)
Negative-going
Threshold (1v)
t
t
Vout
Vout
False switching occurs
t
Jitter free operation I/O Part I.23t
I/O Port
DC Electrical Characteristics
Output:
Input:
(Minimum high-level output voltage)
VOH
VOL
(Minimum high-level input voltage)
VIH
VIL
(Maximum low-level input voltage)
(Maximum low-level output voltage)
Increasing voltage
See, for example, Datasheet Page 155/156 (157/158 in PDF)
I/O Part I.24
I/O Port
Noise Margin
5.0 v ->
VDD
Guaranteed
HIGH-level output
4.3 v (min) ->
2.0 v ->
VOH
VIH
Recognizable
HIGH-level output
Noise Margin
Uncertain region (neither HIGH nor LOW)
0.75v ->
0.6v (max) ->
0v ->
VIL
VOL
VSS = 0
Noise Margin
Recognizable
LOW-level output
Guaranteed
LOW-level output
I/O Part I.25
TTL Voltage Level
PIC16F877
•  VOL = 0.6V max
•  VOH = (VDD- 0.7) V min = 4.3V min
( values from page 156 in Data Sheets )
•  VIL = VSS -> 0.15 VDD = 0V -> 0.75V
•  VIH = 2.0 -> VDD = 2.0V –> 5.0V
(values from page 155 in Data Sheets )
I/O Part I.26
I/O Ports
Sink and Source Currents
Sink current is the current going into the microcontroller
Microcontroller
I
Source current is the current coming out of the microcontroller
Microcontroller
I
See, for example, Datasheet Page 149 (151 in PDF)
I/O Part I.27
I/O Ports
Sink and Source Currents – PIC16F877
Any pin = 25 mA. Port A=6 pins, B=8 pins, E=3 pins for a total of 17 pins.
We would expect: 17 pins * 25 mA = 425 mA.
( Note: combined Port A,B,E is 200 mA max.)
I/O Part I.28
I/O Ports
Sink and Source Currents – PIC16F877
RD1
If RD1 = “0” = VOL = 0V:
No voltage differential between (A) and
(B), thus LED is OFF.
(A)
R
If RD1 = “1” = VOH = 5V:
5V
PIC
16F877
R
(B)
1.4V
NOTE: Voltage drop over the diode is ~1.4V
Ohm’s Law: V = I*R
Voltage over resistor:
5 – 1.4 = 3.6V
I = V/R = 3.6/R < 25mA
Thus,
R > 3.6/25·10-3 = 144Ω
PR= 3.6*25·10-3 = 0.09W
I/O Part I.29
I/O Ports
Sink and Source Currents – PIC16F877
With VOH and VOL
RD1
VOH = 4.3V & VOL = 0.6V
IOH = 25mA & IOL = 25mA
(A)
R
PIC
16F877
If RD1 = “0” = VOL = 0.6V:
Not enough voltage differential between
(A) and (B), thus LED is OFF.
If RD1 = “1” = VOH = 4.3V:
(B)
4.3V
R
1.4V
NOTE: Voltage drop over the diode is ~1.4V
Ohm’s Law: V = I *
R
Voltage over resistor:
4.3 – 1.4 = 2.9V
I = V/R = 2.9/R < 25mA
Thus,
R > 2.9/25·10-3 = 116Ω
I/O Part I.30
Diodes
I
I
Current only flows
through the diode in
one direction
VDD
Works:
VSS
Does not
Work:
VSS
VDD
I/O Part I.31
Laboratory #2
7-segment display
RD7
Microcontroller
RD6 RD5 RD4 RD3 RD2 RD1
RD0
I/O Part I.32
Fan-out
Fan-out
The number of inputs (in the form of devices and gates) that can be driven
from a single device or gate output (or pin) without damaging the IC
Low
I1
I2
I
I3
High
I1
I2
I3
I
I/O Part I.33
Fan-out
Example
RD1
VOH = 5 V
470
470 470 470 470
PIC
16F877
Vdiode = 1.4V
Is this going to work???
Current through one of the LEDs = (5-1.4)/470 = 7.66mA
So, the total current that must be sourced by the pin is:
5*7.66mA = 38.3mA
So, 38.3mA > 25mA and therefore this is not going to work!!!
I/O Part I.34
Interpretation Example
Writing to TRIS - Input
“1”
“1”
“0”
“1”
“open”
“open”
“0”
Here:
VSS = “0”
VDD = “1”
I/O Part I.35
I/O Ports
High Impedance
I/O Part I.36
I/O Ports
High Impedance
V2 = VDD
I/O Pin –
RA4 (PORTA Pin 4)
V2
N
I/O Pin
= VSS= “0”
V2 = VSS
I/O Pin
= ∞Ω
NMOS
VSS
Open Drain Output
On
VSS
Off
VSS
It looks as if there is a very high
impedance between the pin and ground
I/O Part I.37
I/O Ports
Pull-Up Resistor
VDD
VDD
VDD
5V
0V
On
V2
Off
N
VSS
VSS
V2 = VDD
VSS
V2 = VSS
I/O Part I.38
I/O Ports
PIC16F877
•  See Datasheet Table 1-2 Page 8 & 9
(PDF pages: 10 & 11)
• See Datasheet Pages 30 through 36 For:
(PDF pages: 32-38)
PORTA, B, C, D, E Functions.
Registers Associated with Each Port.
I/O Part I.39
PORT A
From Datasheet
PINS 0,1,2, and 3 are also used
as a 10-bit Analog-to-Digital Converter (ADC)
(Sections 21,22,23, and 24 of RM)
(Section 11 of DS)
SFR ADCON1 (see page 29 of DS) must be used to
configure PORTA as either a regular PORT or an ADC.
From PIC16F877 Datasheet
I/O Part I.40
PORT A - Configuration
ADCON1 @ 0x1F in Bank 1
RED Circled is
POR Condition.
Blue Circled is
Example on
Next page.
I/O Part I.41
PORT A
Configure as all digital I/O
BCF
BCF
CLRF
STATUS, RP0
STATUS, RP1
PORTA
BSF
MOVLW
MOVWF
MOVLW
STATUS, RP0
B’0000 0110’
ADCON1
B’1100 1111’
MOVWF
TRISA
;
; Bank0
; Initialize PORTA by
; clearing output
; data latches
; Select Bank 1
; Configure all pins
; as digital inputs
; Value used to
; initialize data
; direction
; Set RA<3:0> as inputs
; RA<5:4> as outputs
; TRISA<7:6>are always
; read as ’0’.
I/O Part I.42
PORT A
From Datasheet
I/O Part I.43
PORT B
I/O Part I.44
PORTB
I/O Part I.45
Download