AVR Microcontrollers- Introduction AVR Microcontrollers Widely-used - - PowerPoint PPT Presentation

avr microcontrollers introduction avr microcontrollers
SMART_READER_LITE
LIVE PREVIEW

AVR Microcontrollers- Introduction AVR Microcontrollers Widely-used - - PowerPoint PPT Presentation

Microprocessors, Lecture 3: AVR Microcontrollers- Introduction AVR Microcontrollers Widely-used microcontroller Different families Based on the application and Flash memory capacity Classic AVR e.g. AT90S2313, AT90S4433


slide-1
SLIDE 1

AVR Microcontrollers- Introduction

Microprocessors, Lecture 3:

slide-2
SLIDE 2

AVR Microcontrollers

2

Widely-used microcontroller Different families

Based on the application and Flash memory capacity

Classic AVR

e.g. AT90S2313, AT90S4433

Mega

e.g. ATmega8, ATmega32, ATmega128

Tiny

e.g. ATtiny13, ATtiny25

Special Purpose AVR

e.g. AT90PWM216,AT90USB1287

slide-3
SLIDE 3

3

AVR internal architecture

PROGRAM ROM

Ports OSC

CPU

Timers Other Peripherals Program Bus Bus RAM

I/O PINS

EEPROM Interrupt Unit

3

slide-4
SLIDE 4

AVR’s CPU

4

CPU:

RISC architecture 131 instructions Most instructions are executed in a single cycle 32 general-purpose registers 64 IO registers Many useful peripherals

Very low-power

less than 10mW power consumption

slide-5
SLIDE 5

5

AVR’s CPU

AVR’s CPU

ALU 32 General Purpose registers (R0

to R31)

PC register Instruction decoder

Almost the same for all

families

CPU

PC

ALU

registers

R1 R0 R15 R2

R16 R17

R30 R31

Instruction Register

Instruction decoder

SREG:

I T H S V N C Z

5

slide-6
SLIDE 6

SREG flags

6

Not all instructions affect flags

Example: load instruction has nothing to do with flags

slide-7
SLIDE 7

Decision making by flags

7

slide-8
SLIDE 8

Memory address space

8

A unified address space 32 general-purpose registers

Directly connected to the ALU

64 IO registers

To keep the data sent to/

received from peripherals

Stack

Starting from the end of SRAM

and grow up to lower addresses

Indexed by SPL-SPH registers

slide-9
SLIDE 9

Internal busses

9

slide-10
SLIDE 10

10

Some simple instructions

  • 1. Loading values into the general purpose registers

LDI (Load Immediate)

  • LDI Rd, k
  • Its equivalent in high level languages:

Rd = k

  • Example: LDI R16,53
  • R16 = 53

LDS (Load from SRAM)

LDS R0,0x300 Load R0 by data from

address 300

10

slide-11
SLIDE 11

11

Some simple instructions

  • 2. Arithmetic calculation
  • There are some instructions for doing arithmetic and logic
  • perations; such as:

ADD, SUB, MUL, AND, etc.

  • ADD Rd,Rs
  • Rd = Rd + Rs
  • Example:
  • ADD R25, R9
  • R25 = R25 + R9
  • ADD R17,R30
  • R17 = R17 + R30

11

slide-12
SLIDE 12

12

Some simple instructions

  • 3. store
  • No immediate value store! Just stores can be done through

registers

12

slide-13
SLIDE 13

13

Some simple instructions

  • 3. IN and OUT
  • Each IO register can be addressed in two ways:
  • Memory address
  • IO address (relative to the beginning of the IO registers)
  • “IN” and “OUT” use the IO address
  • example: IN r1,0x16 ;// copy IO register no. 10 (memory

address 0x36 to r1)

13

slide-14
SLIDE 14

Some other instructions

14

slide-15
SLIDE 15

ALU instructions

15

slide-16
SLIDE 16

Single operand instructions

16

slide-17
SLIDE 17

Directives

17

Like directives in high level languages For core readability Not instructions that generate machine code after compile Example: EQU

To set a constant value Equivalent to CONSTANT in C++

slide-18
SLIDE 18

Other directives

18

slide-19
SLIDE 19

AVR data size

19

AVR just has 8-bit data Programmer or compiler has to break larger data into 8-bit

units

slide-20
SLIDE 20

20

A simple program

Write a program that calculates 19 + 95

LDI R16, 19 ;R16 = 19 LDI R20, 95 ;R20 = 95 ADD R16, R20 ;R16 = R16 + R20

CPU

PC

ALU

registers

R1 R0 R15 R2

R16 R17

R30 R31

Instruction Register

Instruction decoder

SREG:

I T H S V N C Z

20

slide-21
SLIDE 21

Code memory

21

The program after compiling is stored in a ROM (flash

memory)

To keep the code even when the system is powered off Data is stored in another memory (SRAM)

In AVR each code memory location is 2-bytes In Atmega32, 32K flash memory is organized as 16Kx16

words

Needs 14-bit PC

slide-22
SLIDE 22

Instruction size

22

Almost all instructions are 2 bytes Example: 1110: machine code for LDI Kkkk…= imidiate value dddd= destination register

slide-23
SLIDE 23

Another example

23

slide-24
SLIDE 24

32-bit instructions

24

slide-25
SLIDE 25

ATmega32

25

16 MHz clock frequency 44 pins 32 KB instruction memory (Flash) 1KB data memory (EEPROM) 2048 B data memory (SRAM) SPI, USART, and I2C serial ports 3 timers 8 10-bit ADC channels Analog comparator 4 PWM ports …….

slide-26
SLIDE 26

ATMega32 pins

4 8-bit ports PA, PB, PC, PD Multiplexed with other

in-outs

26

slide-27
SLIDE 27

AVR programming

27

Assembly: AVR Studio C: Code Vision