Download as pdf or txt
Download as pdf or txt
You are on page 1of 40

KIẾN TRÚC AVR

Võ Thị Thu Hồng 1


AVR là vi điều khiển 8 bit dạng RISC (Reduced
Instruction Set Computer) theo kiến trúc Harvard.

Von neumann
Harvard

Võ Thị Thu Hồng 2


Họ vi điều khiển AVR
4 nhóm:
Classic AVR (AT90Sxxxx): không còn được sử dụng.
Mega AVR (ATmegaxxxx): hơn 120 lệnh và nhiều ngoại vi khác nhau, ứng dụng rộng rải

Tiny AVR (ATtinyxxxx): có ít lệnh và kích thước nhỏ so với ATmega.

AVR cho mục đích đặc biệt: trang bị thêm để thiết kế ứng dụng cụ thể. Ví dụ như bộ điều
khiển USB, bộ điều khiển LCD, bộ điều khiển mạng cục bộ, …

IC ROM RAM EEPROM Số chân ADC Bộ Số chân


chương trình dữ liệu dữ liệu I/0 định thời Loại vỏ

ATmega8 8K 1K 0.5K 23 8 3 TQFP32, PDIP28

ATmega16 16K 1K 0.5K 32 8 3 TQFP44, PDIP40

ATmega32 32K 2K 1K 32 8 3 TQFP44, PDIP40

ATmega64 64K 4K 2K 54 8 4 TQFP64, MLF64

Atmega1280 128K 8K 4K 86 16 6 TQFP100, CBGA

Bảng 2.1 Các chip tiêu biểu trong nhóm ATmega Võ Thị Thu Hồng 3
VI ĐIỀU KHIỂN ATmega324P

Võ Thị Thu Hồng 4


Đặc tính kỹ thuật

• Kiến trúc RISC nâng cao


- 131 lệnh.
- Đa số các lệnh thực thi 1 chu kỳ xung nhịp.
- 32 thanh ghi làm việc đa dụng 8 bit.
- Có thể đạt tới 20 MIPS với tần số 20MHz.
- Bộ nhân 2 chu kỳ on-chip

• Các thành phần bộ nhớ


- Bộ nhớ chương trình Flash 32KB
- Bộ nhớ EEPROM 1KB
- Bộ nhớ SRAM 2KB

Võ Thị Thu Hồng 5


Đặc tính kỹ thuật (tt)
• Các ngoại vi
- 32 đường I/O lập trình được
- 2 bộ định thì/bộ đếm 8 bit với bộ chia tần riêng biệt và chế độ so sánh
- 1 bộ định thì/bộ đếm 16 bit với bộ chia tần riêng biệt, chế độ so sánh và
chế độ capture.
- Bộ đếm thời gian thực với bộ dao động riêng biệt.
- 6 kênh điều chế độ rộng xung PWM.
- 8 kênh ADC 10 bit, ngõ vào đơn,ngõ vào vi sai lập trình được độ lợi
(PGA)
- Giao tiếp nối tiếp 2 dây I2C.
- 2 bộ USART lập trình được.
- Giao tiếp nối tiếp SPI.
- Bộ định thì watchdog lập trình được với bộ dao động on-chip riêng biệt.
- Bộ so sánh tương tự on-chip.
- Ngắt và wake-up trên các chân.
Võ Thị Thu Hồng 6
Đặc tính kỹ thuật (tt)
• Các tính năng đặc biệt
- Mạch khởi động Power-on và bộ phát hiện sụt áp nguồn Brown-out lập
trình được.
- Bộ dao động RC điều chỉnh bên trong.
- Nhiều nguồn ngắt bên trong và bên ngoài.
- 6 chế độ ngủ tiết kiệm năng lượng nguồn.

• Đặc tính khác


- Dạng đóng gói PDIP 40 chân, TQFP 44 chân và VOFN/QFN/MLF 44 chân.
- Điện áp hoạt động 2.7V – 5.5V.
- Tần số làm việc 0 – 20MHz.
- JTAG chuẩn IEEE 7149.1 nạp chương trình trực tiếp trên hệ thống.

Võ Thị Thu Hồng 7


Sơ Đồ Khối

Võ Thị Thu Hồng 8


ATmega324P
Dạng vỏ PDIP
Sơ đồ chân

VCC: điện áp nguồn 2.7V đến 5.5V.


GND: chân nối đất
RESET (mức thấp ) reset MCU.
XTAL1, XTAL2 kết nối với dao động thạch
anh hay mạch dao động RC (khi dùng mạch
xung nhịp ngoài thì nối vào chân XTAL1)
AVCC điện áp nguồn cho ADC.
AREF điện áp tham chiếu analog cho ADC.

Võ Thị Thu Hồng 9


Chân Port A

Võ Thị Thu Hồng 10


Chân Port B

Võ Thị Thu Hồng 11


Chân Port C

Võ Thị Thu Hồng 12


Chân Port D

Võ Thị Thu Hồng 13


Sơ đồ chân

ATmega324P

Dạng vỏ TQFP/VQFN/QFL/MLF

Võ Thị Thu Hồng 14


Lõi CPU của AVR

Võ Thị Thu Hồng 15


Kỹ thuật đường ống (pipeline)

So sánh kỹ thuật đường ống (pipeline) và không đường ống (non-pipline)

Võ Thị Thu Hồng 16


Bộ nhớ AVR ATmega324P – Bộ nhớ chương trình FLASH

+ Flash 32KB = 16K x 2bytes

+ Flash có thể chịu được 10,000 chu kỳ ghi/xóa.


+ Nạp chương trình vào bộ nhớ Flash thông qua
giao tiếp JTAG(song song) hay SPI (nối tiếp)

Võ Thị Thu Hồng 17


Bộ nhớ AVR ATmega324P – Bộ nhớ dữ liệu SRAM

Võ Thị Thu Hồng 18


Bộ nhớ AVR ATmega324P – Bộ nhớ dữ liệu SRAM (tt)

Chuyển data giữa GPRs

MOV R13, R15


(R13  R15)
MOVW R13, R15
(R14:R13  R16:R15)

XL
XH X
YH
LDI R17,0x12
YL
Y biến con trỏ

Nạp giá trị vào GPRs ZL


Z
ZH

32 thanh ghi đa dụng(GPRs)

Võ Thị Thu Hồng 19


tùy lệnh mà dùng địa chỉ bộ nhớ hay I/O
Bộ nhớ AVR ATmega324P – Bộ nhớ dữ liệu SRAM (tt)
Dùng địa chỉ bộ nhớ :STS, LTS
I/O : IN, OUT

64 Địa chỉ IO
Võ Thị Thu Hồng 20
Bộ nhớ AVR ATmega324P – Bộ nhớ dữ liệu SRAM (tt)

Chuyển data giữa GPRs và IO Regs

IN / OUT Rd  → P
(d=0 – 31 P= 0 - 63)

VD: IN R2, PINB


(hay IN R2, 0x03)

Võ Thị Thu Hồng 21


Bộ nhớ AVR ATmega324P – Bộ nhớ dữ liệu SRAM (tt)

160 Địa chỉ IO mở rộng Võ Thị Thu Hồng 22


Bộ nhớ AVR ATmega324P – Bộ nhớ dữ liệu SRAM (tt)

lưu thanh ghi vào địa chỉ STS k, Rd LDS Rd, k lấy địa chỉ ra thanh ghi
(Rd =0 – 31 (Rd =0 – 31
k = 0 -8FF) Bộ nhớ RAM nội k = 0 -8FF)
(IRAM)

Chuyển data giữa GPRs và


các địa chỉ trong SRAM
(LD,LDD, ST, STD, LDS, STS) RAMEND

Võ Thị Thu Hồng 23


Bộ nhớ AVR ATmega324P – STACK (Ngăn xếp)

+ Là 1 phần bộ nhớ trong RAM, để chứa dữ liệu tạm thời.


+ Dùng cho lệnh PUSH và POP.
+ Dùng khi có chương trình con hay chương trình con ngắt.
+ Cấu trúc LIFO – Last In First Out
PUSH: ĐƯA DỮ LIỆU VÀO ĐỊA CHỈ => ĐỊA CHỈ -1
POP : LẤY DỮ LIỆU RA => ĐỊA CHỈ +1

Chú ý: + ATmega324P có ngăn xếp trong vùng SRAM 2KB,


STACK địa chỉ từ 0x0100 đến 0x08FF → SP chỉ dùng 12 bits
RAMEND ( SP11.. SP0) để chứa địa chỉ đỉnh ngăn xếp.

Võ Thị Thu Hồng 24


Bộ nhớ AVR ATmega324P – Bộ nhớ dữ liệu EEPROM

0x000

EEPROM

0x3FF

+ Chịu được 100,000 chu kỳ ghi/ xóa.


+ Dùng trữ data ít thay đổi, không bị mất khi tắt nguồn.

Võ Thị Thu Hồng 25


Thanh ghi IO thông dụng – SREG (thanh ghi trạng thái)

Bit 7 – I : Cho phép ngắt toàn cục (Global Interrupt Enable)


Bit 6 – T : bit sao chép (Copy Storage) dùng lệnh BLD/BST
Bit 5 – H : Cờ nhớ phân nửa (Half Carry Flag)
Bit 4 – S : Cờ dấu (Sign Flag), cờ báo dấu chính xác của kết quả
S = N⨁V
Bit 3 – V : Cờ tràn bù 2 (Two’s Complement Overflow Flag)
V = 𝐂𝟕⨁𝐂𝟔
Bit 2 – N : Cờ âm (Negative Flag)
Bit 1 – Z : Cờ không (Zero Flag)
Bit 0 – C : Cờ nhớ (Carry Flag)

Võ Thị Thu Hồng 26


Thanh ghi IO thông dụng – SREG (thanh ghi trạng thái) (tt)

VD1: Xác định nội dung SREG sau các lệnh VD2: Xác định nội dung SREG sau các lệnh
LDI R20, 0x54 LDI R20, 0x50
LDI R25, 0xC4 LDI R25, 0x32
ADD R20, R25 ADD R20, R25

C = 1, H = 0, N = 0 C = 0, H = 0, N = 1
V = 0. V = 1.
S = 0 (S = NV) S = 0 (S = NV)

Võ Thị Thu Hồng 27


Thanh ghi IO thông dụng – SP (thanh ghi con trỏ ngăn xếp)

SP luôn chứa địa chỉ của đỉnh ngăn xếp (T.O.S – Top Of Stack).
Lệnh PUSH đẩy dữ liệu vào ngăn xếp →SP = SP - 1 (đỉnh ngăn xếp tăng sau)
Lệnh POP → SP = SP + 1(đỉnh ngăn xếp giảm trước), sau đó lấy dữ liệu khỏi ngăn xếp
Lưu ý : Ở AVR ngăn xếp được thực hiện từ địa chỉ cao đến địa chỉ thấp hơn.
Với ATmega324P sau khi reset, giá trị đầu của thanh ghi SP là 0x08FF (RAMEND)

Võ Thị Thu Hồng 28


Thanh ghi IO thông dụng – SP (thanh ghi con trỏ ngăn xếp) (tt)
VD: Nội dung ban đầu SP = 0x08FF, R20 = 0x2A, R21 = 0x95, R22 = 0x4C. Tìm nội dung
ngăn xếp và các thanh ghi sau khi thực hiện tuần tự các lệnh.

Võ Thị Thu Hồng 29


Thanh ghi IO thông dụng – Các thanh ghi điều khiển cổng xuất/ nhập
4 Port: Port A, Port B, Port C, Port D
Các thanh ghi liên quan: DDRx, PORTx, PINx (x= A, B, C, D)

Thanh ghi hướng dữ liệu – DDRx (Data Direction Register)

Cấu trúc cơ bản chân port xuất nhập

+ DDRxn=1 → chân port tương ứng là


chân xuất (output), ngược lại nếu
DDRxn=0 → chân port là chân nhập
(input).
+ Giá trị ban đầu của DDRx= 0x00 →
các port đều sẵn là chân nhập (input)

Võ Thị Thu Hồng 30


Thanh ghi IO thông dụng – Các thanh ghi điều khiển cổng xuất/ nhập (tt)

Thanh ghi dữ liệu xuất Port – PORTx (Data Register) Thanh ghi các chân nhập Port – PINx (Port Input
Pins Register)

Võ Thị Thu Hồng 31


Thanh ghi IO thông dụng – Các thanh ghi điều khiển cổng xuất/ nhập (tt)
+ Các chân port AVR đều có điện trở kéo lên.
+ Điện trở kéo lên để đảm bảo logic ổn định khi chân port hở (HIZ).
+ Ghi 1 vào Portxn để cho phép điện trở kéo lên.

Chú ý: thanh ghi MCUCR có bit PUD (Pull Up Disable),


nếu PUD=1 → điện trở kéo lên bị cấm dùng.

Điện trở kéo lên

Võ Thị Thu Hồng Các cấu hình chân port. 32


Thanh ghi IO thông dụng – Các thanh ghi điều khiển cổng xuất/ nhập (tt)
VD: Chọn các chân PA 0, PA3, PA5 xuất, các chân Port A còn lại nhập.
LDI R16, 0b00101001
OUT DDR A, R16

VD: Xuất giá trị 20H ra port B


LDI R16, 0xFF
OUT DDRB, R16 ; Port B xuất
LDI R16, 0x20
OUT PORTB, R16 ; xuất $20H ra PortB

VD: Nhập data từ port B, xuất ra port C


LDI R16, 0x00
OUT DDRB, R16 ; Port B nhập
LDI R16, 0xFF
OUT DDRC, R16 ; Port C xuất
OUT PORTB, R16 ; sử dụng điện trở kéo lên ở Port B
IN R17, PINB ; Đọc data từ port B, cất vào R17
OUT PORTC, R17 ; Xuất ra port C

Võ Thị Thu Hồng 33


Xung Nhịp Hệ Thống (System clock)
Xung nhịp (Clock) cần cho các hoạt động cơ bản: chu kỳ thực hiện lệnh, định thì truy xuất bộ
nhớ,giao tiếp ngoại vi … Tần số xung nhịp quyết định tốc độ thực thi các lệnh trong chương trình.
ATmega324P có nhiều nguồn xung nhịp: dao động thạch anh, dao động RC bên trong, dao động
ngoài. Lựa chọn bằng các bit cầu chì (Fuse Bits)CKSEL3..0

Tùy chọn xung nhịp thiết bị (Device Clocking Option) CKSEL3..0


Bộ dao động thạch anh công suất thấp (Low Power Crystal Oscillator) 1111 - 1000
Bộ dao động thạch anh toàn tầm (Full Swing Crystal Oscillator) 0111 - 0110
Bộ dao động thạch anh tần số thấp (Low Frequency Crystal Oscillator) 0101 - 0100
Bộ dao động RC nội 128kHz (Internal 128kHz RC Oscilltor) 0011
Bộ dao đông RC nội hiệu chỉnh được (Calibrated Internal RC Oscillator) 0010

Xung nhịp ngoài (External Clock) 0000


Dự trữ (Reserved) 0001

Võ Thị Thu Hồng 34


Phân bổ của các xung nhịp

clkCPU dành cho hoạt động của lõi AVR.


clkIO dành cho bộ định thì và giao tiếp nối tiếp.
clkFLASH dành cho giao tiếp bộ nhớ Flash.
clkASY dành cho bộ định thời bất đồng bộ.
clkADC dành cho bộ biến đổi ADC.

Mặc định ATmega324P dùng bộ dao


động nội RC hiệu chỉnh được ở
f=8MHz/8= 1MHz (do đặt bit CKDIV8
ở byte thấp cầu chì)

Ngõ ra xung nhịp (Clock Output)


ATmega324P có thể xuất xung nhịp hệ thống
qua chân CLKO (chân PB1) bằng cách lập
trình cầu chì CKOUT.

Võ Thị Thu Hồng 35


Điều khiển hệ thống và Reset

• Khi reset, các thanh ghi I/O được đặt lại


giá trị ban đầu (PC = 0x0000, DDRx =
0x00, PORTx=0x00...)
• Chương trình bắt đầu thực hiện từ địa
chỉ reset (reset vector). Lệnh đặt tại địa
chỉ này phải là lệnh nhảy tuyệt đối (JMP)
đến reset chương trình xử lý.

5 nguồn Reset:
• Khi bật nguồn (Power on Reset)
• Reset ngoài (External Reset)
• Reset do sụt áp nguồn (Brown out reset)
• Reset bằng hệ thống định thì Watchdog
(Watchdog system reset)
• Reset của AVR JTAG (JTAG AVRReset)

Võ Thị Thu Hồng 36


Điều khiển hệ thống và Reset – Power on Reset

MCU khởi động, chân RESET nối nguồn Vcc Chân RESET nối nguồn Vcc

Võ Thị Thu Hồng 37


Điều khiển hệ thống và Reset – External Reset

Mạch reset ngoài


Tín hiệu reset ngoài

Võ Thị Thu Hồng 38


Điều khiển hệ thống và Reset – Brown out Reset

Tín hiệu Brown-out Reset

Võ Thị Thu Hồng 39


Điều khiển hệ thống và Reset – Brown out Reset

Bộ định thời Watchdog có chức năng


dùng để reset MCU trong trường hợp
chương trình đang chạy bị lỗi hay bị
lặp vòng vô hạn.

Tín hiệu Watchdog System Reset

Điều khiển hệ thống và Reset – JTAG AVR Reset


MCU được reset miễn là có logic 1 trong thanh ghi reset, một trong các chuỗi quét
của hệ thống JTAG. JTAG AVR Reset dùng kiểm tra board mạch hệ thống.

Võ Thị Thu Hồng 40

You might also like