Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit...

63
Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy
  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    214
  • download

    1

Transcript of Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit...

Page 1: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Microcontrollers

Instructor:Shuvra Das

mechanical engineering department

University of Detroit Mercy

Page 2: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Flowchart of Mechatronic Systems

Page 3: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Microprocessor Structure

• CPU (Central Processing Units): to recognize and carry out program instructions

• Memory: storage of data • I/O Devices: to handle communications between the

computer and outside world• Buses:digital signals move from one part of the

computer to another along buses. These could be track on a printed circuit board or wires in a ribbon cable (e.g.data bus, control bus, address bus).

Page 4: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

CPU

• Consists of control unit, arithmetic/logic unit (ALU), and various registers.

• The control unit manages the flow and manipulation of data. Determines timing and sequence of operations.

• A clock circuit provides synchronization; • The ALU performs all arithmetic and logical

computations on the data that have been transferred to appropriate registers.

Page 5: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Registers

• Accumulator: Temporary data storage. To read data the CPU needs to address the specific memory word.

• E.g. when operating with two numbers only one is fetched at one time and stored in the accumulator. When the ALU operation is done the result is sent back to the accumulator.

• Accumulator: Is involved in all data transfers.

Page 6: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Registers

• Status register: contains the status information about the latest operations. Usually a bit is associated with it and it is called a flag.

• E.g. binary addition 101+110 = (1) 011 (leads to overflow and carries a 1 to the overflow)… this will raise a flag.

• Program counter register, Memory address register, Instruction Register, General-purpose register, Stack pointer register.

• The total number and types of registers depends on the microprocessor.

Page 7: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Memory

• Used for storing program, binary data, intermediate results from computations.

• Memory units consist of cells that can store values 0 or 1. Storage cells are grouped together to store one word.

• With a 4-bit address we can access 16 different memory units (with each perhaps holding 8 bits)

• Size of a memory unit is specified in terms of the number of storage locations available; 1K is 210=1024.

Page 8: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

RAM

• Random access memory (RAM) is an example of volatile memory; information stored in volatile memory is lost when power is disconnected.

• In most cases, user programs can read from and write to RAM.

• Temporary data is stored in RAM.

Page 9: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Memory

• ROM (read only memory) cannot be written to by a user program. ROM is often used to store look-up tables, and program code that will no longer be changed (such as operating systems)

• PROM, EPROM, EAROM, EEROM are variations on this, which allow ROM to be programmed, and reprogrammed.

• Most ROM's are programmed in such a way that the data they store are not lost when power is disconnected, so ROM is an example of non-volatile memory.

Page 10: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Memory

• EPROM: Erasable, Programmable ROM. The information is permanently stored by applying a voltage to the Integrated circuit. Ultraviolet light shined on the quartz window erases this memory.

• EEPROM: Electrically erasable PROM, erasing happens through the application of an electric voltage.

Page 11: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

I/O Devices

• Without input and output devices, the computational power of a digital computer has no meaningful contribution to automation and control.

• Disk drives, monitors, and printers are examples of output devices. Keyboards, disk drives, and scanners are examples of input devices.

Page 12: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Bus

• These are the paths that data follow throughout the computer system.

• Data need to be retrieved from memory into registers in the CPU, and the results of computation need to be transferred back to memory.

• These data transfers take place along the bi-directional data bus.

• The parallel and serial ports on a microcomputer are other examples of buses.

Page 13: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Bus

• The address bus carries the address of the memory location of data or a program instruction that has been requested by the control unit.

• When a particular address is selected in the address bus only that location is open to the CPU. The CPU can only communicate with one location at one time.

Page 14: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Bus

• Many devices can use a single bus; hence it is important that the control unit keep track of which device is requesting use of the bus, and whether it is to receive or send data.

Page 15: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Bus

• Data bus is used to transport a word from CPU and memory or I/O. Word lengths used may be 4, 8, 16, 32, or 64.

• An 8-bit data bus may consist of 8 separate copper tracks laid out on a printed circuit board, or it may connect to other devices through ribbon cables

• Each wire carries a 0 or 1 signal• 8 bit microprocessors are very commonly used as

microcontrollers.

• For 8 bit processor the maximum number of values that can

be transported is 28=256

Page 16: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Bus

• Control bus is the means by which signals are sent to synchronize the separate elements. The system clock signals are carried by the control bus. These signals generate time intervals during which system operations can take place. The CPU can send control signals to other elements to indicate the type of operation being performed:

• e.g. whether it needs to READ (receive) and WRITE (send) a signal.

Page 17: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

MicrocontrollersVdd

CPU

I/OControl&

Status Registers

ROMRAM

EEPROMInput/Output ports

I/Odataregisters

memoryData Busclock

Controllines

Vss

Page 18: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Basic StampII

Page 19: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Basic Stamp II processor:A. BS2 Hardware

• The brain of the BS2 is a custom PIC16C57 microcontroller, which has been permanently programmed with the PBASIC2 instructions set.

• When you run a program on BS2 it retrieves the information from a separate memory chip and interprets them and carries out the instruction.

• PIC executes 5 million ins/sec. But PBASIC2 does 3k-4k ins./sec.

Page 20: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Basic Stamp II processor:A. BS2 Hardware

• 20 I/O pins, 16 are for general use, 2 can be used for serial communication, 2 are dedicated to interfacing with the memory chip.

• P0-P15 interface with 5-volt logic (HIGH=5V, LOW=0V).

• In input mode, the state (1 or 0) of the pin as determined by external circuitry can be read. In output mode, the pin is internally connected to either ground or 5V, depending on the programmer's preference.

Page 21: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

A. BS2 Hardware

• BS2 has 32 bytes of RAM (random access memory).

• Six bytes are reserved for input, output and direction control of the I/O pins, which leaves 26 bytes for storing variables.

Page 22: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Memory chip

• EEPROM- Used for program storage: non-volatile memory. Not lost due to power loss.

• Can be written to and read from by program, but need to keep in mind that there is a limit to the number of times you can write to the EEPROM (about 10 million).

• Also it takes a long time (as much as several millisecond) to write data to memory.

Page 23: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Reset circuit

• When power is interrupted or corrupted, the reset circuit shuts down the BS2 to prevent mistakes or lockup, either of which may be dangerous if using the BS2 to control heavy equipment.

• When the voltage supply stabilizes, the program starts again at the beginning.

Page 24: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Power supply

• Voltage regulator accepts 5-15V and provides a constant 5V. Also allows for low-power modes (Sleep, End, Nap instructions).

• Power supply can provide up to 50mA, BS2 needs 8mA when active. This means that some external circuitry can be driven without needing a separate supply. (Vdd = +5V, Vss = ground)

Page 25: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

B. Input/Output, Variables

• RAM has 6 bytes (1 byte = 8 bits), reserved for managing the I/O pins.

• The remaining 26 bytes are available for assigning variables. Fixed variables reside in a particular memory location. You are advised to use variables which are automatically allocated by PBASIC2.

• Variables can be declared as bit, nib (nibble = 4 bits), byte (8 bits), word (16 bits).

Page 26: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

B. Input/Output, Variables

• Declaring as bit means the variable can take on values of 0 or 1.

• If declared as nib, the value can be in the range from 0 to 15. Byte variables can range from 0 to 255 and word variables from 0 to 65535.

• In general, use the smallest size that will adequately represent the value you need (due to 26-byte limit on memory.) (Arrays can also be declared, but are not discussed here.)

Page 27: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

B. Input/Output, Variables

• Variable modifiers allow us to look at certain bits of a variable. For example, RESULT.LOWBIT refers to the least significant bit of the variable RESULT. Other modifiers include, lowbyte, highbyte, nib0, nib1, bit0, bit15, etc…

• You can declare constants in PBASIC2. For example, if we wish the baud rate of the serial output to always be 9600, we may wish to store 9600 as a constant named BAUD. We need only change it in the declaration line.

Page 28: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Serial host interface

• This interface used for downloading program from a host PC (BS2 has no keyboard - programming happens on PC, then is downloaded to the EEPROM, via serial cable from the PC's serial port to the 9-pin connector on STAMP2 carrier board.

Page 29: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Commonly used commands in BS2 programming

Page 30: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Debug

• Allows you to display variable, constants, or expression values while program is running in order to follow program flow (debugging).

• Example:

X = 75

DEBUG X

Displays x = 75 on the screen.

Page 31: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

End

• End the program, placing the BASIC Stamp into low power mode indefinitely.

Page 32: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

GOSUB

• Syntax : GOSUB <SubroutineName>• Make the execution of the program jump to the point of the subroutine

specified by the subroutine name, after storing the address of the instruction next to GOSUB. The execution comes back to the instruction next to the GOSUB after finishing the subroutine by the RETURN instruction.

• Example: GOSUB MyRoutine

……………….Myroutine :--------------------RETURN

Page 33: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

RETURN

• Syntax: RETURN

• Return the execution from a subroutine to the statement following the call of the subroutine of this RETURN.

Page 34: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

PULSOUT

• Syntax: PULSOUT <Pin>, <Period>• Generate a pulse on Pin with a width of Period.• In BS2 PULSOUT works on units of 2 micro

seconds.• Example:

PULSOUT 12, 750

Generates a 150 micro second pulse width on pin 12

Page 35: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

PAUSE

• Syntax: PAUSE <Period>

• Pause the program, execution stops for the specified period.

Page 36: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Number System

• Decimal System: 1,2,3,4,5,….

– 103,102,101,100

– thousands,hundreds,tens,units

• Binary system: 0,1

– 23,22,21,20

– bit3,bit2,bit1,bit0 (bits=binary digits)

Page 37: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Binary Math

• 0+0=0

• 0+1=1+0=1

• 1+1=10, I.e.,0+carry 1

• 1+1+1 = 11, I.e. 1+carry 1

• 14+19=33– 01110+10111=100001

• 0-0=0

• 1-0=1

• 1-1=0

• 0-1=10-1+borrow = 1+borrow

• 27-14=13

– 11011-01110=01101

Page 38: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

C. BS2 Runtime Math and Logic - pay attention!!

Number Representations: BS2 recognizes decimal (no prefix), hex ($ prefix), binary (% prefix), ASCII (string enclosed in quote - example: "A" returns the ASCII code for A: 65.)

Order of operations: BS2 performs operations in the order written - big difference from letting multiplication and division take priority over addition and subtraction.

Page 39: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

C. BS2 Runtime Math and Logic - pay attention!!

Example: 12+3*2/4 doesn't result in 13.5, which is what we get if we follow the rules we were taught. Rather, BS2 does 12+3=5, then 15*2=30, then 30/4=7. (Note: BS2 does integer math, so 30/4 is 7 not 7.5.) Parentheses are necessary to force the multiplication and division to take place first.

Page 40: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

C. BS2 Runtime Math and Logic - pay attention!!

Integer math: BS2 uses rules of positive integer math. It handles only whole numbers and drops fractional parts of any computations. Careful with negative numbers - these are stored as 2's complement. Better to avoid negative numbers when possible. Division with negative numbers will not work, but addition, subtraction and multiplication are ok, if you are careful. (Also use MIN and MAX only with unsigned integers.)

Page 41: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

C. BS2 Runtime Math and Logic - pay attention!!

Unary and binary operators: Unary operators take precedence over binary operators: 10 - SQR 16 results in SQR 16 being evaluated first, then subtracts it from 10.

16-bit workspace: Computation is done in 16 bits. If variable is byte, it is padded with 8 leading zeros to make the operand 16 bits. After the operation, the 8 LSB bits are placed into the byte variable in which we want to store the result. Careful when working with negative numbers.

Page 42: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

C. BS2 Runtime Math and Logic - pay attention!!

• Example: x = -99, where x has been declared as a byte. When we ask for the value stored in x to be displayed in signed decimal format (PBASIC2 instruction is "debug sdec ? x"), it shows that x is 157. What happened? Note that 99 is 01100011 as a byte. When BS2 negates 99, it converts the number to 16 bits (0000000001100011), then takes two's complement (1111111110011101).

Page 43: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

C. BS2 Runtime Math and Logic - pay attention!!

• Since we asked for the value to be stored as x (byte), the 8 leftmost bits are truncated, and we have (10011101). The SDEC modifier of the debug instruction expects the operand to be a 16-bit, 2-'s complement number, but we are only giving it a byte to work with. So it just pads the number with leading zeros (0000000010011101), which is +157.

Page 44: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

FOR … NEXT

• Syntax: FOR counter = <startvalue> TO <EndValue> STEP <StepValue> …… NEXT

• Create a repeating loop that executes the lines between FOR and NEXT, incrementing or decrementing the counter according to the step value.

• If start value is larger than end value, PBASIC understands that the step value is negative even if there is no minus sign.

Page 45: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

FOR…NEXT

• Note: For Loops can not overlapped, Example:• FOR I = 1 TO 10

FOR J = 1 TO I

…..

NEXT

………

NEXT

Page 46: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

IF…THEN

• Syntax: IF <condition> THEN <true-address>• If the condition is true the execution jumps to the

true-address, otherwise it continues down.

Page 47: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

High

• Syntax: High Pin• Makes the specific pin output high.

Page 48: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

LOW

• Syntax: LOW <Pin>

• Make the specific pin output low

Page 49: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Frequently used PBASIC Instructions

Debug End For/Next Gosub Goto High If…Then Input Low

• Output Pause PWM Rctime Return Serin Serout Stop• Toggle

Page 50: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

BRANCH

• Syntax: BRANCH offset, (Add0, Add1, …, AddN)

• Go to the address specified by offset.

• It works the same way like (switch-case) in C++.

• We will use it on look up tables when we have more than one table to see which table we are going to read.

• If offset = 0 => branch to address add0

• If offset = 1 => branch to address add1

• … etc

Page 51: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

DATA

• Syntax: <symbol> DATA <DataItem, DataItem,…>

• Write data to the EEPROM during the program download.

• Symbol: is an optional, unique symbol that will be automatically defined as a constant equal to the location number(address) of the first Item.

• DataItem: is a constant indicates a value.

Page 52: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

GOTO

Syntax: GOTO label• Makes the execution jump to the point of the

program specified by the label.• A common use : on endless loops.• Example:

loop: …….

……

GOTO loop

Page 53: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

INPUT

• Syntax: INPUT <Pin>

• Make the specific pin an input.

Page 54: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

LOOKUP

• Syntax: index, (value0, value1, … valueN), variable

• Find the value at location index and store it in variable:

If index = 0 => variable = value0

Else if index = 1 => variable = value1

… etc

Page 55: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

OUTPUT

• Syntax: OUTPUT <Pin>

• Make the specified pin an output.

Page 56: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

PWM

• Syntax: PWM <Pin>, <Duty>, <Cycles>

• Convert a digital value to analog output via pulse-width modulation.

• Units in cycles on BS2 is 1 ms.

• Average voltage equation: V(avg) = (Duty/255) * 5 Volts.

• Required charge time(cycles) equation: t(chg) = 4 * R * C

• Example:• T(chg) = 4 * 1000 * 10^-6 = 40 ms

• So: PWM 0, 100, 40

Will Put a 1.96 V charge on the capacitor

Vo1000 ohm

0.1 uF

P0

Page 57: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

RCTIME

• Syntax: RCTIME <Pin>, <State>, <Variable>

• Measure time while Pin remains in State and put the result on Variable; usually to measure the charge/ discharge time of resistor/ capacitor (RC) circuit.

• We will use that on our following light program, by comparing the RCTIME of the left and the right photo sensors (resistor on our case) and use the comparison result to decide whether we we should turn right or left.

Page 58: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

READ

• Syntax: READ <Location>, <Variable>

• Read value at Location and store the result in Variable.

• Usually used on lookup tables.

Page 59: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

SERIN

• Receive asynchronous serial data (e.g, RS-232 serial protocol data).

• We are not going to use serial communication interface on our project(s).

• For details: refer to the user manual.

Page 60: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

SEROUT

• Transmit asynchronous serial data (e.g RS-232 data).

• Again we are not dealing with serial communication interface.

Page 61: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

STOP

• Syntax: STOP

• Stop program execution without putting BASIC stamp into low-power mode, also you can use it in the middle of the program (differences from END).

• Use this command on error handling (ex: divide by zero), or if your program branches based on the inputs into more than one independent algorithm, so each algorithm considered as separated program has to end when finished.

Page 62: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

TOGGLE

• Syntax: Toggle <Pin>

• Invert the state of an output pin, if it is high make it low and vice versa.

Page 63: Microcontrollers Instructor:Shuvra Das mechanical engineering department University of Detroit Mercy.

Sample Programs