ECE2049: Embedded Computing in Engineering Design A Term Fall Lecture #9: Exam Review w/ Solutions

Similar documents
ECE2049-E17 Lecture 6 1. ECE2049: Embedded Computing in Engineering Design E Term Lecture #6: Exam Review

ECE2049-E18 Lecture 6 Notes 1. ECE2049: Embedded Computing in Engineering Design E Term Lecture #6: Exam Review

ECE2049: Embedded Computing in Engineering Design C Term Spring Lecture #3: Of Integers and Endians (pt. 2)

ECE2049 E17 Lecture 4 MSP430 Architecture & Intro to Digital I/O

ECE2049: Embedded Computing in Engineering Design C Term Spring Lecture #7: More Digital IO

ECE2049 Homework #2 The MSP430 Architecture & Basic Digital IO (DUE Friday 9/8/17 at 4 pm in class)

ECE2049: Embedded Computing in Engineering Design A Term Fall Lecture #8: Making it work: LEDs, Buttons & Keypad

ECE2049 HW #1-- C programming and Binary Number Representations (DUE 1/19/2018 At the BEGINNING of class)

ECE2049 HW #1-- C programming and Binary Number Representations (DUE 9/1/2017 At the BEGINNING of class)

ECE2049 HW #1-- C programming and Binary Number Representations (DUE Friday 8/31/2018 At the BEGINNING of class)

/* defines are mostly used to declare constants */ #define MAX_ITER 10 // max number of iterations

ECE2049: Homework 1. Due: Thursday, 25 May 2017 by 7pm

COMP2611: Computer Organization. Data Representation

ECE2049 E17 Lecture 2: Data Representations & C Programming Basics

Why embedded systems?

ECE2049: Homework 1. Consider the following code to compute the average of your exam grades: #define NUM_EXAMS (3)

ECGR 4101/5101, Fall 2016: Lab 1 First Embedded Systems Project Learning Objectives:

ECE2049: Embedded Computing in Engineering Design C Term Spring 2018 Lecture #20: Using SPI The DAC

Computer Architecture and System Software Lecture 02: Overview of Computer Systems & Start of Chapter 2

Number Systems for Computers. Outline of Introduction. Binary, Octal and Hexadecimal numbers. Issues for Binary Representation of Numbers

Time: 8:30-10:00 pm (Arrive at 8:15 pm) Location What to bring:

CS 265. Computer Architecture. Wei Lu, Ph.D., P.Eng.

Review Activity 1 CALL and RET commands in assembler

Embedded programming, AVR intro

Microcontrollers. Microcontroller

World Inside a Computer is Binary

Course Schedule. CS 221 Computer Architecture. Week 3: Plan. I. Hexadecimals and Character Representations. Hexadecimal Representation

Using peripherals on the MSP430 (if time)

Basic System Memory Architecture View (Functional)

CPS 104 Computer Organization and Programming Lecture-2 : Data representations,

MIPS Assembly: Practice Questions for Midterm 1 Saving to and Loading from Memory CS 64: Computer Organization and Design Logic Lecture #6

CPE 323 REVIEW DATA TYPES AND NUMBER REPRESENTATIONS IN MODERN COMPUTERS

Lecture 1: Introduction to Microprocessors

CPE 323 REVIEW DATA TYPES AND NUMBER REPRESENTATIONS IN MODERN COMPUTERS

2. MACHINE REPRESENTATION OF TYPICAL ARITHMETIC DATA FORMATS (NATURAL AND INTEGER NUMBERS).

Number Systems. Decimal numbers. Binary numbers. Chapter 1 <1> 8's column. 1000's column. 2's column. 4's column

COMP2121: Microprocessors and Interfacing. Instruction Set Architecture (ISA)

Math 230 Assembly Programming (AKA Computer Organization) Spring 2008

ET355 Microprocessors Thursday 6:00 pm 10:20 pm

Information Science 1

Computer Organization and Programming

Lecture Objectives. Introduction to Computing Chapter 0. Topics. Numbering Systems 04/09/2017

COMP2121: Microprocessors and Interfacing. Number Systems

The type of all data used in a C++ program must be specified

EE251: Tuesday December 4

Computer Architecture

SIGNED AND UNSIGNED SYSTEMS

The x86 Microprocessors. Introduction. The 80x86 Microprocessors. 1.1 Assembly Language

CS/ECE 5780/6780: Embedded System Design

COMP3221: Microprocessors and. and Embedded Systems. Instruction Set Architecture (ISA) What makes an ISA? #1: Memory Models. What makes an ISA?

Computer Science 324 Computer Architecture Mount Holyoke College Fall Topic Notes: Bits and Bytes and Numbers

CS 261 Fall Binary Information (convert to hex) Mike Lam, Professor

Week 1. Introduction to Microcomputers and Microprocessors, Computer Codes, Programming, and Operating Systems

M1 Computers and Data

CS107, Lecture 3 Bits and Bytes; Bitwise Operators

EE251: Thursday November 15

Embedded Systems - FS 2018

Principle and Interface Techniques of Microcontroller

MICROPROCESSORS A (17.383) Fall Lecture Outline

Introduction to C. Why C? Difference between Python and C C compiler stages Basic syntax in C

Page 1. Where Have We Been? Chapter 2 Representing and Manipulating Information. Why Don t Computers Use Base 10?

Groups of two-state devices are used to represent data in a computer. In general, we say the states are either: high/low, on/off, 1/0,...

1.1. Unit 1. Integer Representation

l l l l l l l Base 2; each digit is 0 or 1 l Each bit in place i has value 2 i l Binary representation is used in computers

UNIT 7A Data Representation: Numbers and Text. Digital Data

Ali Karimpour Associate Professor Ferdowsi University of Mashhad

ECE2049: Embedded Computing in Engineering Design C Term Spring 2018 Lecture #15: More ADC Examples

Announcements HW1 is due on this Friday (Sept 12th) Appendix A is very helpful to HW1. Check out system calls

MACHINE LEVEL REPRESENTATION OF DATA

Time (self-scheduled): Location Schedule Your Exam: What to bring:

The type of all data used in a C (or C++) program must be specified

ECE2049: Embedded Computing in Engineering Design C Term Spring Lecture #11: More Clocks and Timers

But first, encode deck of cards. Integer Representation. Two possible representations. Two better representations WELLESLEY CS 240 9/8/15

Before Class Install SDCC Instructions in Installing_SiLabs-SDCC- Drivers document. Solutions to Number Systems Worksheet. Announcements.

SISTEMI EMBEDDED. Basic Concepts about Computers. Federico Baronti Last version:

Inf2C - Computer Systems Lecture 2 Data Representation

Computer (Literacy) Skills. Number representations and memory. Lubomír Bulej KDSS MFF UK

Computer Organization and Assembly Language. Lab Session 01

CprE 288 Introduction to Embedded Systems Exam 1 Review. 1

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 01, SPRING 2013

Module 2: Introduction to AVR ATmega 32 Architecture

CSE 351: The Hardware/Software Interface. Section 2 Integer representations, two s complement, and bitwise operators

10.1. Unit 10. Signed Representation Systems Binary Arithmetic

Few reminders and demos

COMPUTER ORGANIZATION AND ARCHITECTURE

9/3/2015. Data Representation II. 2.4 Signed Integer Representation. 2.4 Signed Integer Representation

LAB WORK NO. 2 THE INTERNAL DATA REPRESENTATION

Midterm Exam Review Slides

Recap from Last Time. CSE 2021: Computer Organization. It s All about Numbers! 5/12/2011. Text Pictures Video clips Audio

30 August CS101L PROGRAMMING LAB 2

Binary Arithmetic CS 64: Computer Organization and Design Logic Lecture #2 Fall 2018

ECE2049: Embedded Computing in Engineering Design A Term Fall 2017 Lecture #16: Interrupts and Event Driven Code

Lecture Topics. Announcements. Today: Integer Arithmetic (P&H ) Next: continued. Consulting hours. Introduction to Sim. Milestone #1 (due 1/26)

Instruction Set Architecture

Topics Power tends to corrupt; absolute power corrupts absolutely. Computer Organization CS Data Representation

MICROPROCESSORS A (17.383) Fall Lecture Outline

Special Topics for Embedded Programming

CS 107 Lecture 2: Bits and Bytes (continued)


Topic Notes: Bits and Bytes and Numbers

Transcription:

ECE2049: Embedded Computing in Engineering Design A Term Fall 2018 Lecture #9: Exam Review w/ Solutions Reading for Today: Review all reading and notes, Davies Ch 1, 2, 4,7, MSP430 User's Guide Ch 6.1, 6.3, 12, Data sheets, etc. Reading for Next Class: -- Lab #1 (on Web) : Report (on-paper) due Tue 9/11 (at beginning of class). Submit code on-line HW #2 (on Web): Due NOW! EXAM #1 2 pm on Monday 9/10/2018! The exam will be closed book and notes but you may use the following: >> One 8.5 x 11 sheet of notes (both sides) & a calculator -- You will need a calculator for number conversions! -- I will supply a table of the ASCII character codes All cell phones, computers, PDAs, etc are to be OFF and inside a book bag What to study?? >> Lecture notes 1-8, Reading, HW1 and HW2 Basic C Instructions and Syntax: >> Know layout of C source file (Lecture 1, on-line notes) >> Some Data types (as they are defined in CSS for the MSP430) int a; // 16 bit signed (2's comp) integer float b; // 32 bit IEEE float point char c; // 8 bit unsigned character unsigned int d; // 16 bit unsigned integer long int e; // 32 bit signed integer double f; // 64 bit in IEEE float point int arr[5]; // array of five 16 bit integers >> Array names point to the beginning of a block of memory where multiple values are stored successively in memory > Convenient way to store and index groups of values >> KNOW SIZES OF DATA TYPES IN CCS!

>> Standard C Operators: Math: + - * / = % (modulo) Unary: ++ -- (also = &= += etc.) Relational and Logical: > >= < <= ==!= && Bitwise: & (AND) (OR) ^ (XOR) >> (R shift) << (L shift) ~ (NOT) Brackets: } denotes a multi-line block of code (MUST match!) >> Decisions, looping, etc: if (kk > 100) kk = 0; else z = 2*z+kk; kk++; } --> The Forever Loop while (j < 100 ) /* Body of loop */ j++; } // end while for (i = strt; i < end_pt; i++) /* Body of loop. Do something */ } // end for i while (1) /* Body of loop. Do something */ } // end while (1) C is a modular programming language >> Use functions to implement small blocks of code that can be used repeatedly >> A C main() calls a series of smaller functions to complete a task

>> Execution of a C program ALWAYS starts at the beginning of main()! #define MAX_SZ 100; // Determines max value of an array unsigned int arraymax(unsigned int* in_arr, int num_pts); void main() float unsigned int unsigned int myarray[10]; maximum=0, big[max_sz]; i, other_val; /* Do some stuff */ i = 0; while (i < MAX_SZ) big[i] = (i % 10); i++; } maximum = arraymax(big, MAX_SZ); /* Do more stuff */ } // end of main() Quick Questions: 1) How many times does the while loop execute? a) 99 b) 100 c) 101 2) To what value is big[47] assigned? a) 40 b) 0.47 c) 7 d) 470 3) What is the range of indexes for the big array? a) big[1] to big[100] b) big[0] to big[99] c) big[0] to big[100] d) big[0] to big[9] 4) To what value is maximum assigned? a) 99 b) 100 c) 10 d) 9

Data Representatioins (HW #1): >> Integer representations: --Unsigned, sign-magnitude, two's complement and packed BCD >> Expect Conversion Between Bases and Formats! Unsigned integers = all bits used to convey magnitude (whole numbers) 1026 = 00000100 00000010b = 0402h Sign Magnitude integers = n-1 bits used to convey magnitude with most significant bit or MSB used for sign (0 = +, 1 = -) 1026 = 00000100 00000010b = 0402h -1026 = 10000100 00000010b = 8402h ** Has 2 representations of 0 >>> +0 and -0! Two's Complement integers = Common format for signed integers (int). For n bits, values run from -2 (n-1) to 2 (n-1) -1 Positive numbers: Same as Unsigned 1026 = 00000100 00000010b = 0402h Negative numbers (ONLY!!!): Encode magnitude, Complement each bit, Add 1-15 = 0000 0000 0000 1111 = 15 1111 1111 1111 0000 complement +1 1111 1111 1111 0001 = 0FFF1h = -15 in two's complement Binary Coded Decimal = Each decimal digit expressed in binary nibble 367 = 0000 0011 0110 0111 = 0367h Hexidecimal (hex) Numbers: Base 16 -- 1 Hex character represent values from 0 to 15d using digits 0 Fh 158d = 9Eh Conversion between hex and binary is piece of cake! Just convert each hex digit to a

binary nibble... Or vise versa 158d =1001 1110b = 9Eh 9 E 2AC4h = 2 A C 4 0011 1010 1100 0100 b Fractional Number representations: Fixed point: Binary radix point assigned a fixed location in byte (or word) 0101.1010 = 5 + 2-1 + 2-3 = 5.625 Precision is function of number of fractional bits assigned --> 4 fractional bits = 2^(-4) = 0.0625 = smallest fraction Floating Point (IEEE Standard) : Used to better approximate real valued decimal values to a prescribed number of decimal places Single Presicion (32 bits): S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF Value = (-1) S 2 (E-127) * (1.F) << Remember leading 1. Quick Questions: 1) The decimal equivalent of unsigned integer 8002h is a) 32770 b) 65538 c) -2 d) 16386 2) The decimal equivalent of two's complement integer 8002h is a) -2 b) 32770 c) -32766 d) -65538 3) The decimal equivalent of packed BCD integer 8002h is a) -2 b) 32770 c) 8002 d) 2008 4) The decimal equivalent of the 32-bit floating point number 4AA80000h a) 1. 3125E+22 b) 5505024.0 c) -5.5024E6 d) -21.0E-18

Little Endian: The MSP430, like Intel processors, is Little Endian (HW1) -- The lower byte of each 16 bit word is stored first then the higher byte Low Byte, High Byte -- For double words the lower word is stored first then the upper word Ex: How 65340 decimal = 00010004h is stored in memory at address 0400h Little Endian Address Byte Value 02403h 02402h 02401h 02400h 00h 01h 00h 04h...... A memory dump from CCS shows contents of addresses fromleft to right starting at 02400h 02400h= 04 00 01 00... << Bytes appear out of order when read left to right Big Endian: Many other RISC processors -- The higher byte (big end) of each 16 bit word is stored first then the lower byte BIG Endian Address Byte Value 02403h 02402h 02401h 02400h 04h 00h 01h 00h...... A memory dump from a big endian processor (also left to right) 02400h= 00 01 00 04... << Bytes appear in order when read left to right >> BTW, Network Byte Order = BIG ENDIAN!!!

Microprocessor Systems Architecture: >> General Computing Hardware/Software Hierarchy Applications Operating System = User Interface System SW = Interface to HW HW Layer = CPU, Mem., peripherals >> Gets squashed in an embedded system... Application Maybe some System SW functions HW Layer = CPU, Mem., peripherals Harvard Architecture Separate memory address spaces (and busses) for code and data ( Better architecture for pipelining instruction fetches) Instruction Data Addr Code memory Code Addr (Fetch) CPU Data (Read/Write) Data mem Peripherals Von Neumann Architecture Single memory address space (and bus) for code & data Addr. Bus CPU Instructions & Data (Fetch/Read/Write) Code and Data Memory Peripherals

>> MSP430x55xx uses Von Neumann architecture >> We're using MSP430F5529 KNOW SPECS! -- 128 KB Flash memory (code) -- 8 KB RAM (data) + 2 kb USB RAM -- LCD controller -- Hardware multiply, UART, and a slew of other peripherals (Timers, ADC, comparator, general digital IO ports...) Memory Organization: >> Memory = group of sequential locations where binary data is stored -- In MSP430, a memory location holds 1 byte -- Each byte has unique address which CPU uses to read to and write from that location -- Multibyte data is stored Little Endian! -- 2 types of memory: Volatile and Non-volatile RAM = 8KB = DATA memory = Volatile >>Read and Write = retrieving or writing DATA to/from RAM (under programmer control) FLASH = 128KB = CODE memory (primarily!) = Non-volatile >> Fetch = retrieving of instruction from CODE (Flash) memory (automatic CPU function) >> Flash is NOT byte write writable! -- Must be erased in multi-byte (e.g. 512 byte) segments >> Write cycle takes much longer than read cycle MSP430 is 16 bit Microcontroller >> 16 bit word size = 16 bit internal registers >> Also has 20 bit address bus (can access up to 1 MB = 2 20 addresses) >> Know Memory Map for MSP430x5529x Processors (from HW) -- Addresses for RAM & FLASH, (good thing to have in notes!) >> Know how to figure memory addresses

Quick Questions: 1) The long int i=0x00081230 is stored in memory by a microprocessor as Address Contents 0213h 30h 0212h 12h 0211h 08h 0210h 00h The microprocessor must be a) Little Endian b) Big Endian c) Running Linux d) Running WinXP SP3 2) In the MSP430F5529, the RAM is a) non-volatile system memory b) volatile data memory c) non-volatile code memory d) consists only of the 16 CPU registers 3) In the MSP430F5529, the FLASH memory is primarily a) non-volatile code memory b) volatile data memory c) volatile code memory d) not available in this model 4) The starting addresses for RAM Sector 0 and Code Memory (Flash) respectively are a) 00000h and 02400h b) 00200h and 01100h c) 02400h and 04400h

MSP430F5529 Basic Digital I/O (HW2): >> Eight independent, individually configurable digital I/O ports -- Ports 1-7 are 8-bit wide and Port 8 is 3 bits wide >> Each pin of each port can be configured individually as an input or an output >> Each pin of each port can be individually read or written to Function Select Register: Sets function of each pin in the port (i.e. P4SEL) -- Bit = 0 = Selected for Digital I/O -- Bit = 1 = Not selected for digital I/O (multiplexed pin functions) Direction Register: Sets direction of each pin in the port (i.e. P2DIR) -- Bit = 0 = Corresponding pin is an Input -- Bit = 1 = Corresponding pin is an Output Input Register: Where input to the port is read from (i.e. P2IN) -- Bit = 0 = Logic low -- Bit = 1 = Logic high Output Register: Where data to be output from the port is written (i.e. P5OUT) -- Bit = 0 = Logic low -- Bit = 1 = Logic high Drive Strength: Sets drive strength of port (we will usually leave as default) --Bit = 0 = reduced drive strength (default) --Bit = 1 = full drive strength Pull-up/down Resistor Enable: Enable internal pull resistors (we will use with --Bit = 0 = Not enabled (default) buttons) --Bit = 1 = Enabled (see User's Guide) >> All I/O port registers are memory mapped. Register names defined in msp430x4xx.h (Read from and Write to defined names as if writing to C variables...) Ex: Using CCS C configure Port 3 for digital I/O with Pins 1 and 0 as inputs (pull resistors disabled) and Pins 7 thru 4 and outputs. (Use bitwise C operators & (AND) and (OR) and ~ (NOT)). Function Select: Want P3.1-0 and P3.7-4 in Digital IO mode but to leave P3.3-2 alone P3SEL<= P3SEL AND 0000 1100 Or P3SEL= P3SEL & 0x0C; // a C command to carry out above assignment P3SEL &= 0x0C; // C shorthand equivalent to instruction above

Direction Register: Want P3.1-0 to be imputs and P3.7-4 to be outputs but again leave P3.3-2 as they are. Do in 2 steps P3DIR<= P3DIR OR 1 1 1 1 0 0 0 0 << sets P3.7-4 as outputs Or, P3DIR= P3DIR 0xF0; // C command to carry out above assignment P3DIR = 0xF0; // C shorthand equivalent to instruction above Then, P3DIR<= P3DIR AND 1 1 1 1 1 1 0 0 << sets P3.1-0 as inputs Or, P3DIR= P3DIR & 0xFC; // C command to carry out above assignment P3DIR &= 0xFC; // C shorthand equivalent to instruction above In any of the above C commands you can build the bit mask using the constants BIT0 thru BIT7 defined in the msp430x4xx.h file 1 1 1 1 0 0 0 0 = (BIT7 BIT6 BIT5 BIT4) Ex. Now, read in from Pins 1-0 and place a 1 on the output Pins 7-4 that correspond to the binary number 0-3 on Pins 1-0. Pin 4 should is for 0 and Pin 7 should be for 3. unsigned char inbits; // define an unsigned byte variable inbits = P3IN & 0x03; // read in from Port 3 // only keep lowest 2 bits switch (inbits) case 0: P3OUT=0x10; // when inbits=0 write a 1 to P3 pin 4 break; case 1: P3OUT=0x20; // when inbits=1 write a 1 to P3 pin 5 break; case 2: P3OUT=0x40; // when inbits=2 write a 1 to P3 pin 6 break; case 3: P3OUT=0x80; // when inbits=3 write a 1 to P3 pin 7 break; }

Be familiar with operation of functions from demo project! >> The configuring and using the LEDs, buttons, etc. >> Polling: Repeated checking of IO ports to see if they have data or need servicing (usually inside main loop) #include "msp430.h" #include <stdlib.h> void configport() P5SEL = 0x00; P5DIR = (BIT7 BIT5 BIT3 BIT1); } void inout() unsigned char in, out; in = P5IN; out = (in & 0x55) << 1; P5OUT = out; } void main() while (1) configport(); inout; } } a) Which port(s) and which pins are being used as digital inputs? P5.0,2,4,6 b) Which port(s) and which pins are being used as digital outputs? P5.1,3,5,7 c) Assume that the port 5 input register holds the value 6Dh. What value is written to the port 5 output register? 8Ah