ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
Điều khiển động cơ DC (DC Motor) là một trong những ứng dụng cơ bản nhất
trong ngành điều khiển nói chung và điều khiển tự động nói riêng. Động cơ DC đối
với sinh viên ngành tự động cũng đã trở nên rất thân quen thuộc từ các cuộc thi
trong trường như FanLed 2009 (CLB Nghiên Cứu Khoa Học Khoa Điện-Điện tử)
đến những cuộc thi nổi tiếng như RoboCon.
Đến với Đồ Án 1 lần này chúng tôi xin giới thiệu với người đọc một vấn đề
tiếp cận mới với động cơ DC.Đó là “Điều khiển động cơ DC với PID số trên
DSPIC 33FJ64GP802”,ở đây là tổng hợp nhiều vấn đề mà chúng tôi đã được học
trên trường từ những môn học như: Lý Thuyết Điều Khiển Tự Động,Vi Xử Lý,Thiết
Bị Hệ Thống Tự Động và các môn thí nghiệm liên quan.Đồ án này chúng tôi thực
hiện điều khiển động cơ DC bằng cách đọc từ encoder về vi điều khiển,hiển thị trên
LCD tốc độ(vị trí) động cơ,kết nối với máy tính qua giao tiếp UART (cổng RS
232)với chương trình giao tiếp trên máy tính là GUI của Matlab có thể đặt vận tốc
và các thông số trên màn hình máy tính,trên hết là giải thuật điều khiển động cơ DC
là giải thuật PID mà chúng ta đã được học.
Để tiếp cận với Đồ án thì lần lượt chúng tôi sẽ giới thiệu từ vi điều khiển
DSPIC 33FJ64GP802 rồi đến lý thuyết điều khiển bằng PID,thiết kế phần cứng của
nhóm,và giải thuật PID bằng phần mềm biên dịch C MPLAB
Lời cuối cùng,chúng tôi xin cảm ơn thầy hướng dẫn của nhóm tôi:
T.s HUỲNH THÁI HOÀNG, bên cạnh đó chúng tôi cũng cảm ơn những bạn trong
CLB Nghiên Cứu Khoa Học Khoa Điện –Điện tử đã tận tình giúp đỡ cho chúng tôi
hoàn thành tốt Đồ án này.
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang1
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
MỤC LỤC
.Trang
Lời giới thiệu .................................................................................................. 1
Mục lục ........................................................................................................... 2
CHƯƠNG I: GIỚI THIỆU VỀ DSPIC 33FJ64GP802
1.1 Giới Thiệu Họ Vi Điều Khiển DSPIC 33F & Sơ Đồ Chân & Cấu Trúc Bên
Trong DSPIC 33FJ64GP802
1.1.1 Giới thiệu về họ vi điều khiển DSPIC 33FJ64GP............................... 4
1.1.2 Giới thiệu về DSPIC 33FJ64GP802 ................................................... 4
1.1.3 Sơ đồ chân DSPIC 33FJ64GP802 ...................................................... 5
1.1.4 Mô tả chân I/O của DSPIC 33FJ64GP802 ......................................... 7
1.1.5 Cấu trúc bên trong DSPIC 33FJ64GP802 .......................................... 8
1.1.6 Cấu hình bộ dao động cho chip .......................................................... 9
1.2 Tổ Chức Bộ Nhớ Và Vùng Địa Chỉ Bên Trong DSPIC 33FJ64GP802
1.2.1 Tổ chức bộ nhớ chương trình.............................................................. 11
1.2.2 Vùng địa chỉ dữ liệu .......................................................................... 12
1.2.3 Tổ chức dữ liệu bộ nhớ và sự sắp hàng ............................................. 12
1.3 TIMER Trong DSPIC 33FJ64GP802
1.3.1 Giới thiệu .......................................................................................... 13
1.3.2 Timer A ............................................................................................. 14
1.3.3 Timer B ............................................................................................. 14
1.3.4 Timer C ............................................................................................. 15
1.3.5 Các chế độ thực hiện ......................................................................... 16
1.3.6 Chế độ Timer và cách đặt cấu hình .................................................... 16
1.3.7 Đặt cấu hình Timer 32-bit.................................................................. 17
1.4 NGẮT Trong DSPIC 33FJ64GP802
1.4.1 Giới thiệu về khối ngắt trong DSPIC 33F .......................................... 18
1.4.2 Ưu tiên ngắt ....................................................................................... 19
1.4.3 Tác vụ ngắt ........................................................................................ 19
1.4.4 Thanh ghi trạng thái và điều khiển ngắt ............................................. 20
1.4.5 Thủ tục tạo ngắt ................................................................................. 20
1.4.6 Chương trình phục vụ ngắt (Interrupt Service Rountine) ................... 20
1.5 UART Trong DSPIC 33FJ64GP802
1.5.1 Giới thiệu về UART .......................................................................... 21
1.5.2 Những thanh ghi điều khiển............................................................... 22
1.5.3 Bộ phát tốc độ Baud .......................................................................... 23
1.5.4 Đặt cấu hình UART ........................................................................... 24
1.5.5 Bộ truyền dữ liệu UART ................................................................... 25
1.5.6 Bộ ngắt truyền dữ liệu UART ............................................................ 26
1.5.7 Khối nhận dữ liệu UART .................................................................. 27
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang2
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
CHƯƠNG II: GIẢI THUẬT ĐIỀU KHIỂN PID & ĐIỀU KHIỂN PID SỐ
2.1 Giải Thuật Điều Khiển PID
2.1.1 Lịch sử phát triển................................................................................ 29
2.1.2 Giới thiệu về giải thuật PID ................................................................ 29
2.1.3 Phương pháp Zeigler-Nichols ............................................................. 32
2.2 Điều Khiển PID Số
2.2.1 Vì sao lại sử dụng bộ điều khiển PID số ............................................. 34
2.2.2 Số hóa các công thức tính bộ điều khiển PID số ................................. 34
CHƯƠNG III: THIẾT KẾ PHẦN CỨNG
3.1 Đối Tượng Điều Khiển
3.1.1 Động cơ DC ....................................................................................... 38
3.1.2 Bộ encoder tương đối (incremental optical encoder)........................... 39
3.1.3 Đọc encoder bằng ngắt ngoài.............................................................. 41
3.2 Mô Tả Phần Cứng
3.2.1 Khối Main .......................................................................................... 41
3.2.2 Khối Công Suất .................................................................................. 43
3.2.3 Khối Nguồn ........................................................................................ 43
3.2.4 Khối cổng nạp .................................................................................... 44
3.2.5 Khối UART ........................................................................................ 44
3.2.6 Khối LCD........................................................................................... 45
3.2.7 Khối Nút nhấn ................................................................................... 45
3.2.8 Khối giao tiếp máy tính (GUI) ........................................................... 46
3.2.9 Tóm tắt ............................................................................................... 49
CHƯƠNG IV : LƯU ĐỒ GIẢI THUẬT,KẾT QUẢ THỰC NGHIỆM & KẾT
LUẬN
4.1 Lưu Đồ Giải Thuật
4.1.1 Lưu đồ giải thuật tổng quát................................................................. 53
4.1.2 Lưu đồ giải thuật hàm Main ............................................................... 54
4.1.3 Lưu đồ giải thuật Mappin ................................................................... 55
4.1.4 Lưu đồ giải thuật ngắt ngoài ............................................................... 56
4.1.5 Lưu đồ giải thuật ngắt Timer .............................................................. 57
4.1.6 Lưu đồ giải thuật điều khiển PID vị trí ............................................... 58
4.1.7 Lưu đồ giải thuật điều khiển PID vận tốc ........................................... 59
4.1.8 Lưu đồ giải thuật UART ..................................................................... 60
4.2 Kêt Quả Thực Nghiệm
4.2.1 Hiệu chỉnh PID vị trí .......................................................................... 61
4.2.2 Hiệu chỉnh PID vận tốc ...................................................................... 64
4.3 Kết Luận
4.3.1 Kết luận về DSPIC 33FJ64GP802 ...................................................... 67
4.3.2 Kết luận về giải thuật PID và bộ điều khiển PID số ............................ 67
4.3.3 Kết luận về phần cứng và thiết kế mạch ............................................. 68
PHỤ LỤC .......................................................................................................... 69
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang3
ĐỒ ÁN 1
Chương I:
GVHD:TS.HUỲNH THÁI HOÀNG
GIỚI THIỆU VỀ DSPIC 33FJ64GP802
1.1 GIỚI THIỆU HỌ VI ĐIỀU KHIỂN DSPIC 33FJ64GP SƠ ĐỒ
CHÂN & CẤU TRÚC BÊN TRONG DSPIC 33FJ64GP802
1.1.1 Giới thiệu về họ vi điều khiển DSPIC 33FJ64GP
Họ vi điều khiển DSPIC 33FJ64GP là họ vi điều khiển chuẩn CMOS 16
bit (high performance, 16- Bit digital signal controllers),với CPU được chế tạo
theo cấu trúc Harvard (có vùng nhớ riêng cho chương trình (mã) và dữ liệu).Họ
vi điều khiển DSPIC 33FJ64GP mang đầy đủ các đặc tính của một dòng vi điều
khiển thông thường (I/O port,timer,interrupt,UART…).Nhưng đặc biệt so với
các dòng vi điều khiển khác như 8051,hay AVR thì DSPIC 33FJ64GP có nhưng
thế mạnh sau:
Bộ dao động của DSPIC thông qua bộ chia (nhân tần số) PLL, sau đó
dùng 2 chu kỳ để thực hiện 1 lệnh,ở DSPIC cho phép tần số dao động
tối đa là 80Mhz chạy ở tối đa 40MIPS nên tốc độ xử lý (1 chu kỳ máy là
0.05µs) nhanh hơn rất nhiều so với PIC 16F887 và 8051,cũng như khả
năng nhân tần số thông qua bộ chia có thể giúp ta thay đổi tần số dao
động.
Tập lệnh rút gọn,với trình biên dịch C làm tối ưu hóa giải thuật,ngoài ra
DSPIC rất mạnh về khả năng xử lý số với 2 module lớn là DAC (audio
digital to analog converter) và DCI (data converter interface).
Ngoài ra họ vi điều khiển DSPIC 33FJ64GP còn cho phép nhiều module
giao tiếp (communication Modules) như SPI (hỗ trợ 8-bit và 16-bit với
giao diện I/O đơn giản),I2C,UART,truyền thông CAN(ECANTM
module).
1.1.2 Giới thiệu về DSPIC 33FJ64GP802
Là một trong nhưng vi điều khiển thuộc họ DSPIC 33F,nên ngoài những đặc
tính có được đã nêu ở trên thì đối với 33FJ64GP802 còn có những đặc điểm sau:
+ Số chân: 28
+ Bộ nhớ chương trình (program flash memory): 64Kbyte
+ Ram: 16Kbyte
+ Số chân có thể remap (remappable pins): 16
+ UART : 2
+ Ngắt ngoài (external Interrupts) :3
+ ADC (10-bit/12-bit) :10
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang4
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
+ I/O pins : 21
+ Timer : 5 (16 bit)
Để có thể thấy được tính năng nổi trội và sự hơn hẳn của DSPIC 33FJ64GP802
ta có bảng so sanh sau với một số vi điều khiển đã học
Device
Program
Memory
Data Memory
PIC
16F690
4Kbyte
SRAM
/RAM
(byte)
128
256
DSPIC
33FJ64
GP802
64Kbyte
16K
Flash
8051
EEP
ROM
/ ROM
4Kbyte
256byte
I/O
A/D
Operating
Range
Timer
Interrrupt
32
18
0
1MIPS
2
6
12
5MIPS
3
10
40MIPS
5
21
49
P Communication
Modules
W
M
0
1 UART
4
1UART,1SPI,
1 I2C
2UART,2SPI,
1ECAN,1 I2CTM
4
(10bit/12bit
1.1.3 Sơ đồ chân DSPIC 33FJ64GP802
Hình 1.1
Từ sơ đồ chân ở trên ta thấy :
+ DSPIC 33FJ64GP802 có tất cả 28 chân,có 2 loại là loại linh kiện dán
hoặc chân.
+ DSPIC 33FJ64GP802 có 2 PORT I/O : PORT A,PORT B,PORT
C.Trong đó PORTA gồm các chân : RA0÷RA4,trong đó PORT B
gồm các chân : RB0÷RB15.Ngoài ra còn có thêm 15 chân remapable
pin từ RP0(1) ÷ RP15(1).
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang5
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
+ DSPIC 33FJ64GP802 sử dụng thạch anh (Crystal) gắn bên ngoài có
tầm từ 3Mhz đến 10Mhz,còn nếu dùng thạch anh tốc độ cao (high
speed crystal) có tầm từ 10Mhz-40Mhz.
+ Kết nối phần cứng bên ngoài của DSPIC 33FJ64GP802 trong mạch
được thực hiên như sau (theo datasheet).
Hình 1.2
Dựa vào hình vẽ trên (hình 1.2) ta có thể thiết kế phần cứng cho
mạch,nhưng trước hết ta cần xác định các giá trị R1,R và tụ C,các giá
trị tụ nối giữa AVDD – AVSS. Theo datasheet ta có được
- Tụ nối giữa VCAP /VDDCORE và Ground có tác dụng ổn định điện
áp ngõ ra và chân này (VCAP / VDDCORE) không được nối với
VDD và có giá trị từ 4.7µF ÷ 10µF.
- Các tụ nối giữa các cặp chân cung cấp nguồn như
VDD,VSS,AVDD và AVSS có giá trị thích hợp là 0.1µF, 1020V.Các tụ này nên mắc gần các chân càng tốt hơn trong quá
trình lọc.
- Đối với cách kết nối ngõ vào chân RESET (MCLR)
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang6
ĐỒ ÁN 1
-
GVHD:TS.HUỲNH THÁI HOÀNG
Hình 1.3
Với giá trị R ≤ 10 kΩ (R = 10kΩ) là thích hợp cùng vơi đó là giá trị của
R1,theo datasheet ta thấy R1 ≤ 470Ω (R = 470Ω) có tác dụng hạn dòng,còn lại
tụ C ở đây vơi giá trị thích hợp là 0.1µF (tụ 104) là thích hợp.
1.1.4 Mô tả chân I/O của DSPIC 33FJ64GP802
Tên Chân
(Pin Name)
AN0-AN12
CLKI
CLKO
Loại chân
(Pin Type)
I
I
O
INT0-INT2
RA0-RA4
RB0-RB15
T1CK-T5CK
I
I/O
I/O
I
MCLR
AVDD
I/P
P
U1CTS
U1RTS
I
O
U1RX
U1TX
CVREF
C1RX
C1TX
I
O
O
I
O
Loại bộ đệm
Mô tả
(Buffer type)
Analog
Những kênh ngõ vào analog
ST/CMOS
Ngõ vào của bộ dao động
ngoài,luôn kết nối với chân
ST/CMOS
OSC1-2
ST
Ngắt ngoài 0-2
ST
PORTA
ST
PORTB
Ngõ vào timer 1-timer 5(với
external clock)
ST
Ngõ Reset
P
Nối V+ nguồn cung cấp
(3.3V)
ST
Ngõ vào UART1 xóa để nhận
ST
Ngõ ra UART1 sẵn sàng
nhận
ST
Ngõ vào UART1 nhận
ST
Ngõ ra UART1 truyền đi
ANA
Ngõ ra so sánh điện áp
ST
Ngõ vào nhận ECAN1
ST
Ngõ ra truyền đi ECAN1
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang7
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
1.1.5 Cấu trúc bên trong DSPIC 33FJ64GP802
Từ cấu trúc bên trong họ vi điều khiển 33FJ64GPX02 ta có thể thấy được rằng:
+ Các chân lấy từ vi điều khiển có 2 loại là: Một là các chân ở dạng
remappable pins,và các PORT (A,B,C) thực hiện các chức năng I/O
hoặc khác
+ Sử dụng 2 đường Bus dữ liệu là : X data bus,Y data bus.Trong đó X
data bus nối với các PORT và ngõ interrupt controller đồng thời kết
nối với bộ đếm chương trình Programmer counter, data latch.Còn Y
data bus nối với DMA RAM từ DMA RAM nối với DMA Controller
nối kết với các PORT và Remappable Pins của vi điều khiển.
Hình 1.4
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang8
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
1.1.6 Cấu hình Bộ dao động cho chip
- Có 2 sự lựa chọn cho bộ định thời trên chíp (nguồn xung nhịp) là bộ dao động
nội và bộ dao động ngoại.
- Bộ PLL ( Phase-Locked Loop) trên chip dùng để định tầm cho tần số thực thi
cũng như định tần số xung nhịp cần thiết cho hệ thống.
- Bộ dao động FRC có thể được dùng với bộ PLL trên chip có thể cho phép chip
thực thi lệnh với tốc độ tối đa mà không cần bất cứ nguồn xung nhịp nào bên
ngoài.
- Thanh ghi điều khiển nguồn xung nhịp là OSCON
Hình 1.5
DSPIC 33FJ64GP802 cung cấp cho ta 7 chế độ lựa chọn xung nhịp:
- Bộ dao động nhanh RC (FRC)
- Bộ dao động FRC kết hợp với Phase Locked Loop (PLL)
- Bộ dao động chính (XT,HS hoặc EC)
- Bộ dao động với PLL
- Bộ dao động phụ (LP)
- Bộ dao động nguồn thấp RC (LPRC)
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang9
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
- Bộ dao động FRC với postscaler
Việc lựa chọn bộ định thời cho hệ thống:
Thiết lập cấu hình những bit cho bộ dao động được đặt trong thanh ghi
cấu hình trong bộ nhớ chương trình.Trong đó:
+Những bits cấu hình lựa chọn dao động tức thời FNOSC<2:0>
+ Những bits lập nên chế độ dao động chính là POSCMD<1:0>
+ Những bits cho phép người dùng lựa chọn trong 12 bộ xung nhịp
Ngõ ra bộ dao động (hoặc ngõ ra của PLL nếu ngõ này được chọn) là FOSC
được chia cho 2 để tạo ra chỉ dẫn thiết bị xung nhịp (FCY) và xung nhịp
biên (FP).FCY sẽ xác định tốc độ thực thi lệnh của thiết bị và tốc độ đó có
thể tăng lên 40MHz.
Một trong những điều chúng ta cần lưu ý trong việc viết chương trình cho
DSPIC 33FJ64GP802 là việc CONFIG các tính năng hay các hàm
header,trong đó có việc CONFIG cấu hình của PLL.Chúng ta cần biết là:Bộ
PLL trên chip cũng cấp khả năng linh hoạt cao trong việc lựa chọn tốc độ
thực hiện lệnh.Có thể tham khảo theo sơ đồ dưới (Hình 1.6)
o Ngõ ra của bộ dao động chính hoặc FRC,bao hàm trong đó là
“FIN”,được chia cho cho chỉ số định tầm N1 có giá trị từ 2,3…33
trước khi được cung cấp bởi điện áp điều khiển dao động PLL(VCOvoltage controlled Oscillator).Ngõ vào của VCO phải được lựa chọn
trong tầm 0.8Mhz đến 8Mhz.
o Bộ chia hồi tiếp cung cấp bởi chỉ số ‘M’.Chỉ tiêu này được lựa chọn
là để cho tần số VCO ngõ ra nằm trong tần số 100Mhz -200Mhz
o Ngõ ra VCO sau cùng được chia cho chỉ số N2.’N2’ có thể là 2,4,8 và
phải được chọn sao cho ngõ ra tần số PLL nằm trong tầm 12.5Mhz
đến 80Mhz,để tạo ra tốc độ thực thi lệnh từ 6.25-40MIPS
Vd: Như cho tần số của thạch anh là 10Mhz được dùng để chọn
chế độ dao động là XT với PLL
Nếu PLLPRE<4:0> = 0 thì N1 = 2 lúc này ngõ vào VCO là 10/2
= 5 Mhz thuộc khoảng 0.8 – 8Mhz (thỏa)
Nếu PLLDIV<8:0> = 0x1E thì M = 32 lúc này thì ngõ ra VCO là
5 x 32 = 160 Mhz cũng thuộc trong khoảng 100-200 Mhz
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang10
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
Nếu PLLPOST<1:0> = 0 thì N2 = 2.Lúc này cung cấp cho FOSC
là 160/2 = 80Mhz.Thì kết quả tốc độ xử lý lệnh là 80/2 = 40MIPS
Hình 1.6
1.2 TỔ CHỨC BỘ NHỚ VÀ VÙNG ĐỊA CHỈ BÊN TRONG
DSPIC 33FJ64GP802
1.2.1 Tổ chức bộ nhớ chương trình
Không gian bộ nhớ chương trình được tổ chức thành từng khối word địa
chỉ.Mặc dầu nó có được tạo bởi 24bits,nhưng những khối word địa chỉ này dễ dàng
tương thích cho truy cập mỗi địa chỉ bộ nhớ chương trình tại vùng word thấp và
word cao (lower word và upper word).Word thấp luôn đặt ở địa chỉ chẵn còn word
cao đặt ở địa chỉ lẻ.(hình 2.1)
Địa chỉ bộ nhớ chương trình thường là những word xếp gọn trên vùng word
thấp và những địa chỉ được tăng lên hoặc giảm đi trong quá trình code thực thi.Việc
sắp xếp này mang lại sự tương thích với không gian địa chỉ dữ liệu bộ nhớ và dữ
liệu chương trình được truy cập dễ dàng.
Hình 2.1
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang11
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
1.2.2 Vùng địa chỉ dữ liệu
DSPIC 33FJ64GP802 có vùng địa chỉ phân chia 16-bit-wide dữ liệu.
Vùng địa chỉ dùng AGUs (Address Generation Units) để thực hiện các tác vụ
đọc và ghi.Sơ đồ bộ nhớ dữ liệu và truy cập được thể hiện qua hình dưới
(Hình 2.2).Tất cả vùng địa chỉ tích cực (EAs) trong vùng địa chỉ dữ liệu rộng
16bits và chỉ đến những bytes trong vùng đó.Sự sắp xếp này cho ra địa chỉ
vùng địa chỉ truy cập đến là 64Kbytes hay là 32K words.Một nửa thấp vùng
dữ liệu được dùng cho việc bù địa chỉ,còn nửa cao dữ liệu được dùng để dự
trữ chương trình
1.2.3 Tổ chức dữ liệu bộ nhớ và sự sắp hàng
Việc giữ lại kết cấu tương thích với thiết bị những thiết bị PIC MCU và
cải thiện vùng sử dụng bộ nhớ một cách hiệu quả,DSPIC 33FJ64GP802 hỗ trợ
cả tác vụ tương tác đến các byte lẫn các word trong bộ nhớ.Cũng nhờ vì kết
quả của việc truy cập các byte mà tất cả việc tính toán hay truy cập địa chỉ một
cách hiệu quả được định nội bởi từng bước thông qua các word-aligned (word
xếp hàng).
Việc đọc dữ liệu byte,đọc hoàn toàn word có chứa byte,dùng LSB của bất
kỳ EA để xác định byte nào được lựa chọn.Byte được chọn được đặt trên LSB
của phần data.Điều đó chứng tỏ rằng bộ nhớ dữ liệu và những thanh ghi được
tổ chức thành 2 phần song song nhau và chia sẻ chung phần địa chỉ decode
nhưng tách riêng thành những đường ghi khác nhau (write lines).Byte dữ liệu
chỉ có thể được ghi vào phân vùng tương thích ở những chuỗi hay thanh ghi
mà có nối kết với địa chỉ byte đó.
Tất cả các word truy cập phải được xếp thẳng hàng trên vùng địa chỉ
chẵn.Các word dữ liệu truy cập mà không xếp thẳng hàng không được hỗ
trợ,vì vậy cần lưu ý trong quá trình truy xuất byte và word hoặc trong quá
trình dịch mã 8-bits (8-bits MCU code).Nếu tác vụ đọc hoặc ghi được cố tình
thực thi với các word xếp không thẳng hàng thì có thể dẫn đến việc sinh ra các
lỗi địa chỉ.Nếu có lỗi báo trong tác vụ ghi thì sự chỉ dẫn tác vụ này sẽ tiến
hành nhưng việc ghi sẽ không thực hiện.Một cách khác là khi có lỗi xảy ra thì
hệ thống hay ứng dụng người dùng sẽ cho phép kiểm tra trạng thái tại lỗi đó.
Tất cả các byte có thể được ghi vào thanh ghi W hoặc vào Least
significant byte.Phần Most Significant byte không được dùng đến.
Tác vụ chỉ dẫn mở rộng dấu (SE) được cung cấp để cho phép các ứng
dụng người dùng có thể chuyển từ 8-bits có dấu sang 16-bits có dấu.Như một
sự lựa chọn với 16-bits không dấu dữ liệu người dùng có thể xóa phần MSB
của bất kỳ thanh ghi W nào bởi tác vụ ZE(zero-extend).
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang12
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
Hình 2.2
1.3 TIMERS TRONG DSPIC 33FJ64GP802
1.3.1 Giới Thiệu
Họ vi điều khiển DSPIC đưa ra một vài khối 16-bit Timer,trong đó chia ra 3
loại Timer khác nhau là:
+ Timer loại A(Timer 1).
+ Timer loại B(Timer 2,Timer 4).
+ Timer loại C(Timer 3,Timer 5).
Timer B và Timer C có thể kết hợp lại để tạo thành bộ Timer 32-bit.
Mỗi khối timer 16-bit timer/counter chứa những thanh ghi có thể đọc hoặc
ghi sau:
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang13
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
+ TMRx:Thanh ghi đếm 16 bit Timer.
+ PRx: Thanh ghi 16-bits Timer Period giao tiếp với Timer.
+TxCON:Thanh ghi điều khiển 16-bits Timer.
Mỗi khối timer đều có những bit giao tiếp với điều khiển ngắt.
Bit enable ngắt(TxIE).
Bit cờ trạng thái ngắt(TxIF).
Bit điều khiển khoảng thời gian ngắt(TxIP<2:0>).
1.3.2 Timer A
Timer 1 trên chip là loại Timer A,so với các loại Timer khác thì Timer A có
những đặc điểm khác như :
+Thực thi lệnh từ bộ dao động nguồn thấp 32kHz trên các thiết bị
+Có thể thực thi lệnh không đồng bộ với bộ đếm Counter từ nguồn xung
nhịp bên ngoài.
Sơ đồ Timer A như sau:
Hình 3.2
1.3.3 Timer B
Timer 2,Timer 4 là những Timer loại B.Timer B chứa những điểm đặc biệt :
+Có thể kết nối với Timer C để tạo nên bộ timer 32-bits.
+Ngõ vào của bộ xung nhịp bên ngoài (TxCK) luôn luôn đồng bộ hóa
với xung nhịp bên trong thiết bị và bộ xung nhịp đồng bộ được thực thi sau khi
TxCK được chia cho bộ định tầm.
Sơ đồ khối Timer B :
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang14
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
Hình 3.3
1.3.4 Timer C
Các Timer :Timer 3,Timer 5 là thuộc loại Timer C,với những chi tiết khác
biệt sau :
+ Có thể kết nối với bộ Timer B để tạo ra bộ timer 32-bits.
+ Có tối thiểu một Timer loại C để kích khởi cho cho bộ chuyển đổi
A/D.
+Ngõ vào của bộ xung nhịp bên ngoài (TxCK) luôn luôn đồng bộ hóa
với xung nhịp bên trong thiết bị.
Sơ đồ cấu trúc Timer C :
Hình 3.4
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang15
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
1.3.5 Các chế độ thực hiện
Khối Timer có thể thực hiện theo các chế độ sau :
+ Chế độ Timer. (Timer mode)
+Chế độ đếm đồng bộ (Synchronous Counter mode)
+Chế độ đếm không đồng bộ(Asynchronous Counter mode)
+Chế độ cổng (Gated Timer mode)
Chế độ Timer và chế độ cổng, ngõ vào bộ xung nhịp được lấy từ chu kỳ
xung nội (FCY).Chế độ đếm đồng bộ và chế độ đếm không đồng bộ,ngõ vào xung
nhịp được lấy từ xung nhịp ngoài tại chân TxCK.
Những chế độ chọn được xác định bởi các bits:
+TCS (TxCON<1>): Bit điều khiển nguồn xung Timer
+ TSYNC (TxCON<2>): Bit điều khiển chế độ đồng bộ hóa ( Chỉ có
Timer A)
+ TGATE (TxCON<6>): Bit điều khiển mở cổng
1.3.6 Chế độ Timer và cách đặt cấu hình
Ở chế độ Timer,ngõ vào xung nhịp được lái bởi chu kỳ xung nội (FCY),và
được chia cho giá trị định tầm trong chương trình.Khi chế độ timer được khởi
động,Timer được chạy tại bất kỳ nấc cao của ngõ vào xung nhịp và lúc sinh ra tác
vụ ngắt.
Đặt cấu hình Timer:
+ Xóa bit điều khiển TCS (TxCON<1>) để chọn nguồn xung nhịp
nội.
+ Xóa bit điều khiển TGATE (TxCON<6>) để ngắt chế độ Cổng
timer thực thi.
Chú ý: Thanh ghi PRx có tác dụng reset thời gian đếm timer sau khi bit
TxIF được lập lên mức cao.
Bit TxIF được lập nên mức cao để chỉ kết thúc một chu trình thực thi
(delay).
Vd: Đây là ví dụ mô tả code tuần tự được lập nên Timer 1 chế độ 16-bit.Phần code
này sẽ cho ra một sự kiện ngắt sau mỗi 10 chu kỳ lệnh.
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang16
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
Các chế độ khác của bộ Timer như : Chế độ Cổng (Gated Timer mode),chế
độ đếm đồng bộ ( Synchronous Counter mode),chế độ đếm không đồng
bộ(Asynchronous Counter mode) cũng có cách đặt cấu hình tương tự như chế độ
timer như trên,có thể xem chi tiết cụ thể ở datasheet.
1.3.7 Đặt cấu hình Timer 32-bit
Chế độ timer 32-bit được tạo bởi kết hợp giữa Timer loại B và Timer loại
C.Để thực hiện Timer 32-bit thì bit điều khiển Timer 32-bit ở trong thanh ghi điều
khiển Timer loại B (TxCON<3>) phải được đưa lên cao.Timer C chứa word cao
trong khi Timer B chứa word thấp.
Khi cấu hình cho tác vụ 32-bit,chỉ có những bit trong thanh ghi điều khiển
loại B là cần thiết cho việc lập nên và điều khiển.Cũng không loại trừ bit TSIDL,tất
cả các bit trong thanh ghi điều khiển Timer C thì bỏ ngõ.
Để điều khiển ngắt,32-bit timer kết hợp dùng cho ngắt tích cực,cờ ngắt,và
những bit ưu tiên ngắt timer C.Bit điều khiển ngắt và trạng thái của Timer B bị bỏ
ngõ trong tác vụ thực thi timer 32-bit
Chế độ 32-bit Timer được xác định bởi những bit theo sau ở trong thanh ghi
Timer B:
TCS(TxCON<1>):Bit điều khiển nguồn xung nhịp Timer.
TGATE (TxCON<6>): Bit điều khiển cổng timer.
Ngõ vào xung nhịp (FCY hoặc TxCK) cho tất cả 32-bit Timers được định
tầm lựa chọn các thông số sau: 1:1,1:8,1:64, và 1:256.Việc định tầm xung
nhịp này được lựa chọn bằng bits định tầm xung nhịp Timer (TCKPS<1:0>)
trong thanh ghi điều khiển loại B (TxCON<5:4>).Bộ định tầm đếm được
xóa khi bất kỳ tác vụ theo sau đây:
+ Ghi vào thanh ghi Timer B (TMRx) hoặc thanh ghi điều khiển Timer
B (TxCON).
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang17
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
+Xóa bít tích cực timer (TON) trong thanh ghi điều khiển Timer B
(TxCON<15>).
+ Khi reset hệ thống.
1.4 NGẮT TRONG DSPIC 33FJ64GP802
1.4.1 Giới thiệu về khối ngắt trong DSPIC 33F
Họ vi điều khiển DSPIC 33F có khối (module) điều khiển ngắt đã giảm đi số
lượng những tín hiệu ngắt ngoại biên và những tín hiệu ngắt đơn đến CPU của
DSPIC33F.Ở khối này chứa đựng những đặc điểm sau:
+ 7 chế độ lựa chọn mức cao cho người dùng.
+ Vector ngắt có thể up lên tận 126 vector
+ Một vector ngắt cho mỗi quá trình ngắt
+Bảng vector ngắt có thể thay đổi để phục vụ quá trình debug
Bảng vector (Interrupt Vector table)
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang18
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
1.4.2 Ưu tiên ngắt
Mỗi nguồn ngắt ngoại vi có thể được gán với một trong 7 mức ưu tiên ngắt.Đối
với mỗi ngắt riêng lẻ thì những bit điều khiển mức ưu tiên ngắt của người dùng
được chứa trong 3 bit thấp (3 bit đầu tiên 0,1,2) của thanh ghi IPC.Bit còn lại (bit 3)
trong 4 bit thấp được đặt ở mức tích cực thấp.Những bit này xác định việc gán mức
ưu tiên đến một chế độ ngắt riêng biệt.Nếu các bit của thanh ghi IPC được nối với
nguồn ngắt và đều được xóa,thì nguồn ngắt sẽ bịđưa về mức thấp.
Ngoài ra việc lập mỗi nguồn ngắt cho một trong 7 mức tích cực của ứng dụng
người dùng sẽ cung cấp cho người dùng khả năng linh hoạt xử lý ngắt.VD: khối
UART1 Rx ngắt có thể dùng mức ưu tiên 7 và ngắt ngoài 0 (INT0) có thể đặt ở mức
ưu tiên 1 tuy vậy nó sẽ làm cho mức ưu tiên ngắt giảm đi tốc độ truy xuất.
1.4.3 Tác vụ ngắt
Tất cả những cờ ngắt sự kiện đều được lấy mẫu trong quá trình thực thi
lệnh.Một yêu cầu chờ ngắt (IRQ) được chỉ ra khi cờ ngắt được bật lên 1 (tích cực)
trong thanh ghi IFS.IRQ xuất hiện sẽ dẫn đến tác vụ ngắt,nếu bit tương thích ở trong
thanh ghi tích cực ngắt (IECx) được đặt lên mức tích cực.Trong khoảng nghỉ của
chu kỳ lệnh lúc mà IRQ được lấy mẫu,thì những mức ưu tiên trong yêu cầu chờ ngắt
sẽ được tham chiếu.
Lệnh của vi điều khiển khi IRQ được lấy mẫu hoàn toàn trước chương trình
phục vụ ngắt thực hiện (Interrupt Service Rountine).
Nếu trong quá trình chờ yêu cầu ngắt mà người dùng gán mức ưu tiên lớn hơn
mức ưu tiên lệnh xử lý hiện tại của vi điều khiển,được chỉ bởi bits trạng thái (SR
<7:5>) trên IPL<2:0>,thì quá trình ngắt sẽ được vi điều khiển thực hiện,quá trình
xử lý hiện tại các thông tin hay dữ liệu sẽ được lưu vào stack,quá trình này được
diễn tả:
Giá trị hiện tại của PC.
Byte thấp của thanh ghi trạng thái (SRL).
Bit trạng thái IPL3 (CORCON<3>).
Với 3 giá trị này cho phép chương trình hay con trỏ chương trình (Program
counter address) sẽ tự động quay về vị trí trước khi thực hiện ngắt để tiếp tục thực
thi lệnh nhờ việc lưu lại những bit trạng thái MCU và thông tin trước ngắt.
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang19
ĐỒ ÁN 1
GVHD:TS.HUỲNH THÁI HOÀNG
Hình 4.1
1.4.4 Thanh ghi trạng thái và điều khiển ngắt
INTCON1,INTCON2: Đây là những thanh ghi điều khiển ngắt toàn
cục.Trong đó INTCON1 chứa bit NSTDIS (Nesting Disable) cũng giống
như việc xử lý trạng thái cờ và nguồn xử lý ngắt.Còn INTCON2 điều
khiển tín hiệu yêu cầu ngắt ngoài và tra bảng vector ngắt.
IFSx:Thanh ghi trạng thái cờ ngắt.
IECx: Thanh ghi điều khiển việc tích cực ngắt.
IPCx: Thanh ghi điều khiển ưu tiên ngắt.
SR: Thanh ghi trạng thái CPU.
1.4.5 Thủ tục tạo ngắt
Ban đầu:
Đặt cấu hình nguồn ngắt:
1. Đặt bit điều khiển NSTDIS lên cao.
2. Sau đó gán mức ưu tiên người dùng cho nguồn ngắt bằng cách
ghi ra những bit điều khiển trên thanh ghi điều khiển.
IPCx.Mức ưu tiên phụ thuộc vào ứng dụng người dùng và loại
nguồn ngắt.Nếu không muốn dùng nhiều mức ưu tiên,ta có thể
dùng chương trình để tích cực tất cả các bit trên thanh ghi
IPCx để tất cả các nguồn ngắt đều có giá trị khác 0.
3. Xóa bit trạng thái cờ ngắt nối với ngoại biên qua kết nối với
thanh ghi trạng thái IFSx.
4. Tích cực nguồn ngắt bằng cách lập tích cực các bit điều khiển
có kết nối với nguồn bời thanh ghi điều khiển IECx.
1.4.6 Chương trình phục vụ ngắt (Interrupt Service Routine)
Đây là chương trình mà khi quá trình ngắt thì vector PC sẽ chỉ đến chương
trình con này để thực thi các lệnh.Nói chung đối với DSPIC 33F cũng tương tự như
SVTH: LÊ VĂN QUÝ - ĐINH QUANG TRƯỜNG – TRẦN VĂN VINH
Trang20
- Xem thêm -