2.3 Kiến trúc vi điều khiểnn 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
Trang 1MÔN HỌC
Ứng dụng Vi điều khiển
(Microcontroller Applications)
By Trần Văn Hùng Mechatronics Dept
http://www.ntu.edu.vn/
Email: tvh42th@gmail.com
Tài liệu tham khảo
1 Microprofessors and microcpmputers hardware and softwware, Ronaid J.Tocci, Frank J.Ambrosio,
Prentice Hall, 2003
2 Interfacing Sensors To The Pc, Willis J.Tompkin, Jonh G.webster, Prentice Hall, 1998
3 Vi xử lý, Văn Thế Minh, NXB Giáo Dục.
4 Họ vi điều khiển 8051, Tống Văn On.
5 Kỹ thuật Vi điều khiển AVR, Tống Văn On.
Trang 2Nội dung chương trình
1. Thiết kế mạch điều khiển ánh sáng theo chương trình định trước
2. Thiết kế mạch trang trí bằng đèn LED
3. Thiết kế mạch nhận dạng điểm phục vụ (thêm ít nhất 2IC)
4. Thiết kế mạch đo lượng mưa
5. Thiết kế mạch điều khiển nhiệt độ không khí
6. Thiết kế mạch điều khiển nhiệt độ dung dịch
7. Thiết kế mạch đồng hồ điện tử
8. Thiết kế mạch tính thời gian cho các môn điền kinh
9. Thiết kế bảng quang báo
10. Thiết kế mạch khoá điện tử
11. Thiết kế mạch điều khiển thiết bị bằng remote
12. Kết nối bàn phím máy tính với VXL, hiển thị ký tự lên LCD
13. Thiết kế mạch điều khiển Robot chạy theo qũy đạo (sd motor bước)
14. Thiết kế mạch điều khiển tốc độ động cơ DC
15. Thiết kế mạch điều khiển góc quay của môtơ, ổn tốc cho motor
Trang 41.1.1 Chuyển đổi giữa hệ mười và hệ hai
n Đổi hệ hai sang hệ mười
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.
0 0 1
Trang 51.2 Các phép toán số học đối với hệ hai
ci = (ai – Bi-1) – bi (nếu (ai – Bi-1) >= bivà 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.
0 0 0 0
1 1
0
0
0 1 1 1
1
0 1 0 1
0
0 0 0 0
1
1 1 1
1
Trang 61.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 1 0 1
1
0 1
1 1
1 0 1 1 1 1 1
0 0 0 0
0
1 0 0
1
1 1 0 1 0
1
1 0 1 0 0
Trang 7n Khả năng thay đổi dễ dàng
n Khả năng tái sử dụng tài nguyên (thư viện,…)
Trang 8n 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
Trang 92.3 Kiến trúc vi điều khiển
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
Trang 102.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
64 I/O Resisters
Internal SRAM (512 x 8)
EEPROM (512 x 8)
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, …
Trang 112.3.5 Đơn vị điều khiển
n Cung cấp xung nhịp và điều khiển tín hiệu
Trang 122.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, I 2 C,…)
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)
Trang 132.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
Trang 142.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
Trang 15n ROM (read only memory)
n RAM (random access memory)
ROM ReadOnly
Trang 16n 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ớ.
Trang 17c 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.
Select IC
Hình 3 Bộ nhớ ROM
Trang 183.1.3 ROM có thể lập trình được
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
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)
Trang 19c 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ớ
Trang 203.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
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)
nChế tạo đơn giản
nDễ dàng bảo trì
nThường được sử dụng trong hệ thống có bộ nhớ nhỏ
n DRAM (dynamic RAM)
nGiá thành thấp
nĐòi hỏi mạch phụ trợ
nPhải làm tươi (refresh) thường xuyên
Trang 213.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
Trang 226 G2A
4 G2B 5
Trang 23Hì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
1 1 1 1 1 1 1 1 Các địa chỉ khác
0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0
0
1 0 1 1 1 1 1 1 0 1 1 1 1 1 1
0
0
1 1 0 1 1 1 1 1 1 0 1 1 1 1 1
0
0
1 1 1 0 1 1 1 1 0 0 1 1 1 1 1
0
0
1 1 1 1 0 1 1 1 1 1 0 1 1 1 1
0
0
1 1 1 1 1 0 1 1 0 1 0 1 1 1 1
0
0
1 1 1 1 1 1 0 1 1 0 0 1 1 1 1
0
0
1 1 1 1 1 1 1 0 0 0 0 1 1 1 1
Trang 246 G2A
4 G2B 5
Hình 3 Phối ghép bộ nhớ
Bộ tạo xung trễ Ready
Row address decoder
7 bit Row address register
Trang 25CS
Trang 26A3 A2 A1 A0R/W
AB4
Trang 27Chươ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
nKhoảng hơn 100 lệnh, hầu hết thực hiện một chu kỳ máy
n32 thanh ghi đa năng 8 bit
nCó thể lên tới 16 MIPS tại tần số 16MHz
Trang 284.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 (chế độ chạy bình thường: 6mA)
4.1 Giới thiệu chung (tiếp)
Trang 294.1 Giới thiệu chung ( tiếp )
64 I/O Resisters
Internal SRAM (512 x 8)
EEPROM (512 x 8)
Data Memory
$000
$1FF
Trang 30… R2 R1
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, 31tạo thành các thanh
ghi 16 bit
Trang 31b 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
Trang 32d 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:
nTruy cập bộ nhớ SRAM
nChế độ ngủ
nChế độ ngắt ngoài
Trang 33f 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 Ready SPM_RDY
$028 21
Two-wire Serial Interface TWI
$026 20
Analog Comparator ANA_COMP
$024 19
EEPROM Ready EE_RDY
$022 18
ADC Conversion Complete ADC
$020 17
USART, Tx Complete USART, TXC
$01E 16
USART Data Register Empty USART, UDRE
$01C 15
USART, Rx Complete USART, RXC
$01A 14
Serial Transfer Complete SPI, STC
$018 13
Timer/Counter0 Overflow TIMER0 OVF
$016 12
Timer/Counter0 Compare Match TIMER0 COMP
$014 11
Timer/Counter1 Overflow TIMER1 OVF
$012 10
Timer/Counter1 Capture Match B TIMER1 COMPB
$010 9
Timer/Counter1 Capture Match A TIMER1 COMPA
$00E 8
Timer/Counter1 Capture Event TIMER1 CAPT
$00C 7
Timer/Counter2 Overflow TIMER2 OVF
$00A 6
Timer/Counter2 Compare Match TIMER2 COMP
$008 5
External Interrupt Request 2 INT2
$006 4
External Interrupt Request 1 INT1
$004 3
External Interrupt Request 0 INT0
$002 2
External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR Reset Reset
$000 1
Interrupt Difinition Source
ProgramAddress
Vector No.
Trang 344.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
Initial Value
R/W R/W R/W R/W R/W R/W R/W R/W
Read/Write
SREG C
Z N V S H T I
$3F ($5F)
0 1 2 3 4 5 6 7
Bit
Trang 354.2 Các chức năng điều khiển
nNguồn đồng hồ từ mạch chia thời gian hoặc từ chân T0
(theo sườn lên/xuống)
nNgắt tràn
n T/C1:
n16 bit
nNguồn đồng hồ từ mạch chia thời gian hoặc từ chân T1
(theo sườn lên/xuống)
nCó 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
Trang 364.2.1 Timer/Counter ( tiếp )
n T/C2:
n8 bit
nNguồ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
Clock
Restart
Reset
Trang 374.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
0 0 0 0 0 0 0 0
Initial Value
R/W R/W R/W R/W R/W R
R R
Read/Write
WDTCR WDP0
WDP1 WDP2 WDE
Bit
4.2.2 WatchDog Timer ( tiếp )
n WDP2, WDP1, WDP0 : xác định thời gian time_out
2.1s 2.2s
2M 1
1 1
1.0s 1.1s
1M 0
1 1
0.52s 0.55s
512K 1
0 1
0.26s 0.27s
256K 0
0 1
0.13s 0.14s
128K 1
1 0
65ms 68.5
64K 0
1 0
32.5ms 34.3ms
32K 1
0 0
16.3ms 17.1ms
16K 0
0 0
WDP1
WDP2
Trang 384.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 :
nThanh ghi dữ liệu : PORTA
nThanh ghi điều khiển hướng dữ liệu : DDRA
nThanh 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)
nbit DDRAi=1, chân PAi là chân ra ( = PORTAi)
nbit DDRAi=0, chân PAi là chân vào (= PINAi)
Trang 394.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 (Isinkkhoảng 20mA/Pin)
Trang 404.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
0 0 0 0 0 0 0 0
Initial Value
R/W R/W R/W R/W R/W R/W R/W R/W Read/Write
ADMUX MUX0
MUX1 MUX2 MUX3 MUX4 ADLAR REFS0 REFS1
$21 ($41)
0 1 2 3 4 5 6 7
Bit
0 0 0 0 0 0 0 0
Initial
Value
R/W R/W R/W R/W R/W R/W R/W R/W Read/Write
ADCSRA ADPS0
ADPS1 ADPS2 ADIE ADIF ADATE ADSC ADEN
$21 ($41)
0 1 2 3 4 5 6 7
Bit
4.2.4 USART
nĐặc điểm:
nTruyền song công
nTruyền đồng bộ hoặc không đồng bộ
nMaster hoặc Slave cấp xung nhịp
nKhuân dạng dữ liệu đa dạng (5=>9 bit dữ liệu, 1 hoặc 2
bít dừng)
nKiểm tra bit chẵn lẻ bằng phần cứng
nTự phát hiện lỗi tràn dữ liệu, khung dữ liệu lỗi
Trang 414.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
0 0 0 0 1 0 0
Initial Value
R/W R R R R R/W R
Read/Write
U2X PE
DOR FE UDRE TXC RXC
$0B ($2B)
1 2 3 4 5 6 7
Bit
0
R/W
TXB8 0 UCSRB
0 0 0 0 0 0 0
Initial Value
R R/W R/W R/W R/W R/W R/W Read/Write
RXB8 UCSZ2 TXEN RXEN UDRUE TSCIE RXCIE
$0A ($2A)
1 2 3 4 5 6 7
Bit
Trang 424.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
nKiểm tra cờ FE và OR
nĐọc byte dữ liệu từ UDR
St 0 1 2 3 4 [5] [6] [7] [8] [P] Sp1 [Sp2] (St/IDLE)
(IDLE)
Trang 434.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
nGhi địa chỉ mới vào EEARL và EEARH
nGhi dữ liệu mới vào EEDR
nGhi mức logic 1 vào bit EEMWE và mức logic 0 vào
EEWE đồng thời
nTrong vòng 4 chu kỳ đồng hồ sau ghi giá trị logic 1 vào
EEWE
Trang 444.2.6 SPI (Serial Peripheral Interface)
4.2.6 SPI (Serial Peripheral Interface – tiếp)
nTruyề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ỉ
Trang 454.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
+5V
CON8
R1 10K
22 24 26 28
30
31
32
33 35 37 39 PB0/XCK/T0
PB1/T1 PB2/INT2/AIN0 PB3/OC0/AIN1 PB4/SS PB5/MOSI PB7/SCK
PC0/SCL PC1/SDA PC2/TCK PC3/TMS PC5/TDI PC6/TOSC1
AVCC
AGND
AREF
PA7/ADC7 PA5/ADC5 PA3/ADC3 PA1/ADC1
Y1 8MHz
Reset
C5
22p MISO
+ C3 4.7u
MOSI SCK
4.1 Giới thiệu chung ( tiếp )