microprocessors, lecture 3
Post on 17-Oct-2021
5 Views
Preview:
TRANSCRIPT
AVR Microcontrollers- Introduction
Microprocessors, Lecture 3:
AVR Microcontrollers
2
Widely-used microcontroller
Different familiesBased on the application and Flash memory capacity
Classic AVRe.g. AT90S2313, AT90S4433
Megae.g. ATmega8, ATmega32, ATmega128
Tinye.g. ATtiny13, ATtiny25
Special Purpose AVRe.g. AT90PWM216,AT90USB1287
3
AVR internal architecture
PROGRAM ROM
PortsOSC
CPU
Timers
OtherPeripherals
ProgramBus Bus
RAM
I/O PINS
EEPROM
Interrupt Unit
3
AVR’s CPU
4
CPU:RISC architecture131 instructionsMost instructions are executed in a single cycle32 general-purpose registers64 IO registersMany useful peripherals
Very low-powerless than 10mW power consumption
5
AVR’s CPU
AVR’s CPUALU
32 General Purpose registers (R0 to R31)
PC register
Instruction decoder
Almost the same for all families
CPUPC
ALU
registers
R1
R0
R15
R2
…
R16
R17
…
R30
R31
Instruction Register
Instruction decoder
SREG: I T H S V N CZ
5
SREG flags
6
Not all instructions affect flagsExample: load instruction has nothing to do with flags
Decision making by flags
7
Memory address space
8
A unified address space
32 general-purpose registersDirectly connected to the ALU
64 IO registersTo keep the data sent to/ received from peripherals
StackStarting from the end of SRAM and grow up to lower addressesIndexed by SPL-SPH registers
Internal busses
9
10
Some simple instructions1. 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,0x300Load R0 by data from address 300
10
11
Some simple instructions2. Arithmetic calculation
There are some instructions for doing arithmetic and logic operations; such as:
ADD, SUB, MUL, AND, etc.
ADD Rd,RsRd = Rd + Rs
Example:
ADD R25, R9
R25 = R25 + R9
ADD R17,R30
R17 = R17 + R30
11
12
Some simple instructions3. store
No immediate value store! Just stores can be done through registers
12
13
Some simple instructions3. IN and OUT
Each IO register can be addressed in two ways:Memory addressIO 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
Some other instructions
14
ALU instructions
15
Single operand instructions
16
Directives
17
Like directives in high level languages
For core readability
Not instructions that generate machine code after compile
Example: EQUTo set a constant valueEquivalent to CONSTANT in C++
Other directives
18
AVR data size
19
AVR just has 8-bit data
Programmer or compiler has to break larger data into 8-bit units
20
A simple programWrite a program that calculates 19 + 95
LDI R16, 19 ;R16 = 19
LDI R20, 95 ;R20 = 95
ADD R16, R20 ;R16 = R16 + R20
CPUPC
ALU
registers
R1R0
R15
R2
…
R16R17
…
R30R31
Instruction Register
Instruction decoder
SREG: I T H S V N CZ
20
Code memory
21
The program after compiling is stored in a ROM (flash memory)
To keep the code even when the system is powered offData 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
Instruction size
22
Almost all instructions are 2 bytesExample:
1110: machine code for LDIKkkk…= imidiate valuedddd= destination register
Another example
23
32-bit instructions
24
ATmega32
25
16 MHz clock frequency44 pins32 KB instruction memory (Flash)1KB data memory (EEPROM)2048 B data memory (SRAM)SPI, USART, and I2C serial ports3 timers8 10-bit ADC channelsAnalog comparator4 PWM ports…….
ATMega32 pins
4 8-bit ports
PA, PB, PC, PD
Multiplexed with other in-outs
26
AVR programming
27
Assembly: AVR Studio
C: Code Vision
top related