73
11/3/2015 1 Electrical and Computer Engineering Dalhousie University 1 ECED3204: Microprocessor Part III--Clock, I/O and Interrupt Jason J. Gu Department of Electrical and Computer Engineering Dalhousie University 1 Electrical and Computer Engineering Dalhousie University 2 Outline i. Part III.1 System Clock Configuration ii. Part III.2 Parallel I/O iii. Part III.3 Interrupt Handling, Resets, and Power Management iv. Part III.4 Advanced Parallel I/O 2

ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

  • Upload
    dothien

  • View
    233

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

1

Electrical and Computer Engineering Dalhousie University 1

ECED3204: Microprocessor

Part III--Clock, I/O and Interrupt

Jason J. GuDepartment of Electrical and Computer Engineering

Dalhousie University

11

Electrical and Computer Engineering Dalhousie University 2

Outline

i. Part III.1 System Clock Configurationii. Part III.2 Parallel I/Oiii. Part III.3 Interrupt Handling, Resets,

and Power Managementiv. Part III.4 Advanced Parallel I/O

22

Page 2: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

2

Electrical and Computer Engineering Dalhousie University

Part III.1 System Clock Configuration

3

Electrical and Computer Engineering Dalhousie University 4

Outline

i. Overview of System Clock Generationii. The Clock System of the AVR Mega Devicesiii. System Clock Prescaler

44

Page 3: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

3

Electrical and Computer Engineering Dalhousie University

Overview of System Clock Generation

Clock signal

Time delays are dependent on accurate system clock frequency

MCU includes complex circuitry that generates and distributes clock signals to every peripheral module

Devices used to generate clock signal: ceramic resonators, crystal oscillators, and RC circuits

Frequency division: using count down counter

Frequency multiplication: phase lock loop (PLL)

5

Electrical and Computer Engineering Dalhousie University

Clock distribution of AVR Mega devices: illustrated in Figure

The Clock System of the AVR Mega Devices

6

Page 4: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

4

Electrical and Computer Engineering Dalhousie University

Clock Distribution of AVR Mega Devices (cont’d.)

CPU clock(clk_CPU): used with AVR core operation

I/O clock(clk_I/o): used with I/O modules

Flash clock(clk_FLASH): controls flash memory interface

Asynchronous clock (clk_ASY): allows asynchronous timer/counter to be clocked directly from an external clock or an external 32 kHz clock crystal

ADC (clk_ADC) clock: provides an operation clock required by the ADC module

7

Electrical and Computer Engineering Dalhousie University

The Clock System of the AVR Mega Devices (cont’d.)

Table 7.1 Mega device clocking options select

8

Page 5: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

5

Electrical and Computer Engineering Dalhousie University

The Clock System of the AVR Mega Devices (cont’d.)

Default clock source: calibrated internal RC oscillator 1.0 MHz system clock

External clock: used to generate clock signals required by all the modules Square wave with stable frequency

When as external clock source is used, it is connected to XTAL1, XTAL2 is unconnected.

9

Electrical and Computer Engineering Dalhousie University

The Clock System of the AVR Mega Devices (cont’d.)

Watchdog oscillator: circuit used to detect software errors; derived from the on-chip 128 kHz RC oscillator

Low-frequency oscillator: 32.768 kHz watch oscillator that can serve as the clock source

The crystal should be connected as shown in figure

10

Page 6: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

6

Electrical and Computer Engineering Dalhousie University

The Clock System of the AVR Mega Devices (cont’d.)

Timer/counter oscillator: can be operated from an external 32.768 kHz watch crystal or an external clock source

System clock prescaler Clock source selected by the clock multiplexer: further

divided by the system clock prescaler

11

Electrical and Computer Engineering Dalhousie University

System Clock Prescaler (cont’d.)

Possible prescaling factor: chosen by the CLKPR register CKDIV8 fuse determines the initial value of the CLKPS bits

CKDIV8 unprogrammed, CLKPS=0000, otherwise 0011

CKDIV8 : can be programmed using AVR Studio IDE

12

Page 7: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

7

Electrical and Computer Engineering Dalhousie University

Part III.2 Parallel I/O

13

Electrical and Computer Engineering Dalhousie University

Outline

i. Introduction to I/O PORTs ii. I/O Pin Driving Circuit Structureiii. Electrical Characteristic Consideration for I/O

Interfacingiv. Overview of the AVR Mega Parallel PORTsv. Simple I/O Devicesvi. Interfacing with a D/A Converter

14

Page 8: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

8

Electrical and Computer Engineering Dalhousie University

I/O Introduction to I/O PORTs

I/O Port: consists of a group of pins and a set of registers including data registers (or latch), data direction register, and control register(s) (optional)

I/O addressing issue: shared or distinct from memory components Address space: currently I/O devices and memory

components share the same address space.

Addressing modes and instructions

15

Electrical and Computer Engineering Dalhousie University

I/O Introduction to I/O PORTs

AVR Mega devices have dedicated I/O space that contains 64 locations from 0x20 to 0x5F

using following instructions:

16

Page 9: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

9

Electrical and Computer Engineering Dalhousie University

I/O Introduction to I/O PORTs

AVR Mega640 has more than 64 I/O

An extended I/O space from 0x60 to 0x1FF is added. only accessed using LD/LDS/LDD and ST/STS/STD

17

Electrical and Computer Engineering Dalhousie University

I/O Introduction to I/O PORTs (cont’d.)

I/O synchronization: communication with peripheral devices via interface chips Synchronization between the processor and the

interface chip

Synchronization between interface chip and peripheral devices

Synchronization issue for parallel PORTs Not an issue for today’s microcontrollers

18

Page 10: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

10

Electrical and Computer Engineering Dalhousie University

I/O Introduction to I/O PORTs (cont’d.)

Synchronization issue for serial interface Polling or the interrupt method used to make sure that

the new I/O operation can be started

Achieved by following certain data transfer protocols

USART,SPI,I2C, will be covered later.

19

Electrical and Computer Engineering Dalhousie University

I/O Pin Driving Circuit Structure

Totem pole: pin is driven high or low, according to the corresponding bit setting in the OUT register Totem pole

with pull-down

Totem pole with pull-up

Figure 8.1 Totem pole block diagram

20

Page 11: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

11

Electrical and Computer Engineering Dalhousie University

I/O Pin Driving Circuit Structure

21

Electrical and Computer Engineering Dalhousie University

I/O Pin Driving Circuit Structure (cont’d.)

Bus keeper Pin is kept at its logic level when the pin is no

longer driven to any logic state

22

Page 12: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

12

Electrical and Computer Engineering Dalhousie University

I/O Pin Driving Circuit Structure (cont’d.)

Wired-OR Pin is driven high when the corresponding bit in the OUT

register is written to 1

When OUT register is set to 0, corresponding pin is not driven and can be pulled low with the internal or an external pull-resistor

23

Electrical and Computer Engineering Dalhousie University

I/O Pin Driving Circuit Structure (cont’d.)

Wired-AND Pin is driven low when the corresponding bit in the OUT

register is written to 0

When OUTn is set to 1, the Pn pin is released, allowing the pin to be pulled high

24

Page 13: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

13

Electrical and Computer Engineering Dalhousie University

Electrical Characteristic Consideration for I/O Interfacing

Voltage-level compatibility: due to differing IC technologies Input high voltage (VIH)

Input low voltage (VIL)

Output high voltage (VOH)

Output low voltage (VOL)

For X to drive Y VOHX>=VIHY

VOLX<=VILY

25

Electrical and Computer Engineering Dalhousie University

Electrical Characteristic Consideration for I/O Interfacing

26

Page 14: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

14

Electrical and Computer Engineering Dalhousie University

Electrical Characteristic Consideration for I/O Interfacing (cont’d.)

Current drive capability Whether the microcontroller can supply (when the

output voltage is high, also called source) or sink (when the output voltage is low) the current needed by the I/O devices that it interfaces with

Input high current (IIH), flowing in, input V high

Input low current (IIL), flowing out, input V low

Output high current (IOH), flowing out, output V high

Output low current (IOL), flowing in, output V low

27

Electrical and Computer Engineering Dalhousie University

Electrical Characteristic Consideration for I/O Interfacing (cont’d.)

Timing compatibility Main consideration is that the setup- and hold-time

requirements for all latches and flip-flops in a digital system must be satisfied

28

Page 15: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

15

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs

AVR Mega MCU may have 11 parallel ports

29

Note: No PORT I

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs

Configuring the mega I/O pins DDxn bit in the DDRx register selects the direction of

the Pxn pin

Toggling the mega I/O pin SBI instruction can be used to perform this operation

30

Page 16: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

16

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs

example: Instruction sequence to output the value 0x53 to Port A.

31

ldi r16,0xFF ; configure Port A for output

out DDRA,r16 ;  “

ldi r16,0x53 ; output the value of 0x53 to Port A

out PORTA,r16;  “

// C code 

DDRA  = 0xFF; configure Port A for output

PORTA = 0x53; output the value of 0x53 to Port A

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Reading the pin value PORT pin can be read through the PINxn bit of the

PINx register

Unconnected pins Simplest method to ensure a defined level of an

unused pin is to enable the internal pull-up

Alternate PORT functions Refer to Tables 8.4 through 8.15

32

Page 17: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

17

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs

example: Instruction sequence to input the value to Port A, store in r20

33

ldi r16,0x00 ; configure Port A for input

out DDRA,r16 ;  “

in  r20, PINA ; input the value from port A to r20

// C code 

DDRA  = 0x00; configure Port A for input

r20  = PINA; input the value from port A to r20

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

34

Page 18: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

18

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

35

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

36

Page 19: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

19

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

37

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

38

Page 20: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

20

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

39

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

40

Page 21: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

21

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

41

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

42

Page 22: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

22

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

43

Electrical and Computer Engineering Dalhousie University

Overview of the AVR Mega Parallel PORTs (cont’d.)

Alternate PORT functions Refer to Tables 8.4 through 8.14

44

Page 23: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

23

Electrical and Computer Engineering Dalhousie University

Simple I/O Devices Interfacing with LEDs: indicates the system

operation mode

45

Electrical and Computer Engineering Dalhousie University

Simple I/O Devices Interfacing with LEDs: indicates the system

operation mode

example: flash all led for every 500ms

46

#include <avr/io.h> #include <util/delay.h> int main(void) { DDRK = 1<<0;

while(1) { PORTK = 0x00; _delay_ms(500); PORTK = 1<<0; _delay_ms(500); } }

Page 24: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

24

Electrical and Computer Engineering Dalhousie University

Simple I/O Devices Interfacing with seven-segment displays: used

for decimal digits and a small subset of letters

47

Electrical and Computer Engineering Dalhousie University

Simple I/O Devices Interfacing with seven-segment displays:

decoder

48

Page 25: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

25

Electrical and Computer Engineering Dalhousie University

Simple I/O Devices Interfacing with seven-segment displays: used

for decimal digits and a small subset of letters

49

Display #5 to 0 following pattern for 600ms repeated:

123456

234567

345678

456789

567890

678901

789012

890123

901234

012345

Electrical and Computer Engineering Dalhousie University

Seven Segment Display Example

50

.include "atxmega128A1def.inc"

.def rowCnt = r26

.def digCnt = r27

.def repCnt = r28

.cseg

.org 0x00

rjmp start

.org 0xF6

start: ldi r16,low(RAMEND)

out CPU_SPL,r16          ; SPL for MEGA

ldi r16,high(RAMEND)

out CPU_SPH,r16          ; SPH for MEGA

call setCPUClkto32Mwith16MCrystal

ldi  r16, 0xFF

sts PORTA_DIR, r16

sts PORTB_DIR,r16

forever: ldi ZL,low(segTable << 1)

ldi ZH,high(segTable << 1)

ldi rowCnt,10 ; there are ten rows in segTable

rowLp: ldi repCnt,100 ; a row in segTable must be repeated for 100 times

repLp: ldi digCnt,6 ; each row has six digits

Page 26: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

26

Electrical and Computer Engineering Dalhousie University

Seven Segment Display Example

51

digLp: lpm r16,z+

sts PORTA_OUT,r16 ; output segment pattern

lpm r16,z+

sts PORTB_OUT,r16 ; output digit select

ldi r16,1

call delayby1ms

dec digCnt

brne digLp ; reach the end of a sequence?

subi ZL,12 ; reset segment pattern pointer to the start of a sequence

sbci ZH,0 ; "

dec repCnt ; repeat 100 times?

brne repLp

dec rowCnt

brne rowLp

jmp forever

Electrical and Computer Engineering Dalhousie University

Seven Segment Display Example

52

. segTable: .db 0x30,0xDF,0x6D,0xEF,0x79,0xF7,0x33,0xFB,0x5B,0xFD,0x5F,0xFE

.db 0x6D,0xDF,0x79,0xEF,0x33,0xF7,0x5B,0xFB,0x5F,0xFD,0x70,0xFE

.db 0x79,0xDF,0x33,0xEF,0x5B,0xF7,0x5F,0xFB,0x70,0xFD,0x7F,0xFE

.db 0x33,0xDF,0x5B,0xEF,0x5F,0xF7,0x70,0xFB,0x7F,0xFD,0x7B,0xFE

.db 0x5B,0xDF,0x5F,0xEF,0x70,0xF7,0x7F,0xFB,0x7B,0xFD,0x7E,0xFE

.db 0x5F,0xDF,0x70,0xEF,0x7F,0xF7,0x7B,0xFB,0x7E,0xFD,0x30,0xFE

.db 0x70,0xDF,0x7F,0xEF,0x7B,0xF7,0x7E,0xFB,0x30,0xFD,0x6D,0xFE

.db 0x7F,0xDF,0x7B,0xEF,0x7E,0xF7,0x30,0xFB,0x6D,0xFD,0x79,0xFE

.db 0x7B,0xDF,0x7E,0xEF,0x30,0xF7,0x6D,0xFB,0x79,0xFD,0x33,0xFE

.db 0x7E,0xDF,0x30,0xEF,0x6D,0xF7,0x79,0xFB,0x33,0xFD,0x5B,0xFE

.include "sysClock_xmega.asm"

.include "delays_xmega.asm"

Page 27: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

27

Electrical and Computer Engineering Dalhousie University

Seven Segment Display Example

53

The C language version of the program is as follows:#include <avr/io.h>

#include "delays_xmega.h"

#include "sysClock_xmega.h"

#define ROWS 10

#define REPCNT 100

#define DIGITS 6

unsigned char segTable[10][12] = {

{0x30,0xDF,0x6D,0xEF,0x79,0xF7,0x33,0xFB,0x5B,0xFD,0x5F,0xFE},

{0x6D,0xDF,0x79,0xEF,0x33,0xF7,0x5B,0xFB,0x5F,0xFD,0x70,0xFE},

{0x79,0xDF,0x33,0xEF,0x5B,0xF7,0x5F,0xFB,0x70,0xFD,0x7F,0xFE},

{0x33,0xDF,0x5B,0xEF,0x5F,0xF7,0x70,0xFB,0x7F,0xFD,0x7B,0xFE},

{0x5B,0xDF,0x5F,0xEF,0x70,0xF7,0x7F,0xFB,0x7B,0xFD,0x7E,0xFE},

{0x5F,0xDF,0x70,0xEF,0x7F,0xF7,0x7B,0xFB,0x7E,0xFD,0x30,0xFE},

{0x70,0xDF,0x7F,0xEF,0x7B,0xF7,0x7E,0xFB,0x30,0xFD,0x6D,0xFE},

{0x7F,0xDF,0x7B,0xEF,0x7E,0xF7,0x30,0xFB,0x6D,0xFD,0x79,0xFE},

{0x7B,0xDF,0x7E,0xEF,0x30,0xF7,0x6D,0xFB,0x79,0xFD,0x33,0xFE},

{0x7E,0xDF,0x30,0xEF,0x6D,0xF7,0x79,0xFB,0x33,0xFD,0x5B,0xFE}

};

Electrical and Computer Engineering Dalhousie University

Seven Segment Display Example

54

int main(void)

{

unsigned char k1, k2, k3;

setCPUClkto32Mwith16MCrystal();

PORTA_DIR = 0xFF; // configure Port A for output , PORTA= 0xFF for MEGA

PORTB_DIR = 0xFF; // configure Port B for output to drive digit select

while(1) {

for(k1 = 0; k1 < ROWS; k1++)

for(k2 = 0; k2 < REPCNT; k2++)

for(k3 = 0; k3 < DIGITS; k3++) {

PORTA_OUT = segTable[k1][k3*2];

PORTB_OUT = segTable[k1][k3*2+1];

delayby1ms(1);

}

}

}

Page 28: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

28

Electrical and Computer Engineering Dalhousie University

Simple I/O Devices (cont’d.)

Generating a digital waveform using an I/O pin: I/O voltage level manipulated and an appropriate delay (equal to half of the waveform period) inserted between the two voltage levels

Making a sound using an I/O pin Create a frequency in audible range with pin

connected to a speaker

55

Electrical and Computer Engineering Dalhousie University

Simple I/O Devices (cont’d.)

Interfacing with DIP switches: INPUT

56

// code for MEGA

ldi r16,0x00 ; input

out DDRJ,r16 ;  “

in  r20, PINJ ;to r20

// C code for MEGA

DDRJ  = 0x00; for input

r20  = PINJ;to r20

Page 29: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

29

Electrical and Computer Engineering Dalhousie University

Interfacing with a D/A Converter

Important DAC characteristics Resolution

Conversion time

Number of channels

Input format

57

Electrical and Computer Engineering Dalhousie University

Interfacing with a D/A Converter

The AD7302 DAC: dual-channel, 8-bit, DAC chip from Analog Devices that has a parallel interface with the microcontroller

58

Vout=2*VREF*N/255

Page 30: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

30

Electrical and Computer Engineering Dalhousie University

Interfacing with a D/A Converter (cont’d.)

Figure 8.22 Circuit connection between the AD7302 and the Mega2560

59

Electrical and Computer Engineering Dalhousie University

D/A Converter example

Use figure 8.22 assembly program to generate a triangular wave from VoutA pin and sine wave from the VoutB pin, assuming that the MEGA2560 is running with an 8 MHz crystal oscillator. Divide both waveforms into 50 points per period

60

Page 31: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

31

Electrical and Computer Engineering Dalhousie University

D/A Converter example

61

Solution: To divide 360 into 50 points, then the sine waveform starts 

from 0o to 352.8o and repeats. Since there is no negative value in the 

sine waveform, we need to use the following equation to calculate 

the voltage corresponding to xo:

Voltage= 5/2 * [sine(x) + 1]

To generate this voltage, we need to send the following value to the 

DAC:

N = (sine x + 1) * 255 / 2

For example, we need to send 127 (or 128) to DAC to generate the 

sine wave value at 0o.

Electrical and Computer Engineering Dalhousie University

D/A Converter example

62

.include <m2560def.inc>

.def lpCnt = r26

.equ NN = 100

.cseg

.org 0x00

rjmp start

.org 0xF6

start: ldi r16,low(RAMEND)

out SPL,r16

ldi r16,high(RAMEND)

out SPH,r16

ldi r16,0xFF ; configure PORTA for output

sts DDRA,r16 ; "

sts DDRB,r16 ; configure PORTB for output

forever: ldi ZL,low(waveforms << 1) ; use Z as a pointer to the table

ldi ZH,high(waveforms << 1) ; "

ldi lpCnt,NN

Page 32: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

32

Electrical and Computer Engineering Dalhousie University

D/A Converter example

63

loop: cbi PORTB,1 ; select channel A

cbi PORTB,0 ; enable data write to DAC

lpm r16,Z+ ; output data to be converted to voltage

out PORTA,r16 ; "

sbi PORTB,0 ; pull WR high to start DAC

sbi PORTB,1 ; select channel B

cbi PORTB,0 ; enable data write to DAC

lpm r16,Z+ ; output data to be converted to voltage

out PORTA,r16 ; "

sbi PORTB,0 ; start DAC

nop ; insert time to allow DAC complete

nop ; conversion

nop

nop

dec lpCnt ; reach the end of waveform table?

brne loop

rjmp forever

Electrical and Computer Engineering Dalhousie University

D/A Converter example

64

; ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

; Values to generate the triangular and sine waves are stored alternately in the same

; table to simplify data access.

; ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

waveforms:

.db 0,128,10,143,20,159,31,174,41,189,51,202,61,215,71,226,82,235,92,243

.db 102,249,112,253,122,255,133,255,143,253,153,249,163,243,173,235

.db  184,226,194,215,204,202,214,189,224,174,235,159,245,143,255,128

.db 245,112,235,96,224,81,214,66,204,53,194,40,184,29,173,20,163,12,153,6

.db 143,2,133,0,122,0,112,2,102,6,92,12,82,20,71,29,61,40,51,53

.db 41,66,31,81,20,96,10,112

Page 33: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

33

Electrical and Computer Engineering Dalhousie University

Part III.3 Interrupt Handling, Resets,and Power Management

65

Electrical and Computer Engineering Dalhousie University 66

Outline

i. Basic Concepts on Interruptii. Resetsiii. The AVR Mega Interruptsiv. AVR Mega Resetv. AVR Mega Watchdog Timervi. Power Management and Sleep Modes

6666

Page 34: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

34

Electrical and Computer Engineering Dalhousie University

Basic Concepts on Interrupt

Interrupt: asynchronous signal indicating the need for attention, or a synchronous event in software indicating the need for a change in execution Hardware interrupt: state of execution saved;

execution of an interrupt handler (interrupt service routine) begins

Software interrupt: implemented as instructions in the instruction set

67

Electrical and Computer Engineering Dalhousie University

Basic Concepts on Interrupt (cont’d.)

Why interrupt is useful I/O operations

Example: polling to determine data availability for data in or data our, CPU time is wasted. Using interrupt can prevent that

Routine tasks Example: updating/redisplaying time of day, using timer

interrupts.

Response to emergent events Examples: fire alarm, power failure, or overheat

68

Page 35: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

35

Electrical and Computer Engineering Dalhousie University

Basic Concepts on Interrupt (cont’d.)

Enabling and disabling interrupts Maskable interrupt (can be disabled) vs. nonmaskable interrupt

Prioritizing multiple interrupts: how to handle several interrupts pending at same time

Servicing the interrupt CPU executes interrupt service routine and then

resumes the interrupted program

note: The last instruction of an interrupt service routine must be

return from interrupt (RETI)

69

Electrical and Computer Engineering Dalhousie University

Basic Concepts on Interrupt (cont’d.)

The interrupt vector: starting address of the interrupt service routine Stored in a fixed location in the interrupt vector table

Writing an Interrupt-driven program Step 1: Initialization of interrupt vector table (no need

for MEGA MCU)

Step 2: Write the service routine

Step 3: Enable interrupts

70

Page 36: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

36

Electrical and Computer Engineering Dalhousie University

Resets

Power-up reset: all critical registers, the program counters, and flip-flops are forced to a default value

Other reset sources: manual reset, brown-out reset, watchdog reset, clock monitor reset, software reset, etc.

71

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts

Categories of interrupt sources Internal peripheral interrupts

External pin interrupts (INT0-INT7)

Pin change interrupts (PCINT0-PCINT2)

AVR Mega device interrupt vectors ATMega640/1280/2560: 100-pin Mega devices

See Table 9.1

72

Page 37: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

37

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts

73

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts

74

Page 38: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

38

Electrical and Computer Engineering Dalhousie University

The AVR Mega Reset and Interrupt Vectors Placement

75

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts (cont’d.)

The Mega AVR microcontroller configuration register (MCUCR): controls interrupt vectors placement; controls enabling of I/O pins pull-up and the JTAG interface

76

Page 39: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

39

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts (cont’d.)

Special instruction to change the IVSEL bit In r16,MCUCR

Mov r17,r16

Ori r16,(1<<IVCE) ; set the IVCE bit

Out MCUCR,r16

Ori r17,(1<<IVSEL) ; set the IVSEL bit and clear the IVCE bit

Out MCUCR,r17

Instruction in C Unsigned char temp;

Temp = MCUCR;

MCUCR = temp | (1<<IVCE); //sets the IVCE

MCUCR = temp | (1<<IVSEL); //sets IVSEL & clear IVCE

77

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts (cont’d.)

AVR Mega external interrupt pins INT7:0 pins trigger interrupt requests to the MCU; pins

shared with PORTD (0-3) and E (4-7), controlled by EICRA and EICRB register.

78

Page 40: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

40

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts (cont’d.)

79

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts (cont’d.)

EIMSK to enable the interrupt and EIFR to flag the interrupt.

80

Page 41: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

41

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts : example

81

Example: Write an instruction sequence to enable INT0 and INT1 interrupt. INT0 on rise edge and INT1 on falling edge.

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts : example

82

.include  <m644Adef.inc>

.def tmp = r16

.cseg

.org 0x00

jmp start

jmp INT0_Vect

.org 0xF6

Start:

ldi tmp, low(RAMEND)

out SPL,tmp

ldi tmp, high(RAMEND)

out  SPH, tmp

lds tmp,DDRD ; configure PD0/INT0, PD1/INT1 for input

andi tmp,0xFC

sts DDRD,tmp

ldi tmp, 0x0B

sts EICRA, tmp            ; //INT0 on rising edge, INT1 on falling edge

ldi tmp,0x03 ;  "

sts EIMSK,tmp ; // enable INT0,INT1

sei

again:   jmp again ;// loop

INT0_Vect: nop

reti

Code in Assembling,compiled

Page 42: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

42

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts : example

83

#include  <avr\io.h>

#include  <avr\interrupt.h>

unsigned char cnt;

int main (void)

{

DDRD &= 0xFC ; //configure PD0/INT0, PD1/INT1 for input

EICRA =0x0B            ; //INT0 on rising edge, INT1 on falling edge

EIMSK =0x03 ; // enable INT0,INT1

sei();

cnt =0;

while(1); //wait for interrupt

}

// INT0 interrupt

ISR(INT0_vect)

{

cnt++;

}

// INT1 interrupt

ISR(INT1_vect)

{

cnt++;

}Code in C (compiled)

Electrical and Computer Engineering Dalhousie University

Pin change interrupt ATMega640/1280/2560 has 24 pins (PCINT23~0) that

generate interrupt whenever one or more of these pins toggle, PCINT23-16 pin toggles will trigger PCINT2; PCINT15-8 pin toggles will trigger PCINT1; PCINT7-0 pin toggles will trigger PCINT0;

PCICR register enable three pin change interrupts

PCIFR flag the interrupts

PCMSK2,1,0 control the enabling and disabling 24 pins

The AVR Mega Interrupts (cont’d.)

84

Page 43: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

43

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts (cont’d.)

85

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts (cont’d.)

86

Page 44: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

44

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts (cont’d.)

87

Electrical and Computer Engineering Dalhousie University

Writing interrupt service routine in C for AVR Mega devices

The AVR Mega Interrupts (cont’d.)

88

Page 45: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

45

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts (cont’d.)

Interrupt service routine format required by AVR Studio C compiler

ISR (vector number of the interrupt){

. . .}

Symbolic names of all interrupt vector numbers and interrupt vectors have been defined in the appropriate header file (C lang.) and include file (assembly lang.)

89

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts : example

90

Example: Write a sequence of C statements to configure PCINT0, PCINT1, PCINT4, PCINT8, PCINT9, PCINT14, PCINT18, PCINT20, and PCINT23 to interrupt the MEGA CPU.

Solution:#include <avr\io.h>

#include <avr\interrupt.h>

unsigned char cnt;int main(void)

{

PCMSK2 = 0x94; // enable PCINT23, PCINT20, and PCINT18, 10010100

PCMSK1 = 0x43; // enable PCINT14, PCINT9, and PCINT8, 01000011

PCMSK0 = 0x13; // enable PCINT4, PCINT1, and PCINT0, 00010011

PCICR = 0x07; // enable interrupts PCINT2~PCINT0, 00000111

sei(); // enable interrupt globally

cnt=0;while(1);}

ISR(PCINT0_vect)

{

cnt++;

} code in assembling??

Page 46: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

46

Electrical and Computer Engineering Dalhousie University

The AVR Mega Interrupts (cont’d.)

91

Electrical and Computer Engineering Dalhousie University

AVR Mega Reset

Power-on reset: supply voltage is below the power-on reset threshold (VPOT)

External reset: low level is present on the RESET pin for longer than the minimum pulse width

Brown-out reset: supply voltage VCC is lower than the brown-out reset threshold (VBOT–) and the brown out detector is enabled

92

Page 47: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

47

Electrical and Computer Engineering Dalhousie University

AVR Mega Reset (cont’d.)

JTAG AVR reset: while logic 1 exists in the reset register

Watchdog reset: watchdog timer overflows and the watchdog is enabled

Reset service routine finds out the cause of reset by examining the MCU status register (MCUSR)

93

Electrical and Computer Engineering Dalhousie University

AVR Mega Reset (cont’d.)

94

Page 48: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

48

Electrical and Computer Engineering Dalhousie University

AVR Mega Watchdog Timer

Derives its clock signal from an on-chip 128 kHz oscillator

Triggers an interrupt or reset when the counter overflows

Timing out is prevented by executing the WDR instruction to restart the WDT

95

Electrical and Computer Engineering Dalhousie University

AVR Mega Watchdog Timer

96

Page 49: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

49

Electrical and Computer Engineering Dalhousie University

AVR Mega Watchdog Timer

97

Electrical and Computer Engineering Dalhousie University

AVR Mega Watchdog Timer

98

Practice in assignment

Page 50: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

50

Electrical and Computer Engineering Dalhousie University

Power Management and Sleep Modes

IDLE mode

ADC noise reduction mode

Power-down mode

Power-save mode

Standby mode

Extended standby mode

Power reduction register

Mega sleep modes

99

Electrical and Computer Engineering Dalhousie University

Power Management and Sleep Modes

100

Page 51: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

51

Electrical and Computer Engineering Dalhousie University

Power Management and Sleep Modes

101

ldi r16,0x0F;extended standby

sts SMCR,r16

sleep

SMCR = 0x0F;

_asm__volatile_(“sleep”);

Electrical and Computer Engineering Dalhousie University

Power Reduction Modes

102

Configure PRR0 & PRR1 register to disable the clock to some modules.

Page 52: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

52

Electrical and Computer Engineering Dalhousie University

Power Reduction Modes

103

Configure PRR0

Electrical and Computer Engineering Dalhousie University

Power Reduction Modes

104

Configure PRR1

Page 53: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

53

Electrical and Computer Engineering Dalhousie University

Part III.4 Advanced Parallel I/O

105

Electrical and Computer Engineering Dalhousie University 106

Outline

i. Interfacing a Parallel PORT to a Keypadii. Driving the Stepper Motoriii. Direct Memory Access (DMA) Transferiv. Liquid Crystal Displays (LCDs)

106106

Page 54: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

54

Electrical and Computer Engineering Dalhousie University

Interfacing a Parallel PORT to a Keypad

Keypad: arranged as an array of switches (mechanical, membrane, capacitive, or Hall effect construction) Mechanical keypads

Advantages: low cost and construction strength

Disadvantage: contact bounce

107

Electrical and Computer Engineering Dalhousie University

Interfacing a Parallel PORT to a Keypad (cont’d.)

Keypad input program stages Keypad Scanning: performed row by row and

column by column

Keyboard DebouncingHardware debouncing techniques Set-reset latches

Noninverting CMOS buffer with high input impedance

Integrated debouncers

108

Page 55: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

55

Electrical and Computer Engineering Dalhousie University

Interfacing a Parallel PORT to a Keypad (cont’d.)

Hardware debouncing techniques

109

Electrical and Computer Engineering Dalhousie University

Interfacing a Parallel PORT to a Keypad (cont’d.)

110

Page 56: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

56

Electrical and Computer Engineering Dalhousie University

Interfacing a Parallel PORT to a Keypad (cont’d.)

Keypad input program stages (cont’d.) Keyboard debouncing

Software debouncing techniques Wait-and-see: adequate for most applications

ASCII code lookup: can be embedded in the program that performs the scanning and debouncing

Keypad interfacing and coding will be used in lab3

111

Electrical and Computer Engineering Dalhousie University

Driving the Stepper Motor

Stepper motors: digital motors Convenient for applications where a high degree of

positional control is required

Principles of rotation Clockwise full-step rotation

Counterclockwise full-step rotation

112

Page 57: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

57

Electrical and Computer Engineering Dalhousie University

Driving the Stepper Motor

113

Clockwise full-step rotation

Counterclockwise full-step rotation (reverse the polarities of C3,C4)

Electrical and Computer Engineering Dalhousie University

Driving the Stepper Motor

114

Half-step operation: rotor (in a four-pole step) is moved to eight discrete positions (45 degrees)

Page 58: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

58

Electrical and Computer Engineering Dalhousie University

Driving the Stepper Motor (cont’d.)

Discrete stepper motor drivers See Figure 10.8 Driving a stepper motor

Transistors: switch the current to each of the coils

Fly-back diodes: protect the transistors from reverse bias

Transistor loads: windings in the stepper motor

Windings: inductors, storing energy as magnetic field

Integrated stepper motor driver Darlington array chip ULN2003: replacement to discrete

transistors

115

Electrical and Computer Engineering Dalhousie University

Driving the Stepper Motor (cont’d.)

116

Page 59: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

59

Electrical and Computer Engineering Dalhousie University

Driving the Stepper Motor (cont’d.)

117

Electrical and Computer Engineering Dalhousie University

Driving the Stepper Motor (cont’d.)

118

Page 60: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

60

Electrical and Computer Engineering Dalhousie University

Driving the Stepper Motor (cont’d.)

Integrated stepper motor driver Darlington array chip ULN2003: replacement to discrete

transistors

119

Electrical and Computer Engineering Dalhousie University

Driving the Stepper Motor (cont’d.)

Write subroutine to rotate the motor sent the data to PORTA in sequence

straight forward

see text example

120

Page 61: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

61

Electrical and Computer Engineering Dalhousie University

Direct Memory Access (DMA) Transfer

Data transfer in which the CPU is responsible for setup; CPU not involved during the data transfer phase

MEGA AVU 8 bit doesn’t have DMA

MEGA 32 bit has DMA

XMega has DMA controller brief introduction

121

Electrical and Computer Engineering Dalhousie University

Direct Memory Access (DMA) Transfer (cont’d.)

DMA registers Control register (CTRL)

Status register (STATUS)

Interrupt flag register (INTFLAGS)

16-bit temporary register (TEMP): controls the overall operation

DMA channel operation: supported by it own set of registers

122

Page 62: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

62

Electrical and Computer Engineering Dalhousie University

Direct Memory Access (DMA) Transfer (cont’d.)

123

Electrical and Computer Engineering Dalhousie University

Direct Memory Access (DMA) Transfer (cont’d.)

124

Page 63: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

63

Electrical and Computer Engineering Dalhousie University

Direct Memory Access (DMA) Transfer (cont’d.)

125

Electrical and Computer Engineering Dalhousie University

Table 10.4 DMA channel register summary

126

Direct Memory Access (DMA) Transfer (cont’d.)

Page 64: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

64

Electrical and Computer Engineering Dalhousie University 127

Direct Memory Access (DMA) Transfer (cont’d.)

Example:  Write a sequence of C statements to configure the DMA transfer from 

channel A of the Timer/Counter1 associated with Port F and data memory starting 

from 0x2000.Solution: 

DMA.CTRL |= DMA_ENABLE_bm; // enable DMA 

DMA.CH0.CTRLA  |= DMA_CH_ENABLE_bm; // enable DMA channel 0

DMA.CH0.CTRLA  = 0x81;  // set DMA channel 0 burst length to 2 bytes

DMA.CH0.ADDRCTRL  = 0x91;  // source reload on burst, destination no reload

DMA.CH0.TRIGSRC  = DMA_CH_TRIGSRC_TCC0_CCA_gc;

DMA.CH0.TRFCNT  = 1024;

DMA.CH0.SRCADDR0  = (uint32_t)((uint16_t)(&TCC1.CCA)) & 0xFF;

DMA.CH0.SRCADDR1  = (uint32_t)(((uint16_t)(&TCC1.CCA))>>8) & 0xFF;

DMA.CH0.SRCADDR2  = (uint32_t)(((uint16_t)(&TCC1.CCA))>>16) & 0xFF;

DMA.CH0.DESTADDR0  = 0;

DMA.CH0.DESTADDR1  = 0x20;

DMA.CH0.DESTADDR2  = 0;

while(!(DMA.CH0.CTRLB & DMA_CH_TRNIF_bm)); // wait for DMA transfer to complete

Electrical and Computer Engineering Dalhousie University

Liquid Crystal Displays (LCDs)

Advantages High contrast

Low power consumption

Small footprint

Ability to display both characters and graphics

128

Page 65: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

65

Electrical and Computer Engineering Dalhousie University

Figure 10.18 A liquid crystal display (LCD)

129

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller

Figure 10.19 Block diagram of a HD44780-based LCD kit

130

Page 66: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

66

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

Display data RAM (DDRAM) Stores display data represented in 8-bit character

codes

Extended capacity is 80 x 8 bits (80 characters)

Character generator ROM (CGROM) Generates 5 x 8- or 5 x10-dot character patterns from

8-bit character codes

131

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

Character generator RAM (CGRAM) Permits user to define his or her own character fonts

LCD controller registers Instruction register (IR): stores instruction codes

Data register (DR): data written into the DR register are automatically written into the DDRAM or the CGRAM by an internal operation

132

Page 67: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

67

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

Clear display

Return home

Entry mode set

Cursor or display shift

Function set

Set CGRAM address

Set DDRAM address

Read busy flag and address

• Instructions

133

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

134

Page 68: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

68

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

135

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

136

Note: for 2 line, and 4 line refer to text

Page 69: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

69

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

137

Note: over 80 characters refer to text

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

138

Page 70: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

70

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

Interfacing the HD44780 to the AVR microcontroller Data transfer between the HD44780 and the Atmel

AVR can be done in 4 bits or 8 bits at a time

Choice of using I/O PORTs to interface with the LCD module or treating the LCD as a memory device

139

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

140

Page 71: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

71

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

141

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

LCD Startup Sequence: Power on Wait 30 ms Execute function set instruction

Wait 40 ms Execute display control instruction – Wait 40 ms Execute display clear instruction Wait 1.64 ms Execute entry mode set instruction Wait 40 ms OK

See Figure 10.23 next slide

142

Page 72: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

72

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

143

Electrical and Computer Engineering Dalhousie University

The HD44780 LCD Controller (cont’d.)

Writing LCD programs

Example: Procedure for sending a command to the IR register Step 1: Pull the RS and the E signals to low

Step 2: Pull the R/W signal to low

Step 3: Pull the E signal to high

144

Page 73: ECED3204: Microprocessor Part III--Clock, I/O and …jasongu.org/3204/pt3.pdf · ECED3204: Microprocessor Part III--Clock, ... The Clock System of the AVR Mega Devices 6. ... Interfacing

11/3/2015

73

Electrical and Computer Engineering Dalhousie University

Example: Procedure for sending a command to the IR register (cont’d.)

Step 4: Output the given LCD instruction to the I/O PORT attached to the LCD data bus; the I/O PORT connected to the LCD data bus must be configured for output before this can be doneStep 5: Pull the E signal to low, and make sure that the internal operation is completed; this is achieved by calling a delay subroutine

Refer to Examples 10.4 through 10.8

145

Electrical and Computer Engineering Dalhousie University

All kinds utility in Asm for LCD lcdUtil_xmega.asm

All kinds utility in C for LCD lcdUtil_xmega_c

Display two line message in C for LCD eg10_08c

C head file lcdUtil_xmega_h

C test file lcdTest.c

146

The HD44780 LCD Controller (Examples)