Chương 4: Họ vi điều khiển AVR
n Giới thiệu chung
n Các chức năng điều khiển
n Tập lệnh và ngôn ngữ lập trình
4.1 Giới thiệu chung
n AVR - Kiến trúc RISC
n Khoảng hơn 100 lệnh, hầu hết thực hiện một chu kỳ máy
n 32 thanh ghi đa năng 8 bit
n Có thể lên tới 16 MIPS tại tần số 16MHz
n Bộ nhớ :
n 8.256K Flash Mem cho chương trình, ghi/xoá được 10.000
lần
n 512.4K Byte EEPROM, ghi/xoá 100.000
n 512 8K Byte SRAM2
4.1 Giới thiệu chung (tiếp)
n Các modul vào ra (I/O moduls)
n ADC 10bit và từ 8.16 kênh Analog
n 1 đến 2 Programmable UART
n Master/Slave ISP Serial Interface
n 3.4 Timer/Counter: 1 x 16 bit, 2 x 8 bit
n WatchDog Timer
n Analog Comparator
n PWM
n Công suất (Power Management):
- 3 chế độ nghỉ (Sleep Mode):
n Idle : 1.9 mA
n Power-Down: <1µA
n PowerSave
n (chế độ chạy bình thường: 6mA)
4.1 Giới thiệu chung (tiếp)
– Điện áp làm việc :
n Vcc 4.0-6.0V với AT90S8535
n Vcc 2.7-6.0V với AT90LS8535
– Tần số CLOCK
n 0-8MHz với AT90S8535
n 0-4MHz với AT90LS8535
n 0-16MHz với Atmegaxx
56 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 385 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Ứng dụng Vi điều khiển - Trần Văn Hùng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
on người thì quen dùng hệ cơ số mười (hệ mười)
1234,56 = 1.103 + 2.102 + 3.101 + 4.100 + 5.10-1 + 6.10-2
n Máy tính thì chỉ làm việc với hệ cơ số hai (hệ hai)
1011,01 = 1.23 + 0.22 + 1.21 + 1.20 + 0.2-1 + 1.2-2
n Nibble gồm 4 bit
n Byte gồm 8 bit
n Word gồm 16 bit
03
7 0
15 0
MSB LSB
21.1.1 Chuyển đổi giữa hệ mười và hệ hai
n Đổi hệ hai sang hệ mười
1011,012 = 1.23 + 0.22 + 1.21 + 1.20 + 0.2-1 + 1.2-2 = 11,2510
n Đổi hệ mười sang hệ hai
4610 = 1011102
Hình 1. Một cách đổi hệ mười sang hệ hai
0
1
46 2
23 2
11 2
5 2
2 2
1 2
0
1
1
0
1
1.1.1 Chuyển đổi giữa hệ mười và hệ hai (tiếp)
n Đổi số thập phân hệ mười sang hệ hai
0,12510 = 0,0012
n Số BCD (số hệ mười mã hoá bằng hệ hai)
Số BCD thích hợp cho các thiế bị đo có hiển thị số ở đầu ra.
123410 = 0001 0002 0003 0004BCD
n Hệ mười sáu
123410 = 0100 1101 00102 = 4D216
0,125 x 2 =
0,250 x 2 =
0,500 x 2 =
,250
,500
,000
0
0
1
31.2 Các phép toán số học đối với hệ hai
1.2.1 Phép cộng
ana(n-1) ... a2a1a0 + bmb(m-1) ... b2b1b0 = ckc(k-1) ... c2c1c0 (hệ cơ số x)
ci = (ai + bi + (ai-1 + bi-1)%x )/x
Ví dụ cộng hệ hai
1.2.2 Phép trừ và số bù hai
a. Phép trừ
ana(n-1) ... a2a1a0 - bmb(m-1) ... b2b1b0 = ckc(k-1) ... c2c1c0 (hệ cơ số x)
ci = (ai – Bi-1) – bi (nếu (ai – Bi-1) >= bi và Bi = 0)
ci = (ai – Bi-1 + x) – bi (nếu (ai – Bi-1) < bi và Bi = 1)
Ví dụ trừ hệ hai
1101 1001
0001 1011
1111 0100
+
1101 1001
0001 1011
1011 1110
-
1.2.2 Phép trừ và số bù hai (tiếp)
b. Số bù hai
Ta có thể thay phép trừ bằng phép cộng: cộng số bị trừ với đối số của số trừ.
Để tìm số bù hai của một số A ta làm theo các bước sau:
+ Biểu diễn số A số hệ hai của nó.
+ Tìm số bù một (bù logic) của số đó (đảo bít).
+ Cộng một vào số bù một ở trên để nhận được số bù hai của A.
1.2.3 Phép nhân
Ví dụ nhân 2 số hệ hai có độ dài 4 bít
Bảng 1. Quy tắc phép nhân
a.bba
1
0
0
0
11
01
10
00
1011
0000
1 1
0
0
0
1
1
1
1
0
1
0
1
0
0
0
0
0
1
1
1
1
1
41.2.2 Phép chia
b. Chia trực tiếp
Ví dụ: 35/5 = 7
b. Chia gián tiếp
Lấy số bị chia trừ đi số chia, kết quả sẽ là số bị chia của phép toán
tiếp theo, lặp lại đến khi số bị chia nhỏ hơn số chia hoặc bằng 0.
0
101
1
0
1
1
1
101
111
1
0
0
0
0
0
1
0
0
1
1 1
0
101
1
01
00
1Chương 2: Hệ thống vi xử lý
n Ưu và nhược điểm hệ nhúng
n Vi xử lý, vi điều khiển
n Các họ vi điều khiển
n Ngắt và xử lý ngắt
2.1 Tại sao lại sử dụng hệ nhúng?
2.1.1 Ưu điểm
n Khả năng thích nghi cao
n Tính linh động
n Khả năng thay đổi dễ dàng
n Khả năng tái sử dụng tài nguyên (thư viện,)
n Giá thành rẻ
n . . .
2.1.2 Nhược điểm
n Tốc độ phản ứng chậm
n Độ ổn định thấp
n Không xử lý được gía trị liên tục
n . . .
22.2 Vi điều khiển, vi xử lý
CPU
General-
Purpose
Micro-
processor
RAM ROM I/O PORT
Timer,
Wdg,
ADC,
DAC,
USB,
UARST,
I2C,
Data bus
Address bus
TERMINOLOGY
n Microcontroller vs. Microprocessor vs. Microcomputer
n A microprocessor is a central processing unit on a
single chip.
n A microprocessor combined with support circuitry ,
peripheral I/O components and memory (RAM & ROM)
used to be called a “microcomputer.”
n A microprocessor where all the components mentioned
above are combined on the same single chip that the
microprocessor is on, is called a microcontroller.
32.3 Kiến trúc vi điều khiển
n Đơn vị sử lý số học (ALU)
n Bộ nhớ
n Input
n Output
n Đơn vị điều khiển
2.3.1 Đơn vị xử lý số học (ALU)
n Thực hiện phép toán và phép logic trên dữ liệu
n Dữ liệu có thể lấy trên bộ nhớ hoặc I/O
n Kết quả có thể được đưa ra ngoài hoặc vào bộ nhớ
(kết quả được lưu lại)
General
Purpose
Registrers
ALU
42.3.2 Bộ nhớ
n Lưu trữ lệnh hay dữ liệu
n Có thể để lưu trữ dữ liệu tạm thời
n Có thể ghi/đọc được bởi bộ điều khiển
Program Flash
(4K x 16)
Program Memory
$000
$FFF
32 Gen. Purpose
Working Resisters
64 I/O Resisters
Internal SRAM
(512 x 8)
$025F
$005F
$0060
$001F
$0020
$0000
Data Memory
EEPROM
(512 x 8)
Data Memory
$000
$1FF
2.3.3 Input
n Thiết bị cho phép thông tin và dữ liệu vào bên trong
bộ vi điều khiển
n Ví dụ: ADC, I2C, UART,
2.3.4 Output
n Thiết bị chuyển đổi thông tin và dữ liệu từ bộ nhớ ra
thiết bị ngoại vi.
n Thiết bị ngoại vi: LED, LCD, máy in,
52.3.5 Đơn vị điều khiển
n Cung cấp xung nhịp và điều khiển tín hiệu
n Tìm nạp lệnh và dữ liệu
n Chuyển dữ liệu tới/từ I/O
n Giải mã lệnh
n Thực hiện phép tính số học/logic
n Đáp ứng tín hiệu ngoài (Reset/Ngắt)
2.3.6 Một số họ vi điều khiển
n Vi điều khiển 8051
n 8051, 89Cxx, 89Sxx, 89Dxx,
n Vi điều khiển AVR
n AVR 8 bít, AVR 16 bít,
n Vi điều khiển PIC
n PIC 8 bít, PIC 16 bít,
n Vi điều khiển MCUs của Philips
n P8xCxx,
n
62.3.6 Các họ vi điều khiển (tiếp – so sánh)
n Tốc độ xử lý (clock, clock cycle execution)
n Khả năng tích hợp (ADC, DAC, UART, I2C,)
n Dải điện áp hoạt động (Operating Voltages)
n Công suất đầu ra (DC current per I/O pin)
n Khả năng chống nhiễu (Noise Reduction)
n Tập lệnh (Instruction)
n Công suất IC (Power consumption)
n . . .
2.4 Ngắt và xử lý ngắt (Interrupt)
2.4.1 Khái niệm
n Ngắt là sự dừng thực hiện chương trình chính (CTC) để
thực hiện chương trình con phụ vụ ngắt(ctc)
n: IRQi
n + 1:
m: IRQj
m + 1:
Main Prog
ISRi
ISRj
iret iret
72.4.2 Cấu trúc ngắt
nXuất hiện không được báo trước
nPhục vụ gần giống chương trình con
nTích hợp nhiều loại ngắt
nCó ưu tiên ngắt
2.4.3 Xử lý ngắt
n Xuất hiện và cho phép ngắt
n Hoàn thành lệnh hiện tại
n Lưu trữ địa chỉ lệnh tiếp theo vào ngăn xếp
n Nạp địa chỉ ISR vào PC
n Thực hiện ISR
n Kết thúc ISR là lệnh RETI
n Khôi phục địa chỉ lệnh tiếp theo trong ngăn xếp,
chương trình tiếp tục thực hiện
82.4.4 Phân loại ngắt
n Ngắt mềm (software interrupt)
Là việc gọi 1 ctc (Subroutine) được xây dựng riêng mà ctc
này còn có thể được gọi bởi thiết bị ngoại vi
n Ngắt cứng (hardware interrupt)
Do port phát tín hiệu đến CPU
n Ngắt trong (internal interrupt)
Trong một số CPU để bẫy/xử lý các sự kiện trong khi thực
hiện
n Ngoại lệ (exceptions)
Là vấn đề hay điều kiện để CPU dừng công việc đang thực
hiện, tìm địa chỉ và thực hiện 1 ctc, được thiết kế để xử lý sự
kiện này.
1Chương 3: Bộ nhớ
n Bộ nhớ bán dẫn
n Giải mã địa chỉ cho bộ nhớ
n Phối ghép bộ nhớ
n Mở rộng bộ nhớ
3.1 Bộ nhớ bán dẫn
n Các nhóm tín hiệu
n ROM (read only memory)
n RAM (random access memory)
ROM
Read
Only
Memory
RAM
Radom
Access
Memory
PROM
EPROM
EEPROM
Programmable ROM
Erasable PROM
Electrically EPROM
SRAM
Static RAM
DRAM
Dynamic RAM
CACHE
L1, L2, L3
Memory
23.1.1 Các nhóm tín hiệu
A0
A1
A2
An
...
D0
D1
D2
Dm
...
CS
WE
OE
RD
WR
Select IC
Address Data
Hình 3. Sơ đồ khối của bộ nhớ
a. Nhóm tín hiệu địa chỉ
n Có tác dụng chọn ra một ô nhớ cụ thể
n Số đường địa chỉ sẽ quyết định có tối đa bao nhiêu ô
nhớ. Ví dụ có m đường địa chỉ vậy thì tối đa 2m ô nhớ.
b. Nhóm tín hiệu dữ liệu
n Thường là đầu ra của ROM và là vào/ra đối với RAM
n Các mạch nhớ thường có đầu vào/ra là 3 trạng thái.
n Số đường dây dữ liệu quyết định độ dài từ nhớ của
mỗi ô nhớ.
3c. Nhóm tín hiệu chọn vi mạch
n Chọn vi mạch sẽ trao đổi dữ liệu.
n Các tín hiệu này thường được nối với đầu ra của bộ
giải mã địa chỉ.
n Vi mạch không được chọn thì bus dữ liệu của nó bị
treo (ở trạng thái trở kháng cao).
d. Nhóm tín hiệu điều khiển
n Cho phép dữ liệu ra bus.
n Bus dữ liệu bị treo nếu không có tín hiệu điều khiển.
n Mạch thường chỉ có một tín hiệu điều khiển đọc/ghi.
3.1.2 ROM
n Bộ nhớ có nội dung đã ghi sẵn chỉ để đọc ra
n Chỉ nạp vào một lần duy nhất
n Không bị mất thông tin khi mất điện
A0
A1
A2
An
...
D0
D1
D2
Dm
...
CS
WE
OE
RD
WR
Select IC
Address Data
Hình 3. Bộ nhớ ROM
43.1.3 ROM có thể lập trình được
a. PROM (Programmable ROM)
n Thời gian truy cập nhanh 120-250ns
n Chỉ nạp một lần duy nhất bằng các đốt cháy các cầu chì
n Điện áp khi lập trình khoảng 10-13V
A0
D0
Address
decoder
Address
Bus
A1
A2
VCC
D2 D1
b. EPROM (erasable PROM)
n Thời gian truy cập khoảng 120 – 450 ns
n Điện áp lập trình khoảng 10-25V
n Nó có thể được xoá toàn bộ bằng tia cực tím.
n Thời gian lập trình cho một ô nhớ lâu (khoảng 50ms)
5c. EEPROM (electrically EPROM)
n Xoá từng đơn vị nhớ bằng điện, không cần tia cực tím.
n Thời gian lập trình cho một ô nhớ khoảng 5ms.
d. Flash memory
n Thời gian truy cập nhanh (khoảng 120ns).
n Thời gian ghi nhanh 10µs
n Xóa từng khối nhớ
63.1.4 RAM
n Bị mất dữ liệu khi mất điện.
n Thời gian truy cập nhanh (có loại 15ns).
Register 62
Register 63
.
..
Register 2
Register 1
Register 0
Decoder
6 line to 64 lineA
dd
re
ss
in
pu
t
R/WInput buffers
Output buffers
CS
Hình 3. Cấu tạo bên trong của 64 x 4 RAM
3.1.4 RAM (tiếp)
n SRAM (static RAM)
n Chế tạo đơn giản
n Dễ dàng bảo trì
n Thường được sử dụng trong hệ thống có bộ nhớ nhỏ
n DRAM (dynamic RAM)
n Giá thành thấp
n Đòi hỏi mạch phụ trợ
n Phải làm tươi (refresh) thường xuyên
n Thường được sử dụng trong hệ thống có bộ nhớ lớn
73.2 Giải mã địa chỉ cho bộ nhớ
n Phân định không gian tổng thể thành các vùng nhớ khác nhau
n Đảm bảo tính đơn trị của xung chọn
n Khi thiết kế thường có dự phòng (spare) để có thể mở rộng
mà không phải thiết kế lại mạch.
Mạch giải
mã địa chỉ
Tín hiệu địa chỉ
Tín hiệu điều khiển
Các tín hiệu chon chip
Hình 3. Mạch giải mã địa chỉ
3.2.1 Giải mã bằng các mạch NAND
n Mạch giải mã địa chỉ đơn giản với đầu ra hạn chế
Memory
A0 – A10
D0 - D7
A11 – A19
IO/M
CE OE
RD
Hình 3. Mạch giải mã đơn giản dùng NAND
83.2.2 Giải mã bằng các mạch 74138
n Là mạch giải mã 3 đầu vào, 8 đầu ra
Memory
A0 – A12
D0 – D7
A13 – A15
IO/M
CE OE
RD
74LS138
A
B
C
G1
6
G2A
4
G2B
5
Y0 15
Y1 14
Y2 13
Y3 12
Y4 11
Y5 10
Y6 9
Y7 7A19
A16 – A18
Hình 3. Sơ đồ giải mã dùng 74LS138
3.2.2 Giải mã bằng các mạch 74138 (tiếp)
n Mức tích cực là mức 0
n Chỉ duy nhất một đầu ra ở mức tích cực
93.2.3 Giải mã dùng ROM
n Cùng một chức năng như 74138
n Giảm thiểu số mạch phụ trợ
Memory
A0 – A12
D0 – D7
A13 – A19
IO/M
CE OE
RD
G1
Y0 15
Y1 14
Y2 13
Y3 12
Y4 11
Y5 10
Y6 9
Y7 7
A0
A1
A2
A3
A4
A5
A6
A7
Hình 3. Sơ đồ giải mã dùng PROM
3.2.3 Giải mã dùng ROM (tiếp)
n Chỉ sử dụng 8 byte đầu tiên, các byte khác đều chứa cùng
một giá trị FFh
11111111Các địa chỉ khác 0
01111111111111100
10111111011111100
11011111101111100
11101111001111100
11110111110111100
11111011010111100
11111101100111100
11111110000111100
O0O1O2O3O4O5O6O7A0A1A2A3A4A5A6A7G
Các đầu raCác đầu vào
10
RD
IO/M
Memory
A0 – A11
A12 – A14
74LS138
A
B
C
G1
6
G2A
4
G2B
5
Y0 15
Y1 14
Y2 13
Y3 12
Y4 11
Y5 10
Y6 9
Y7 7+Vcc
A15 – A19
D0 – D7
FF000-FFFFF
F8000-F8FFF
Hình 3. Phối ghép bộ nhớ
Bộ tạo xung trễ
Ready
CS
3.3 Ghép nối bộ nhớ
n Định địa chỉ các ô nhớ.
n Dung lượng bộ nhớ.
n Tốc độ bộ nhớ ko đáp ứng đươc tốc độ VĐK thì ta phải có
mạch tăng thêm chu kỳ đợi
CE OE
3.3 Ghép nối bộ nhớ (tiếp)
n Sử dụng bộ dồn kênh để giảm số chân, tăng dung lượng bộ
nhớ lên
128 x 128
Cell array
R/W
Data in
Data out
Column address decoder
7 bit
Column address register
Row
address
decoder
7 bit
Row
address
register
A0
A1
A2
A3
A4
A5
A6
A7 A8 A9 A10 A11 A12 A13
-----------
|
|
|
|
|
|
|
|
A0/ A7 – A6/A13
A0/A7
-------
A6/A13
RAS
CAS
Hình 3. Kiến trúc của bộ nhớ 4116
11
3.4 Mở rộng bộ nhớ
3.4.1 Mở rộng kích thước ô nhớ
Hình 3. Kết hợp hai bộ nhớ 16 x 4 thành 16 x 8
Address bus (AB0 – AB3)
Data bus (DB0 – DB7)
RAM-0
16 x 4
R/W
CS
I/03 I/02 I/01 I/00
A3 A2 A1 A0
RAM-1
16 x 4
R/W
CS
I/03 I/02 I/01 I/00
A3 A2 A1 A0
R/W
CS
3.4.1 Mở rộng kích thước ô nhớ (tiếp)
Hình 3. Kết hợp bốn bộ nhớ 2K x 8 thành 2K x 32
Address bus (AB0 – AB10)
Data bus (DB0 – DB31)
RAM-0
2K x 8
I/00 - I/07
R/W
CS
RAM-1
2K x 8
I/08 - I/015
R/W
CS
RAM-2
2K x 8
I/016 - I/023
R/W
CS
RAM-3
2K x 8
I/024 - I/031
R/W
CS
12
3.4.2 Mở rộng dung lượng nhớ
Hình 3. Kết hợp hai bộ nhớ 16 x 4 thành 32 x 4
Address bus (AB0 – AB3)
Data bus (DB0 – DB3)
RAM-0
16 x 4
R/W
CS
I/03 I/02 I/01 I/00
A3 A2 A1 A0
RAM-1
16 x 4
R/W
CS
I/03 I/02 I/01 I/00
A3 A2 A1 A0
R/W
AB4
1Chương 4: Họ vi điều khiển AVR
n Giới thiệu chung
n Các chức năng điều khiển
n Tập lệnh và ngôn ngữ lập trình
4.1 Giới thiệu chung
n AVR - Kiến trúc RISC
n Khoảng hơn 100 lệnh, hầu hết thực hiện một chu kỳ máy
n 32 thanh ghi đa năng 8 bit
n Có thể lên tới 16 MIPS tại tần số 16MHz
n Bộ nhớ :
n 8..256K Flash Mem cho chương trình, ghi/xoá được 10.000
lần
n 512..4K Byte EEPROM, ghi/xoá 100.000
n 5128K Byte SRAM
24.1 Giới thiệu chung (tiếp)
n Các modul vào ra (I/O moduls)
n ADC 10bit và từ 8..16 kênh Analog
n 1 đến 2 Programmable UART
n Master/Slave ISP Serial Interface
n 3..4 Timer/Counter: 1 x 16 bit, 2 x 8 bit
n WatchDog Timer
n Analog Comparator
n PWM
n Công suất (Power Management):
- 3 chế độ nghỉ (Sleep Mode):
n Idle : 1.9 mA
n Power-Down: <1µA
n PowerSave
n (chế độ chạy bình thường: 6mA)
4.1 Giới thiệu chung (tiếp)
– Điện áp làm việc :
n Vcc 4.0-6.0V với AT90S8535
n Vcc 2.7-6.0V với AT90LS8535
– Tần số CLOCK
n 0-8MHz với AT90S8535
n 0-4MHz với AT90LS8535
n 0-16MHz với Atmegaxx
34.1 Giới thiệu chung (tiếp)
4.1.1 Các bộ nhớ
Program Flash
(4K x 16)
Program Memory
$000
$FFF
32 Gen. Purpose
Working Resisters
64 I/O Resisters
Internal SRAM
(512 x 8)
$025F
$005F
$0060
$001F
$0020
$0000
Data Memory
EEPROM
(512 x 8)
Data Memory
$000
$1FF
44.1.1 Các bộ nhớ (tiếp)
Data Address Space
$001F
$001E
$0001
$0000
$005F
$005E
$0021
$0020
Internal SRAM
$085F
$085E
$0061
$0060
Register File
R31
R30
R2
R1
I/O Register
$3F
$3E
$01
$00
ZL
ZH
SRAM Organization
4.1.2 Các thanh ghi đa năng
a. Các thanh ghi đa năng
n Bao gồm 32 thanh ghi 8 bit
n Được thực hiện trực tiếp từ ALU
n Các cặp thanh ghi R26, 27; R28, 29; R30, 31 tạo thành các thanh
ghi 16 bit
5b. Các thanh ghi ngăn xếp
n Để lưu trữ dữ liệu tam thời, vị trí biến và địa chỉ trở
về sau khi phục vụ chương trình con ngắt và chương
trình con
n Luôn trỏ vào đỉnh của ngăn xếp
n Ngăn xếp luôn bắt đầu từ vị trí cao của bộ nhớ
c. Các thanh ghi trạng thái
n Chứa thông tin hiện tại của CPU
n Có 8 bit chứa thông tin
n Thông tin có thể bị thay đổi khi có chương trình con
phục vụ ngắt
6d. Thanh ghi che ngắt và cờ ngắt
n Cho phép hay không cho phép một ngắt bất kỳ
n Thông báo khi có ngắt, nếu ngắt đó đã được phép
n Thanh ghi che ngắt được thiết lập bằng phần mềm
e. Thanh ghi điều khiển
n Cho phép điều khiển toàn bộ vi điều khiển
n Chức năng này gồm:
n Truy cập bộ nhớ SRAM
n Chế độ ngủ
n Chế độ ngắt ngoài
7f. Một số thanh ghi khác
n Thanh ghi trạng thái bộ xử lý
n Các thanh ghi điều khiển timer/counter0
n Các thanh ghi điều khiển timer/counter1
n Thanh ghi điều khiển Watchdog
n Các thanh ghi điều khiển vào ra EEPROM
n Các thanh ghi điều khiển SPI
n Các thanh ghi điều khiển UART
n Các thanh ghi điều khiển bộ ADC
4.1.3 Ngắt và xử lý ngắt
Store Program Memory ReadySPM_RDY$02821
Two-wire Serial InterfaceTWI$02620
Analog ComparatorANA_COMP$02419
EEPROM ReadyEE_RDY$02218
ADC Conversion CompleteADC$02017
USART, Tx CompleteUSART, TXC$01E16
USART Data Register EmptyUSART, UDRE$01C15
USART, Rx CompleteUSART, RXC$01A14
Serial Transfer CompleteSPI, STC$01813
Timer/Counter0 OverflowTIMER0 OVF$01612
Timer/Counter0 Compare MatchTIMER0 COMP$01411
Timer/Counter1 OverflowTIMER1 OVF$01210
Timer/Counter1 Capture Match BTIMER1 COMPB$0109
Timer/Counter1 Capture Match ATIMER1 COMPA$00E8
Timer/Counter1 Capture EventTIMER1 CAPT$00C7
Timer/Counter2 OverflowTIMER2 OVF$00A6
Timer/Counter2 Compare MatchTIMER2 COMP$0085
External Interrupt Request 2INT2$0064
External Interrupt Request 1INT1$0043
External Interrupt Request 0INT0$0022
External Pin, Power-on Reset, Brown-out Reset,
Watchdog Reset and JTAG AVR ResetReset$0001
Interrupt DifinitionSourceProgramAddressVector No.
84.1.3 Ngắt và xử lý ngắt (tiếp)
n 16 vectơ ngắt (2 Byte)
n Từ địa chỉ $000 trong bộ nhớ chương trình
n Ngắt có chỉ số thấp, độ ưu tiên càng cao
n Mỗi ngắt có một bít cho phép ngắt riêng
n Để sử dụng một ngắt thì bit này phải thiết lập cùng
với cờ I (Global Interrupt Enable) trong thanh ghi
SREG được thiết lập
n Mất 4 chu kỳ đồng hồ để vào (hoặc ra khỏi) chương
trình con phực vụ ngắt
4.1.3 Ngắt và xử lý ngắt (tiếp)
n I – Global Interrupt Enable
n T – Bit Copy Storage
n H – Haft Carry Flag
n S – Sign Bit S = N V
n V – Overflow Flag
n N – Negative Flag
n Z – Zero Flag
n C – Carry Flag
00000000Initial Value
R/WR/WR/WR/WR/WR/WR/WR/WRead/Write
SREGCZNVSHTI$3F ($5F)
01234567Bit
94.2 Các chức năng điều khiển
n Timer/Counter
n WatchDog Timer
n Các cổng vào ra
n ADC
n UART
n EEPROM
4.2.1 Timer/Counter
Có 3 bộ đếm/định thời gian
n T/C0 :
n 8 bit
n Nguồn đồng hồ từ mạch chia thời gian hoặc từ chân T0
(theo sườn lên/xuống)
n Ngắt tràn
n T/C1:
n 16 bit
n Nguồn đồng hồ từ mạch chia thời gian hoặc từ chân T1
(theo sườn lên/xuống)
n Có ngắt tràn, ngắt thích ứng so sánh và ngắt cho phép bắt
tín hiệu từ chân ICP
10
4.2.1 Timer/Counter (tiếp)
n T/C2:
n 8 bit
n Nguồn đồng hồ từ mạch chia thời gian hoặc từ dao động
bên ngoài (chân TOSC1 và TOSC2 nối với tụ thạch
anh 32768Hz)
n Có ngắt tràn và ngắt thích ứng so sánh
n Cho phép đưa tín hiệu ra chân OC2 khi có tín hiệu thích
ứng so sánh
4.2.2 WatchDog Timer
Processor
Watchdog Timer
Clock
Restart
Reset
11
4.2.2 WatchDog Timer (tiếp)
n Hoạt động từ bộ dao động độc lập trên chip
n Lệnh WDR để Reset lại WatchDog Timer
n Sau khoảng thời gian > time_out chương trình sẽ bị
Reset lại
n Thanh ghi điều khiển: WDTCR
00000000Initial Value
R/WR/WR/WR/WR/WRRRRead/Write
WDTCRWDP0WDP1WDP2WDEWDTOE───$21 ($41)
01234567Bit
4.2.2 WatchDog Timer (tiếp)
n WDP2, WDP1, WDP0 : xác định thời gian time_out
2.1s2.2s2M111
1.0s1.1s1M011
0.52s0.55s512K101
0.26s0.27s256K001
0.13s0.14s128K110
65ms68.564K010
32.5ms34.3ms32K100
16.3ms17.1ms16K000
Typical Time_out
at Vcc = 5.0V
Typical Time_out
at Vcc = 3.0V
Number of WDT
Oscillator Cycles
WDP0WDP1WDP2
12
4.2.2 Các cổng vào ra
4.2.2 Các cổng vào ra (tiếp)
n Có 4 cổng vào ra 8 bit PA, PB, PC, PD
n Mỗi cổng đều có 3 thanh ghi (8 bit), ví dụ cổng A :
n Thanh ghi dữ liệu : PORTA
n Thanh ghi điều khiển hướng dữ liệu : DDRA
n Thanh ghi địa chỉ các chân vào : PINA
n Cho phép thao tác vào ra trên từng bít (một cổng có
thể vừa có bit vào vừa có bit ra)
n bit DDRAi=1, chân PAi là chân ra ( = PORTAi)
n bit DDRAi=0, chân PAi là chân vào (= PINAi)
13
4.2.2 Các cổng vào ra (tiếp)
n Phải định nghĩa cổng trước khi sử dụng
n Khả năng chịu tải cao (Isink khoảng 20mA/Pin)
n Vào ra ba trạng thái
n Có khả năng vào tương tự
n Pull_up, I = 33µA÷160µA
4.2.3 ADC
n Đặc điểm:
n Độ phân giải tối đa 10 bit, xấp xỉ liên tiếp
n Độ chính xác tuyệt đối đến ±2 LSB
n Thời gian chuyển đổi: 65-260 µs, 13 chu kỳ cho một lần
chuyển đổi
n 2 chế độ hoạt động: chuyển đổi đơn và chuyển đổi tự do
n Các thanh ghi
n Thanh ghi dữ liệu: ADCL, ADCH
14
4.2.3 ADC (tiếp)
n Thanh ghi chọn kênh : ADMUX
n Thanh ghi điều khiển trạng thái: ADCSRA
00000000Initial Value
R/WR/WR/WR/WR/WR/WR/WR/WRead/Write
ADMUXMUX0MUX1MUX2MUX3MUX4ADLARREFS0REFS1$21 ($41)
01234567Bit
00000000Initial
Value
R/WR/WR/WR/WR/WR/WR/WR/WRead/Write
ADCSRAADPS0ADPS1ADPS2ADIEADIFADATEADSCADEN$21 ($41)
01234567Bit
4.2.4 USART
n Đặc điểm:
n Truyền song công
n Truyền đồng bộ hoặc không đồng bộ
nMaster hoặc Slave cấp xung nhịp
n Khuân dạng dữ liệu đa dạng (5=>9 bit dữ liệu, 1 hoặc 2
bít dừng)
n Kiểm tra bit chẵn lẻ bằng phần cứng
n Tự phát hiện lỗi tràn dữ liệu, khung dữ liệu lỗi
n Khả năng lọc nhiễu
n 3 ngắt truyền, nhận và truyền hết
n Nhiều chế độ kết nối
n Khả năng nhân đôi tốc độ truyền thông
15
4.2.4 USART (tiếp)
n Các thanh ghi
nThanh ghi tốc độ Baud : UBRR
nVD: fck = 4MHz,cần tốc độ 14400bps
nUBRR =16 (16.3), tốc độ thực tế là 14705bps, lỗi 2.1%
nKhông nên sử dụng tốc độ có lỗi > 1%
16 * (UBRR + 1)
FclkBaudRate =
4.2.4 USART (tiếp)
n Thanh ghi dữ liệu: UDR (gồm hai thanh ghi độc lập có cùng
địa chỉ vào ra): chứa dữ liệu nhận và truyền
n Thanh ghi điều khiển và trạng thái: UCSR
(Control and Status Register)
0
R/W
MPCM
0
UCSRA
0000100Initial Value
R/WRRRRR/WRRead/Write
U2XPEDORFEUDRETXCRXC$0B ($2B)
1234567Bit
0
R/W
TXB8
0
UCSRB
0000000Initial Value
RR/WR/WR/WR/WR/WR/WRead/Write
RXB8UCSZ2TXENRXENUDRUETSCIERXCIE$0A ($2A)
1234567Bit
16
4.2.4 USART (tiếp)
Hoạt động:
n Thiết lập tốc độ truyền, 8/9 bit dữ liệu, truyền/nhận
hoặc cả hai, có sử dụng ngắt hay không?
n Truyền dữ liệu:
n Đưa byte dữ liệu cần truyền vào UDR
n Đợi đến khi UDRE = 1 (hoặc sử dụng ngắt) thì truyền tếp
byte tiếp theo
4.2.4 USART (tiếp)
n Nhận dữ liệu:
n Đợi đến khi cờ RXC=1 (hoặc sử dụng ngắt) báo hiệu nhận
được byte dữ liệu
n Kiểm tra cờ FE và OR
n Đọc byte dữ liệu từ UDR
St (St/IDLE)Sp1 [Sp2][P][8][7][6][5]43210(IDLE)
17
4.2.5 EEPROM
n EERIE (EEPROM Ready Intr En)
n EEMWE (EEPROM Master Write En) : cho phép ghi. Bit này
sẽ tự động bị xoá sau 4 chu kỳ đồng hồ
n EEWE (EEPROM Write En) : khi bit này được thiết lập và
EEMWE=1 thì thao tác ghi mới được thực hiện
n EERE (EEPROM Read En): cho phép đọc
n EEPROM. Khi đọc xong, bit này sẽ tự động bị xoá và CPU sẽ
dừng 4 chu kỳ đồng hồ trước khi lệnh tiếp theo được thực hiện
4.2.5 EEPROM (tiếp)
n Quy trình ghi:
n Đợi đến khi EEWE=0
n Ghi địa chỉ mới vào EEARL và EEARH
n Ghi dữ liệu mới vào EEDR
n Ghi mức logic 1 vào bit EEMWE và mức logic 0 vào
EEWE đồng thời
n Trong vòng 4 chu kỳ đồng hồ sau ghi giá trị logic 1 vào
EEWE
18
4.2.6 SPI (Serial Peripheral Interface)
4.2.6 SPI (Serial Peripheral Interface – tiếp)
n Truyền song công
nChọn chế độ chủ hoặc tớ
nBit cao hoặc bit thấp truyền trước
nBảy bít thiết lập tốc độ truyền
nCờ ngắt truyền hết
nCờ bảo vệ xung đột ghi
nĐánh thúc từ chế độ nghỉ
nChế độ nhân đôi tốc độ
19
4.2.7 So sánh tín hiệu tương tự (Analog Comparator)
n Mạch so sánh tín hiệu tương tự: so sánh tín hiệu
analog giữa hai chân AIN1 và AIN2
S1
Reset
+5V
Reset
MOSI
C4 22p
+5V
+5V
CON8
R1
10K
+5V
SCK
J5
Program
1
2
3
4
5
6 MISO
U1
ATMEGA32
1
2
3
4
5
6
7
8
9
10
11 12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40PB0/XCK/T0
PB1/T1
PB2/INT2/AIN0
PB3/OC0/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
RESET
VCC
GND XTAL2
XTAL1
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4/OC1B
PD5/OC1A
PD6/ICP
PD7/OC2
PC0/SCL
PC1/SDA
PC2/TCK
PC3/TMS
PC4/TDO
PC5/TDI
PC6/TOSC1
PC7/TOSC2
AVCC
AGND
AREF
PA7/ADC7
PA6/ADC6
PA5/ADC5
PA4/ADC4
PA3/ADC3
PA2/ADC2
PA1/ADC1
PA0/ADC0
Y1
8MHz
Reset
C5
22p
MISO
+ C3
4.7u
MOSI
SCK
4.1 Giới thiệu chung (tiếp)
20
4.3 Tập lệnh và ngôn ngữ lập trình
4.3.1 Tập lệnh
n 109 lệnh
n Toán học và logic (22)
n Lệnh rẽ nhánh (34)
n Lệnh chuyển đổi dữ liệu (31)
n Lệnh bít và kiểm tra bít (31)
4.3.1 Tập lệnh (tiếp)
Các chế độ định địa chỉ
nĐịa chỉ trực tiếp (Direct Addressing)
nĐịa chỉ qua chỉ số (Indexed Addressing)
nĐịa chỉ tức thời (Immediate Addressing)
nĐịa chỉ tương đối (Relative Addressing)
n.
21
4.3.2 Một số ngôn ngữ lập trình
nAVR Assembler
nAVR Edit 3.5 (lập trình C)
nCodeVisionAVR (lập trình C)
1Chương 5: CodevisionAVR
n IDE (Integrated Development Environment)
n Trình dịch (Compiler)
n Hàm thư viện (Library Functions)
n Tự động sinh mã (Automatic Program Generator)
Hình 5. Giao diện chính của CodevisionAVR
25.1 IDE
5.1.1 File
nTạo file
nMở file
nChỉnh sửa
nLưu
5.1.2 Project
n Tạo một project
n Mở Project
n Thêm chú thích/diễn giải
n Cấu hình cho Project
n Quan sát chương trrình dịch
35.1.3 Công cụ
n Gỡ rối (debugger)
n Lập trình (programmer)
n Terminal
n Cấu hình (Configuring)
5.1.4 Thiết lập môi trường
n Tổng quan
n Soạn thảo
n Hiện lỗi
n Đường dẫn trình gỡ lỗi
n Cấu hình nạp
45.2 Trình dịch
n Tiền xử lý
n Chú thích
n Từ khoá
n Dữ liệu chuẩn, dữ liệu tự định nghĩa
n Hằng, biến
n Chuyển kiểu
n Phép toán
n Hàm
n Con trỏ
n Thanh ghi I/O
n Truy cập EEPROM
n Ngắt
n Assembly
5.3 Hàm chuẩn
n Hàm IO chuẩn
n char getchar(void)
Returns a character received by the UART, using polling.
n void putchar(char c)
Transmits the character c using the UART, using polling.
n
n Hàm toán học
n unsigned char cabs(signed char x)
returns the absolute value of the byte x.
n unsigned int abs(int x)
returns the absolute value of the integer x.
n
5n LCD
n void lcd_write_byte (unsigned char addr, unsigned char data)
write a byte to the LCD character generator or display RAM
n unsigned char lcd_read_byte(unsigned char addr);
read a byte from the LCD character generator or display RAM
n void lcd_gotoxy(unsigned char x, unsigned char y);
set the LCD display position x=0..39 y=0..3
n . . .
n I2C
n void i2c_init(void)
this fun
Các file đính kèm theo tài liệu này:
- bai_giang_ung_dung_vi_dieu_khien_tran_van_hung.pdf