Sie sind auf Seite 1von 12

Spring 2014 Microcontroller Lab# 5

ASYNCHRONOUS SERAL !O AN" N#ERRU$#S


O%&EC#'E
The purpose of this experiment is getting familiar with SC module in 68HC11E9. This will be
accomplished by implementing a drier with interrupt and polling based send and receie subroutines
for the SC module which complies with RS2(2 standard. Hardware setup of the serial communication
will also be studied.
$RELMNARY )OR* !"eadline# $th of %ay &'1( %idnight)
Rea+ t,ro-g, ASYNCHRONOUS SERAL N#ER.ACE /ection 0Co11-nication Con2ig-ration3
to obtain bac4gro-n+ in2or1ation on SC 1o+-le5
1. *rite a subroutine to initiali+e the SC module, your subroutine must configure the SC module
as the following#
1 start bit,
8 data bits,
1 stop bit,
interrupts disabled,
-o wa.e up,
/rea. generator off,
/01" rate of 9612,
Transmitter enabled.
&. 3ead through $rote-/ Set-p section, then Connect the 453T016 TE3%5-16 pins as the
following#
'irt-al #er1inal MC67HC11E8
3x" Tx"
Tx" 3x"
Connect the 4irtual terminal pins 3T7 and CT7 to each other.
8. 3ead through 7ection SC tran/1itter to obtain bac.ground information on SC transmitter.
(. *rite a subroutine Sen+C,ar to send the contents of 1ccumulator 1 to the irtual terminal.
2. *rite Sen+Str subroutine that uses Sen+C,ar to send a string to the terminal9 the function
stops sending characters when it reads the first 9 character.
6. 3ead through 7ection 7C5 receier to obtain bac.ground information on SC receier.
$. Change the initiali+ation subroutine from !1) aboe to enable the receier. Then write
Rec:C,ar subroutine to read the user input from the .eyboard and return it in 1ccumulator 1.
8. *rite Rec:Str subroutine that will read the user input string from .eyboard and sae the
receied in memory when the user presses the Enter .ey. "o not forget to append the 9
character to the string saed in memory.
9. *rite an Ec,oC,ar subroutine that uses the Rec:C,ar and Sen+C,ar to echo !display) the
user input on the screen.
1'. *rite an Ec,oStr subroutine by modifying the Rec:Str subroutine to ta.e adantage of the
Ec,oC,ar subroutine from !9).
11. 0$rogra1 1; $olling3 *rite a <elco1e subroutine, using polling approach, that uses Rec:Str
and Sen+Str to as. for the user name and then displays a welcoming message. :or
example#
> What is your name ? (program output)
Joffrey (user input)
Welcome Joffrey (program output)
1&. 7imulate the code you wrote in !11) using ;roteus.
18. 3ead through section nterr-pt/ to obtain bac.ground about 5nterrupts and their
synchroni+ation.
1(. *rite an initiali+ing subroutine nten that enables the interrupt ectors.
12. *rite an 5nterrupt 7erice 3outine !573) /rRec to handle the reception of a character. *rite
another 5nterrupt 7erice 3outine /r#r that handles the completion of transmitting a
character.
16. 0$rogra1 2; nterr-pt3 0sing on the aboe 573s in !12) rewrite the <elco1e subroutine from
!11) using interrupts, instead of relying on polling techni<ue.
1$. 7imulate the code you wrote in !16) using ;roteus.
18. 3ead through %-22alo 7ection to get familiar with the /0::16= management of 5nterrupt
ectors, and thin. about how you would do this in the lab.
$re=)or4 S-b1i//ion;
>S-b1it one $". 2ile incl-+ing $rogra1/ t,at >o- <rote in 0113 an+ 0163? an+ /creen
/,ot/ o2 /i1-lation/5
Note; A++ clear co11ent/ 2or eac, progra15
"ea+line ; @t, o2 Ma> 2014
ASYNCHRONOUS SERAL N#ER.ACE
Co11-nication Con2ig-ration
7erial communication is the process of sending one bit at a time oer a communication channel.
Compared to parallel communication where seeral bits are sent at once, serials communication
saes wiring costs especially for long distances. The Universal Asynchronous Receiver/Transmitter
0UAR#3 is the hardware port that implements the serial data transmission. This is called the
Asynchronous Communications Interface Adapter 0ACA3 or Serial Communication Interface 0SC3 on
68HC11 %C0. The module is implements a receier and a sender that complies with the RS2(2
protocol.
RS2(2 is a standard that defines a simple asynchronous communication protocol. 5t specifies#
Electrical signal characteristics such as oltage leels, signaling rate, timing and slew?rate
of signals, oltage withstand leel, short?circuit behaior, and maximum load capacitance9
5nterface mechanical characteristics, pluggable connectors and pin identification,
:unctions of each circuit module in the interface connector,
7tandard sub?modules of interface circuits for selected telecommunication applications.
To comply with specific physical channel and receiing e<uipment properties, the digital signal has to
be transported by an amplitude and time discrete signal that is optimally tuned. The waeform pattern
of oltage or current used to represent the 1s and 's of a digital signal on a transmission lin. is called
line coding.
RS2(2 applies oltages in the range ?12 to @12 4 to represent the high and low logic and the special
se<uence control bits. These different oltage leels re<uire interface circuits that conert them to
normal oltage leels. MAA2(2 chip can be used for this purpose. This is already placed on the E4/0
and the ;C boards, communicating using a serial lin.. :igure 2.1 shows the connection configuration
defined between the E4/0 and the ;C. 5t is called full duplex as it allows the two parts to receie and
send data at the same time.

:igure 2.1. :ull duplex serial channel
Eenthough RS2(2 standard has many pins and uses the "%25 !&2 pin) interface as the default,
"%8!EA=5@4 !9 pin) interface is used widely for its smaller si+e !lower cost) since it is sufficient when
operating in asynchronous serial mode. :igure 2.& shows the EA=5@4 interface used in the lab and
describes the function of the nine pins.
:igure 2.&. "%8!EA=5@4 male interface !used in the lab)
1s the communication is asynchronous one, extra bits must be sent to group the data bits and to
define the end and start of the communication. Haing more than one configuration for the way that
the data can be sent and receied, the transmitter and receier must agree on the format of the data
that is being exchanged before the communication starts. 1 AframeA pac.s a group of bits to be
transmitted together. Each frame contains special bits to define the start and end, and other optional
bits to help receiers detect any errors in transmitted data due to noise and other factors. :igure 2.8
depicts the data frame contents, the ninth !T8) bit and the ;arity bit are optional. 7tart and 7top bits
identify the start and the end of the data frame as their names imply.
7top ;arity T8 $ 6 2 ( 8 & 1 ' 7tart
1 '
:igure 2.8. "ata :rame
The speed of data transmission must be defined before the communication starts. %ismatches in the
receier and transmitter cloc.s will result in loss of data in the receier buffer. The speed of
communication is measured in /aud 3ate. The programmer must be sure that both end points are
configured to apply the same options.
68HC11 offers a number of control registers to configure 7C5 settings. The critical registers are
described below.
:igure 2.(. Control 3egister 1 !7CC31)
38 ? 3eceie "ata /it 8# 5f % bit is set, 38 stores the ninth bit in the receie data character.
T8 ? Transmit "ata /it 8# 5f % bit is set, T8 stores the ninth bit in the transmit data
character.
/it 2 ? 0nimplemented# 1lways reads '
% ? %ode /it !select character format)#
' B 7tart bit, 8 data bits, 1 stop bit
1 B 7tart bit, 9 data bits, 1 stop bit
*1CE ? *a.eup by 1ddress %ar.D5dle /it
' B *a.eup by 5"6E line recognition
1 B *a.eup by address mar. !most significant data bit set)
/its E&#'F G 0nimplemented# 1lways read '
:igure 2.2. Control 3egister & !7CC3&)
T5E ? Transmit 5nterrupt Enable /it
' B T"3E interrupts disabled
1 B 7C5 interrupt re<uested when T"3E status flag is set
TC5E ? Transmit Complete 5nterrupt Enable /it
' B TC interrupts disabled
1 B 7C5 interrupt re<uested when TC status flag is set
35E ? 3eceier 5nterrupt Enable /it
' B 3"3: and =3 interrupts disabled
1 B 7C5 interrupt re<uested when 3"3: flag or the =3 status flag is set
565E ? 5dle?6ine 5nterrupt Enable /it
' B 5"6E interrupts disabled
1 B 7C5 interrupt re<uested when 5"6E status flag is set
TE ? Transmitter Enable /it# *hen TE goes from ' to 1, one unit of idle character time
!logic 1) is <ueued as a preamble.
' B Transmitter disabled
1 B Transmitter enabled
3E ? 3eceier Enable /it
' B 3eceier disabled
1 B 3eceier enabled
3*0 ? 3eceier *a.eup Control /it
' B -ormal 7C5 receier
1 B *a.eup enabled and receier interrupts inhibited
7/C ? 7end /rea.# 1t least one character time of brea. is <ueued and sent each time 7/C
is written to 1. 1s long as the 7/C bit is set, brea. characters are <ueued and sent. %ore
than one brea. may be sent if the transmitter is idle at the time the 7/C bit is toggled on
and off, as the baud rate cloc. edge could occur between writing the 1 and writing the ' to
7/C.
' B /rea. generator off
1 B /rea. codes generated

:igure 2.6. /10" register
TC63 ? Clear /aud 3ate Counter /it !Test)
7C;E&#'F ? 7C5 /aud 3ate ;rescaler 7elect /its
1CC/ ? 7C5 /aud 3ate Cloc. Chec. /it !Test)
SC #ran/1itter
:igure 2.$ depicts the schematic diagram of the SC transmitter implementation. -otice the distribution
of the SCCR1, SCCR2 and %AU" register bits in the figure.
The transmission cycle starts by waiting for the transmitter module to be freed. The status of the
transmitter can be chec.ed by reading the #C flag in the 7tatus 3egister !7C73). =nce the #C flag
goes high, this means that any preious transmission operation is finished and the transmitter is free
to send another frame of data. The process of waiting for the transmitter to be freed by chec.ing its
status bits continuously is called polling.
Then we write the data to be sent on the "ata 3egister !SC"R), with address H1'&:, which
represents a buffer for the hidden shift register. =nce the data is written to the shift register, the bits
start to be transmitted, starting by the 67/ bit, to the pin buffer using a cloc. speed controlled by the
%AU" register. *hile the transmitter shifts and sends out the bits, the #C flag in the 7tatus 3egister
!SCSR) stays ' to indicate that the transmitter is busy. SCSR details are shown in :igure 2.8.
:igure 2.$. 7C5 transmitter schematic diagram
:igure 2.8. 7tatus 3egister !7C73)
T"3E ? Transmit "ata 3egister Empty :lag# This flag is set when 7C"3 is empty. Clear
the T"3E flag by reading 7C73 with T"3E set and then writing to 7C"3.
' B 7C"3 busy
1 B 7C"3 empty
TC ? Transmit Complete :lag# This flag is set when the transmitter is idle !no data,
preamble, or brea. transmission in progress). Clear the TC flag by reading 7C73 with TC
set and then writing to 7C"3.
' B Transmitter busy
1 B Transmitter idle
3"3: ? 3eceie "ata 3egister :ull :lag# This flag is set if a receied character is ready to
be read from 7C"3. Clear the 3"3: flag by reading 7C73 with 3"3: set and then
reading 7C"3.
' B 7C"3 empty
1 B 7C"3 full
To achiee maximum transmission throughput you can write the next data frame directly to the 7C"3
after it is empty by chec.ing the T"3E flag.
SC Recei:er
:igure 2.9 shows the schematic diagram of the SC receier implementation. The reception cycle
starts by waiting for the receier module to be filled by a full frame of data. The status of the receier
can be chec.ed by reading the R"R. flag in the SCSR. =nce the R"R. flag goes high, this means
that a complete data frame has been receied and the SC"R is full. 1gain we can use the polling
techni<ue to .now if we receied any new data, by chec.ing the receier status bits continuously.
=nce we hae the data, any load operation is sufficient to read the SC"R contents and to clear the
R"R. flag.
nterr-pt/
0p to this point the polling techni<ue has been used to send and receie data using the SC. The
polling techni<ue re<uires continuous chec.ing of the status, and therefore wastes cycles. 5n addition,
it adds challenges to software design especially when the application response latency is an important
factor or when there are mission critical applications with real time re<uirements.
5nterrupt is a hardware based mechanism that forces the processor to execute a piece of code located
at special address, if a deice status meets specific conditions. This piece of code is called 5nterrupt
7erice 3outine !SR). 5n 68HC11 architecture, once an interrupt occurs, it loads an address of one of
the 573s aailable to the ;C register, depending on the type of the deice that re<uested the interrupt.
The addresses of the different 573s are saed in special table, called interrupt ector table, which is
located at the last part of the 6( C/ memory map. Iou are familiar with the first interrupt ector, the
3eset 4ector, which has the highest priority and is located at 9...E=9..... The priority of different
interrupts, when more than one interrupt re<uest occurr at the same time, is decided by hardware. The
decision is made based on their order in memory except for the software interrupts, which hae the
lowest priority.

:igure 2.9. 7C5 receier schematic diagram
68HC11 architecture allows the programmer to control all the interrupts by using SE and CL
instructions. This ma.es it possible to define pieces of code that are not interruptible !preemptie).
Those pieces of code are called critical sections.
The SC module has one interrupt ector located at 9.."6=9.."@5 The contents of this ector will be
loaded to ;C register if any of these eents happen#
3eceie data register full, R"R. B 1
Transmit data register empty, #"RE B 1
Transmit complete, #C B 1
1s many re<uests share the same interrupt ector, the SR executed on an 7C5 interrupt must chec.
those flags to determine the status of the SC module. 5n case there are more than one cause for the
interrupt, the 573 should decide which one has higher priority than the others.
To initiali+e the SC module to ta.e adantage of the interrupts, return to the SCCR2 and ta.e a loo.
at the different bits that control the receier and transmitter interrupt capabilities. RE arms
1
the SC
receier, so it can interrupt once data is receied. #CE is another bit that arms the SC transmitter to
interrupt once the data has been sent. This interrupt is ery useful in case we want to send a group of
data frames. /ear in mind that you hae to disarm the SC transmitter once you finished sending the
data frames. =therwise the last sent frame will re<uest an interrupt and there is no extra data to be
written to clear the #C flag, which causes it to re<uest interrupts indefinitely.
The structure of your code can follow many paradigms to wor. with interrupts9 below is an example#
-----------------------------------------------------------------------------------
ORG $FFD6
FDB SC!SR
ORG $"###
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
main% initiali&e the stac' (ointer )B*FF+,O ta'es care
initiali&e the SC mo-ule
.- /na0le transmitter an- recei1er
"- Define the communication settin2s as B+*D3 -ata frame characteristics
4- +rm the transmitter an- the recei1er5
C, )/na0le the interru(ts in the (rocessor
Do any other tas's as'e- 0y the user
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
SC!SR%
S/ )Disa0le the 2eneral interru(ts fla23 6hich -oes not allo6 neste- SRs
to 0e e7ecute-5

f a -ata frame is rece1e- then
ser1e the recei1er 0y callin2 rec1
else
if a -ata frame has 0een sent then
ser1e the transmitter 0y callin2 sen-
C, )/na0le the 2eneral interru(ts fla2
R8 )R8 is -ifferent from R8S3 in SR you shoul- use R85
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
rec1%
9*S: the re2isters you 6ill use in this su0routine ;to (reser1e them<
Clear the fla2 that re=ueste- the interru(t
Ser1e the interru(t
9*,, the re2isters you (ushe- in this su0routine
R8S
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
sen-%
9*S: the re2isters you 6ill use in this su0routine ;to (reser1e them<
Clear the fla2 that re=ueste- the interru(t
Ser1e the interru(t
9*,, the re2isters you (ushe- in this su0routine
R8S
---------------------------------------------------------------------------------
1
arm and disarm are used to mean granting the deice ability to re<uest interrupts and ta.ing away that ability.
%U..ALO nterr-pt Manage1ent
7ince the interrupt ector table is implemented in ;3=%, it is not possible to change the alues of
those ectors in the E4/0. Howeer, /0::16= points these ectors to another table that resides in
31% memory space. :or example, 7C5 interrupt ector is filled with the address 900C4. 1ddresses
900C4=900C6 are resered to be filled by a Jump instruction that points to the user SR. 5n this way,
/0::16= allows the user to place the SR code to anywhere in the user accessible memory without
changing the contents of the interrupt ector table.
$rote-/ Set-p
0sing the 4irtual Terminal you can find under 4irtual 5nstruments %ode, ;roteus offers a simplified
method for establishing a serial lin.. 1 full duplex configuration is depicted in :igure 2.1'. The irtual
Terminal accepts normal logic leels, so that there is no need to introduce interface circuits between
transmitters and receiers.
:igure 2.1'. 4irtual Terminal in full duplex mode
To configure the serial communication parameters in the irtual terminal, right clic. on the irtual
terminal symbol and choose properties. :igure 2.11 shows the properties dialog of the 4irtual
Terminal. /e sure to hae hae a consistent configuration at both ends of the serial lin. in order to
aoid communication problems.
EA$ERMEN#AL )OR*
1 %odify the <elco1e subroutine from $rogra1 1 which uses the polling mechanism, to run
under /0::16=. 3un your program and demonstrate your results to the lab instructor.
2 %odify the <elco1e subroutine that uses the interrupt mechanism, from $rogra1 2 to run
under /0::16=. 3un your program and demonstrate your results to the lab instructor.
Re2erence/
1 %68HC11E :amily "ata 7heet
& Embedded %icrocomputer 7ystems, 3eal Time interfacing. 7econd edition. Konathan *.
4alano.

:igure 2.11. 4irtual Terminal properties dialog