Uploaded by INNERSLOTH OFFICIAL 9

ece3430 lecture 05 (1)

advertisement
ECE 3430 – Introduction to Microcomputer Systems
University of Colorado at Colorado Springs
Lecture #5
Agenda Today
1.
2.
3.
4.
5.
More on Addressing Modes
MSP430 I/O
LaunchPad I/O
MSP430 Memory Map
Lab Introduction
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
1
Addressing Modes Summary
As we discussed, there are only 4 fundamental addressing modes plus a few alternate
uses of the original 4. In summary, this yields what you can consider 7 addressing modes:
1. Register Direct (*)
– Single cycle
– Ex: mov.w R10, R11
2. Indexed (*)
– Table/array processing
– Ex: mov.w 2(R5), 6(R6)
3. Symbolic
[really indexed addressing mode]
– PC-relative
– Ex: mov.w 1088h, 108Ah
 Can use “labels” here for easier code read
4. Absolute
[really indexed addressing mode]
– Directly access any memory location.
– Ex: mov.w &1088h, &108Ah  Can use “labels” here for easier code read
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
2
Addressing Modes Summary
5. Register Indirect (*)
– Access memory with pointers.
– Ex: mov.w @R10, 0(R11)
6. Indirect Autoincrement (*)
– Table/array processing.
– Ex: mov.w @R10+, 0(R11)
7. Immediate (really indirect autoincrement addressing mode)
– Unrestricted constant values.
– Ex: mov.w #45h, &1080h
 Can use “labels” here for easier code read
(*) = Native Addressing Mode
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
3
Addressing Modes Summary
Labels (discussed in detail later) can be used to refer to commonlyused constants. In a sense, they can be thought of as variable
names. In the following example, I have used the variables
myVar1 and myVar2 that supposedly have already been
defined to live somewhere in memory:
Symbolic:
– Ex: mov.w myVar1, myVar2
Absolute:
– Ex: mov.w &myVar1, &myVar2
Immediate:
– Ex: mov.w #45h, &myVar1
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
4
Atomic Operation
A single CPU instruction is “atomic”. This is a word used in
computer science to mean that nothing can interrupt this
instruction (except a power failure of course). Anything else that
wants to happen must wait for the current instruction to
complete once it is started.
This is a fundamental rule in all CPU architectures!
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
5
Special Immediate Values
As we have seen, any constant value can be written into any
memory location or CPU register using the immediate
addressing mode.
The immediate value cannot exceed the precision of the machine.
For the MSP430, the largest unsigned value allowed is 65535
(16-bit limit).
You can use signed values too. In which case, your range is
limited to -32768 to +32767.
Immediate values -1, 0, 1, 2, 4, 8 are generated in hardware by the
constant generators (R2 and R3). The assembler does this for
you behind the scenes. Doing so allows code memory to be
compressed (less operands) – an estimated 30%.
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
6
MSP430 Input and Output (I/O)
MSP430 Ports •
•
•
•
•
There are many varieties of the MSP430—each of which can have different I/O
definitions.
Our version of the MSP430 has 2, 8-bit I/O registers. Other versions may have
multiple I/O registers. These I/O registers are called ports.
Ports are data latches that exist outside of the CPU core (but still inside the
microcontroller). Each port is assigned a designated memory location. When a load
or a store operation targets the address belonging to a port register, the data
is read from or written to the data bus—reading input pins and/or adjusting the state
of output pins.
Directionality of bi-direction I/O pins must be specified in a data direction
control register.
I/O pins can have multiple purposes (see text book page 22 and data sheets).
You may have to specify the purpose of the pin too either directly or indirectly.
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
7
MSP430 Input and Output (I/O)
Therefore, gathering data from an external device or writing data
to an external device is accomplished by loading from and storing
to dedicated memory locations. For this reason, the MSP430 uC is
referred to as a memory-mapped architecture.
We are using the MSP430G2 in a 20-pin DIP package.
• All of port 1 and port 2 is brought out to external pins on the
MSP430 (G2553) package.
• If more I/O pins are required, various forms of I/O expansion logic
can be added (such as shift registers or I2C-based I/O
expanders).
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
8
LaunchPad
LaunchPad -
This is the target board that the MSP430 is loaded on. The
target board is a printed circuit board (PCB) that contains all of the
necessary peripheral circuitry (crystal oscillator [clock], power
regulators, USB interface, etc.)
The LaunchPad provides:
1) Connectors for I/O and USB.
2) Power comes across the USB cable.
3) Crystal oscillator [XTAL].
4) Voltage Regulators.
5) USB endpoint and emulation logic (used to interface to a
host computer for programming and debugging).
6) A few push buttons (one is the reset button).
7) A few LEDs.
See online TI pages for more information:
www.ti.com/launchpadwiki
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
9
MSP430 Memory Map
• The MSP430 is a memory-mapped architecture—all I/O is done
as though you are interacting with a memory device.
• The MSP430 internal Flash (which we’ll use for program code
storage) is mapped to a particular memory range.
– The lower boundary varies based on the amount of Flash (non-volatile).
– The upper boundary is fixed.
• The MSP430 has some internal RAM (which we’ll use for
program data storage) which is also mapped to a particular
memory range.
– The lower boundary is fixed at 0x0200.
– The upper boundary varies based on the amount of RAM (volatile).
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
10
MSP430 Common Memory Map
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
11
MSP430 Memory Map
• The interrupt vector table will be discussed in detail later. All
architectures have one! At least certain parts of this vector table
must be in non-volatile memory!
• The 8 and 16-bit peripheral modules sections map to the onchip peripheral devices: which are outside of the CPU—but still
inside the MSP430 uC. Size of access must be correct.
Grouped together to not waste memory space.
• Special function registers are usually specific to the CPU. Might
be used for enabling functions of some peripherals.
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
12
Port I/O
• For port I/O, many peripheral registers may need to be
configured. Primarily PxSEL, PxDIR, PxOUT, PxIN (where
x is replaced with the port number).
• These names are defined by headers included by you. We
use these names because they agree with convention and
documentation.
P1SEL: Setting pin function (for I/O and not alternate purpose)
P1DIR: Defines the direction of each I/O pin (input or output)
–
By default, all I/O pins that have configurable direction are inputs!
P1OUT: Data to be written goes here (outputs change).
–
No effect on input pins.
P1IN: Sample I/O pins through here
–
Register is volatile (because external asynchronous events can change inputs).
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
13
Port I/O
• There are many other I/O configuration registers that may be of
interest. The MSP430 architecture allows for specification of
internal pull-up and pull-down resistors and interrupt use.
• See the MSP430x2xx Family User's Guide link for more
information.
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
14
MSP430 Interaction with PC
The IAR Embedded Workbench Software for the MSP430 is what we’ll be using in
lab this semester. Also known as EW430 for short. This software package
contains:
•
•
•
•
•
C/C++ compiler
Assembler
Linker
Downloader
Debugger
All communication with the LaunchPad is done via USB.
The textbook author discusses basically how to use the IDE in Appendix A. Your
lab instructor will discuss the use of it further with you in lab.
Other toolsets (such as Code Composer Essentials) can be used--but for this
semester we ask that use IAR only just to keep everyone on the same page!
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
15
Basic Code Development Process
1.
Set up a workspace and project. A workspace can contain multiple projects.
In this course, you’ll probably only have one project within the workspace.
•
•
2.
Write the CPU source code in language of choice using text editor.
•
•
•
•
3.
In this class we will be writing mostly in assembly!
Source code is always “plain text” format (don’t use word processors)!
IAR uses S43 file extensions for assembly source files (ex: lab1.s43).
C source files almost universally use a C file extension (ex: lab1.c).
Upon a successful build, you will get many auto-generated files. We’ll
discuss these in detail later. For now:
•
•
•
4.
Workspaces are given an EWW file extension (ex: lab1.eww).
Projects are given an EWP file extension (ex: lab1.ewp).
The R43 file (ex: lab1.r43) is an object file fed to linker.
The D43 file (ex: lab1.d43) is the executable.
The LST file (ex: lab1.lst) is a listing file (discussed later).
Download (and optionally debug) the source code using the IDE.
A full-blown assembler reference guide (PDF) can be found in the EW430 Help
menu.
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
16
Lab Introduction
For lab #1 you are wiring up (or have wired up) a fixed circuit which you
will use for the rest of this semester on a breadboard.
We are not concentrating on the breadboard too much this
semester (take ECE 3440 if you want to interact with cooler things). This
class will focus more on the internals of the MSP430. The breadboard is
only there to give us some form of I/O to interact with.
The LaunchPad can be interfaced to the breadboard via a ribbon cable
and connectors.
Power is provided to your breadboard via the ribbon cable.
Never attach your breadboard to power supplies! Let the LaunchPad
power the breadboard.
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
17
Lab Introduction
As you continue wiring up lab #1, think about the active-high and active
low sensor/actuator techniques we talked about.
Once you are wired up, you will run some code on the MSP430 that is
already written and assembled into an executable file.
You will download the binary file via the IAR tools.
When the test code runs on the MSP430, it will exercise the sensors and
actuators on your breadboard. This program allows you to verify that your
hardware works and you didn’t make any wiring mistakes.
If later in the semester you think hardware has a problem, revert back to
running the pre-compiled lab 1 program.
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
18
Lab Introduction
Read the lab introduction section BEFORE you come to each lab
this semester. Many of your questions may be answered in the
introduction. The introduction will help you understand what you
are doing.
Your lab instructor will get irritated if you ask questions that are
answered in the introduction section.
To sum it up, be prepared!
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
19
Practical Examples and Tips
•
•
Use the symbolic addressing mode for interacting
with variables you define.
Use the absolute addressing mode for interacting
with peripheral registers defined by hardware.
Examples:
mov.w #45h, myVar1
mov.b #45h, &P1OUT
mov.w myVar1, myVar2
mov.w myVar1, R8
mov.w R9, myVar2
mov.w R6, R7
mov.b myVar2, &P1OUT
mov.b R8, &P1OUT
mov.b &P1IN, myVar1
mov.b &P1IN, R9
 initializes myVar1 in RAM
 initializes output pins
 copies variables in RAM
 RAM to CPU register (load)
 CPU register to RAM (store)
 copies registers in CPU
 causes outputs to change
 causes outputs to change
 samples inputs into RAM
 samples inputs into CPU register
FOR BEST PERFORMANCE, USE ALL GENERAL-PURPOSE CPU REGISTERS (R4-R15)
BEFORE RESORTING TO THE USE OF RAM VARIABLES!
Lecture #5
ECE 3430 – Intro to Microcomputer Systems
Fall 2014
20
Download