Mục lục
Mục lục 3
CHƯƠNG I .5
SƠ LƯỢC VỀ VI ĐIỀU KHIỂN 5
1.1. Sơ Lược Về Cấu Trúc Của Vi Điều Khiển 5
1.2 Một Vài Họ Vi Điều Khiển Phổ Biến: 7
1.2.1 INTEL 8051 .7
1.2.3 MOTOROLA 68HCxx 7
1.2.4 MICROCHIP PIC 12Xxxx, 16Xxxx, 17Xxxx, 18Xxxx, DSPIC .8
CHƯƠNG II 9
VI ĐIỀU KHIỂN MICROCHIP PIC 9
2.1 Lịch Sử Phát Triển 9
2.2 Phân Loại .10
2.2.1 Họ cấp thấp (low-end) 10
2.2.2 Họ cấp chung (Mid-range) 10
2.2.3 Họ cấp cao (High-end) 17Cxxx .11
2.2.4 Họ cấp cao (High- performance) 12
2.3 Một Số Ưu Điểm Microchip PIC 12
CHƯƠNG III .14
VI ĐIỀU KHIỂN PIC 18F4550 14
3.1 Sơ đồ chân 16
3.2 Các Công Cụ Lập Trình .20
3.3 Đơn vị ICD-U40 .23
3.4 Tiêu Thụ Năng Lượng 24
3.5 FIRMWARE 25
3.6 Các công cụ làm việc 25
3.7 Thiết bị lớp .25
3.8 Firmware HID 26
3.9 Một số đặc tính: 26
3.10 Nguyên tắc hoạt động: 26
3.11 Driver .27
3.12 Mô Tả Thực Hiện Firmware Thứ Hai .29
3.13 Kết luận 32
CHƯƠNG IV .34
CÔNG NGHỆ USB QUA MICROCHIP 18F4550 .34
4.1 Giới thiệu 34
4.2 Vi xử lý 18f4550 .34
4.3 Lắp ráp bảng phát triển .34
4.3 Truyền tải khởi động vào 18F4550 .36
4.4 Phát triển ứng dụng trong MPLAB IDE .37
CHƯƠNG V 46
CHUYỂN ĐỔI TỪ THIẾT BỊ FLASH PIC18F SANG PIC18FXXJ .46
5.1 Chuyển đổi thiết bị .46
5.2 Giới thiệu 46
5.3 Reset Brown-out (BOR) .50
5.4 XUNG 50
5.5Tuỳ chọn dao động ký .51
5.6 Đồng hồ đo năng lượng 51
5.7 Độ trễ khởi động/reset 51
5.8 Sự khác Biệt Về Chân 52
5.9 Điện trở kéo gắn trong 53
5.10 Tỷ lệ dòng trên các chân vào/ra 53
5.11 VCAP/VDDCORE và ENVREG .54
5.12 Bộ Nhớ Chương Trình 54
5.12.1 ID thiết bị .54
5.12.2 Từ cấu hình 54
5.12.3 Các chu trình ghi 57
5.12.4 Khả năng ghi nhớ đặc tính .57
5.12.5Mô phỏng tự ghi và EEPROM 57
5.12.6 Bảo vệ mã 58
5.12.7 Vào chế độ lập trình .58
5.13 Thiết Lập Chính Xác Cho Chương Trình Thiết Bị Và Công Cụ Phần Mềm 59
5.14 KHÁC BIỆT MODULE 60
5.15 TỔNG KẾT 60
CHƯƠNG VI .61
ĐỒNG HỒ BÁO THỨC 61
6.1 Tóm lược 61
6.2 Chỉ thị hoạt động 61
6.2.1 Ngày tháng/thời gian hiện tại .61
6.2.2 Thời gian 12 giờ hay thời gian quân sự 62
6.2.3 Báo thức .63
6.2.4 Âm báo thức .64
6.2.5 Đồng bộ, chờ và ngừng báo thức .64
6.3 USB 66
6.4 Lập trình PIC 66
6.4.1 Đồng hồ .66
6.4.2 USB .67
6.5 Sử dụng Compact Flash 67
6.6 Chip bộ mã hoá MP3 68
6.7 Bộ chuyển đổi số - tương tự CS4334 .71
6.8 Màn hình LED .71
6.9 Kết luận .72
75 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 6937 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Vi Điều Khiển PIC 18F4550, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
chứa thông tin cần thiết để tạo, soạn danh
sách các thông điệp, trình bày dữ liệu cho hội thoại và tạo tác vụ như thành phần
nguyên bản.
Res \ Usb_Ej_1.ico
Đây là icon của file dùng cho icon ứng dụng. Icon này có trong file tài nguyên
chính Usb_Ej_1.rc.
Res \ Usb_Ej_1.rc2
File này chứa tài nguyên không được viết bằng Microsoft Visual C++. Bạn nên
đặt tất cả các tài nguyên không được chỉnh sửa bời bảng phác thảo tài nguyên vào file
này.
UsbHidApi.lib
File này cung cấp thông báo về chương trình với DLL cùng tên.
Kết quả
Giao diện được phát triển hỗ trợ truyền thông USB điều khiển ba kiểu truyền dữ
liệu là: đầu ra số, đầu vào số và đầu vào tương tự - số.
31
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 11: Giao diện được phát triển hỗ trợ truyền thông USB
3.13 Kết luận
Project được thực hiện qua bắt ngoặt lớn khi chúng ta kiểm soát do điều này chưa
được biết đến.
Khi phát triển project có thể thấy rằng có nhiều cách truyền thông bằng bus hơi
phức tạp do nó gồm nhiều giao thức. Việc truyền thông này không được thực hiện theo
hướng như trường hợp cổng song song hay cổng nối tiếp mà dùng driver để truy nhập
vào.
Có thể có vô hạn driver này do có thể tạo ra các driver riêng giống nhau, vấn đề
là độ phức tạp của thuật toán được phát triên. Trong trường hợp project của ta, ta chọn
sử dụng DLL “UsbHidApi” là phần mềm thương mại, file này khiến mạch máy tính
phát hiện ra dạng của HID (Thiết bị giao diện người dùng), tương tự với chuột,
joystick, bàn phím …
32
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Những phát triển của project này đã mở ra cánh cửa để sử dụng tốt loại bus này,
được coi là bảng bus. Dựa trên ứng dụng này qua PIC, có thể thực hiện được rất nhiều
ứng dụng hay trong công việc khi bất cứ thiết bị được phát triển nào có thể được giám
sát và điều khiển qua bus này.
Chú trọng đến vi điều khiển PIC là vi điều khiển phổ biến nhất hiện nay cho các
ứng dụng đó, các chức năng luồng cần cho truyền thông với bus USB và chuyển đổi
nội dung tương tự - số cho thiết bị.
Nguồn thông tin.
Internet
Diễn đàn thảo luận.
Hướng dẫn lập trình ngôn ngữ Visual C++.
Trang web (www.microchip.com).
Khuyến nghị.
Bước thực hiện để nghiên cứu và hiểu được bus này là quan trọng và giải đáp
những câu hỏi cơ bản khiến cho công việc nghiên cứu rõ ràng hơn.
Nên mua thiết bị ghi PIC như yêu cầu để phát triển thêm ứng dụng và hiểu bus
USB.
33
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
CHƯƠNG IV
CÔNG NGHỆ USB QUA MICROCHIP 18F4550
4.1 Giới thiệu
Tài liệu này giới thiệu nền tảng cơ bản để khám phá công nghệ liên kết với các
thiết bị USB. Nó cung cấp chi tiết cần thiết để giả lập một bảng phát triển, chương
trình và thí nghiệm với vi xử lý Microchip 18F4550.
Sơ đồ thực hiện dùng ở đây sử dụng việc kết hợp cách tiếp cận dùng trong giao
diện CREATE USB (CUI, phụ lục 3) và pic18fusb.online.fr Wiki (Phụ lục 1). Cả hai
đều sử dụng kỹ thuật tải khởi động và phần mềm liên kết với bảng thể hiện USB toàn
tốc Microchip PICDEM.
Tất cả các phần mềm dùng trong bảng phát triển có thể download miễn phí gồm
có bộ biên dịch MPLAB C18 C phiên bản dùng cho sinh viên.
4.2 Vi xử lý 18f4550
Vi điều khiển Microchip PIC 18F4550 là một thiết bị phổ biến để kết nối với
USB. Nó có giao diện USB 2.0 toàn tốc tích hợp sẵn. Thiết bị có sẵn nhiều ví dụ nên
dễ dàng bắt đầu thí nghiệm công nghệ. PIC 18F4550 gồm 13 lối vào tương tự/số, 18
cổng vào/ra chung và một bộ chỉ thị kiểu RISC mạnh. Thiết bị có bộ nhớ 16K để lưu
chương trình. Do cho phép sử dụng USB, bạn có thể có sẵn 1024 byte RAM để lưu dữ
liệu (có thể 2048 byte).
4.3 Lắp ráp bảng phát triển
Phụ lục A cung cấp danh sách các thành phần, sơ đồ và ảnh các đơn vị hoàn thiện.
Quá trình phát triển
Quá trình phát triển được minh hoạ dưới đây:
34
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 12 : Quá Trình Phát Triển
Trước khi lập trình lần đầu cho bảng phát triển, bạn phải download mã tải khởi
động vào 18f4550. Đọc phần có tiêu đề “Truyền tải khởi động vào 18F4550” để xem
chi tiết về quá trình này.
Các chương trình được viết và phát triển trong Microchip MPLAB. Các chương
trình có thể phát triển bằng ngôn ngữ hợp ngữ hay C.
Sử dụng môi trường MPLAB để gọi bộ biên dịch C18 C hay bộ hợp ngữ. C18
hay bộ hợp ngữ sẽ biên dịch file .asm của bạn hay mã C thành file .hex.
Lập trình cho PIC 18F4550 bằng cách download file .hex qua tải khởi động dùng
chương trình PDFSUSB.EXE (lưu trú tại C:\MCHPFSUSB\Pc\Pdfsusb\PDFSUSB.exe
trong MCHPFSUSB USB Framework).
Để bảng phát triển hiện ra thực đơn PDFSUSB.EXE, phải reset bảng và giữ phím
“button”.
Trong môi trường PDFSUSB.EXE:
Tải file Hex
Lập trình thiết bị
Thực hiện
Nó sẽ tải file hex vào 18F4550 và khởi tạo thực hiện trong thiết bị.
Phần mềm cần thiết
Phần mềm sau có thể download từ Microchip:
MPLAB IDE – môi trường phát triển để xây dựng ứng dụng.
Bộ biên dịch MPLAB C18 C Phiên bản cho sinh viên – có thể sử dụng với
MPLAB IDE để phát triển ứng dụng bằng C.
MCHPFSUSB USB Framework - gồm tải khởi động và các ví dụ để sử dụng với
bảng phát triển.
Tài liệu
Tài liệu được liệt kê dưới đây sẽ có ích trong việc vận hành môi trường phát
triển. Nó có thể download từ Microchip (www.microchip.com)
MPLAB IDE User’s Guide – Microchip document DS51519B
35
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Release Notes for MPLAB C18 C Compiler, Student Edition
MPLAB C18 COMPILER USER’S GUIDE – Microchip document DS51288J
MPLAB C18 C Compiler Getting Started – Microchip document DS51295F
MPLAB C18 Libaries Documentation – Microchip document DS51297F
Release Notes for MCHPFSUSB – Microchip Full-Speed USB Solutions
PICDEM FS USB Demonstration Board User’s Guide – DS51526A
4.3 Truyền tải khởi động vào 18F4550
Xem Phụ lục B – “Phần cứng để tải mã vào 18f4550” nói về các thiết bị để
truyền tải khởi động vào chip 18f4550.
Lần đầu tiên lập trình cho bảng phát triển, phải dùng chương trình ICD2 thay cho
PDFSUSB.EXE. Nguyên nhân là do PIC hoàn toàn trống khi đem từ nhà máy về và
bạn phải tải file hex cho tải khởi động vào PIC để kích hoạt các phiên lập trình trong
tương lai qua PDFSUSB.EXE.
File hex tải khởi động được lưu trong mã MCHPFSUSB USB Framework. Trong
MPLAB, mở file hex “C:\MCHPFSUSB\fw\Boot\_output\MCHPUSB.hex”, chọn
chương trình ICD2 và click vào thiết bị lập trình. Nó sẽ truyền mã tải khởi động vào
18f4550.
Vào chế độ tải khởi động
Mã biên dịch dạng file .hex có thể download bằng chương trình PDFSUSB.EXE.
Để download mã vào 18f4550 qua PDFSUSB.EXE, làm như sau:
Mở ứng dụng PDFSUSB.EXE.
Kiểm tra cửa sổ thả “Select PICDEM FS USB Board” để xem bảng điều khiển có
hiện ra không. Nếu có thì bạn sẽ thấy phần “PICDEM FS USB (0) Boot”. Chọn phần
này. Đến bước 4.
Nếu “PICDEM FS USB (0) Boot” không hiện ra, làm như sau để vào chế độ tải
khởi động 18f4550:
Nhấn và giữ khoá S2.
Trong khi giữ S2, nhấn và thả S1.
36
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
PC sẽ kêu “beep” chỉ thị rằng 18f4550 bây giờ đã có trong ứng dụng
PDFSUSB.EXE. Trong Device Manager, thiết bị sẽ xuất hiện dưới Other Devices –
PIC 18F4550 Family Device.
Trở lại bước 2.
Mã biên dịch bây giờ có thể đownloa vào 18f4550 nhờ các thao tác trong ứng
dụng PDFSUSB.EXE sau:
Tải file Hex.
Lập trình thiết bị.
Thực hiện.
PC sẽ kêu “beep” chỉ thị 18f4550 bây giờ đang hoạt động và không ở chế độ tải
khởi động nữa.
Nhấn S1 để nó tự khởi động lại ứng dụng được nạp vào 18f4550. Ngay cả khi
ứng dụng Demo Tool đang chạy ở chế độ tải khởi động thì một lần reset bảng đơn giản
(nhấn S1) sẽ không làm bảng tự vào chế độ tải khởi động.
Nếu đây là lần đầu tiên bạn sử dụng tải khởi động thì máy tính sẽ không nhận
firmware tải khởi động, vì vậy bạn phải cài driver (chỉ cần một lần). Khi Windows
thông báo “Found New Hardware”, click “No, not this time” rồi chọn “Install from
list”. Rồi click vào “Browse …” và chọn thư mục “C:\MCHPFSUSB\Pc\MCHPUSB
Driver\Release” rồi “Next”, “Continue Anyway” và “Finish”.
4.4 Phát triển ứng dụng trong MPLAB IDE
Các bước sau để tạo ra một ứng dụng mới cho 18f4550 dùng chế độ tải khởi
động để download cho thiết bị.
Mở MPLAB IDE
Từ thực đơn MPLAB Project, chọn Project Wizard.
Click “Next”.
Chọn thiết bị (PIC18F4550).
Chỉnh lại Active Toolsuite là “Microchip C18 Toolsuite”.
Tạo một file project mới. Tạo một thư mục mới cho project
(C:\MCHPFSUSB\fw\MyPro1). Đặt tên cho project (ví dụ MyPro1).
37
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Thêm file vào project này. Thêm file “C:\MCHPFSUSB\fw\Demo02\rm18f4550”.
Tạo một file để lưu chương trình C. File|New. Thêm mã, Save As (ví dụ Mypro1.c).
Thêm Mypro1.c vào project. File|Add new file to project.
Biên dịch Project|Build All.
Sau khi biên dịch thành công, vào chế độ tải khởi động với 18f4550.
Sử dụng ứng dụng PDFSUSB.EXE để tải chương trình vào 18f4550.
Chú ý rằng script linker đặc biệt (rm18f4550.lkr) được dùng cho ứng dụng tải
khởi động. Trong rm18f4550.lkr, reset, vector ngắt có ưu tiên cao và thấp được xếp
ngoài khối khởi động để ngăn ghi đè lên nó.
Ví dụ - Tải file Hex Demo02 vào 18f4550
Khi bạn đã truyền được tải khởi động vào 18f4550, bạn có thể dùng chương trình
PDFSUSB.EXE để tải file chương trình vào thiết bị.
Để vào chế độ tải khởi động, nhấn phím chương trình trên bảng phát triển trong
khi vẫn cắm cáp USB hay reset lại bảng. Nếu đây là lần đầu tiên bạn dùng tải khởi
động thì máy tính của bạn sẽ không nhận firmware tải khởi động, vì vậy bạn phải cài
driver (chỉ cần một lần). Khi Windows thông báo “Found New Hardware”, click “No,
not this time” rồi chọn “Install from list”. Rồi click vào “Browse …” và chọn thư mục
“C:\MCHPFSUSB\Pc\MCHPUSB Driver\Release” rồi “Next”, “Continue Anyway”
và “Finish”.
Ví dụ sau đây trình bày về thủ tục tải khởi động cho project Microchip Demo02,
chương trình kiểm thử có thể được tải khởi động.
MPLAB: Với MPLAB, mở, (chỉnh lại) và xây dựng (lại) project
“C:\MCHPFSUSB\fw\Demo02\Demo02.mcp”.
BOARD: Vào chế độ khởi động bằng cách nhấn [S1 Reset] trong khi vẫn giữ [S2
enter Boot/Program].
PDFSUSB: Mở công cụ Microchip:
“C:\MCHPFSUSB\Pc|Pdfsusb\PDFSUSB.exe” (“tiện ích Microchip USB – Boot
Loader”).
PDFSUSB: Trong danh sách thả xuống, chọn PIC, đặt tên là “PICDEM FS
USB 0 (Boot)”.
38
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
PDFSUSB: Click “Load Hex file”:
“C:\MCHPFSUSB\fw\Demo02\Demo02.hex”.
PDFSUSB: Click “Program Device”.
PDFSUSB: Click “Execute” để khởi động PIC trong chế độ người dùng (bỏ qua
khuyến cáo lỗi, nó chỉ dùng để reset thiết bị).
Chương trình Demo02 khi nhấn S2 thì trạng thái chân RD1 phải thay đổi (0V lên 5V
…).
Xem Phụ lục C về các thành phần phụ được gắn vào chiếu sáng LED cho bảng phát
triển.
Ví dụ - Chuyển từ giao diện RS-232 sang USB
Các phần mềm hữu ích khác
Các phần mềm sau đây được đánh giá là hữu ích khi sử dụng bảng phát triển:
Windows Device Manager – Vào Windows Device Manager bằng cách click
Start, Setting, Control Panel, icon System, tab Hardware và click nút Device Manager.
Device Manager hoạt động dễ dàng hơn nhiều nếu mở chương trình devmgmt.msc từ
cửa sổ dòng lệnh.
DevCon – là một tiện tích dòng lệnh thay thế cho Device Manager. Dùng
DevCon, bạn có thể kích hoạt, ngắt, khởi động lại, xoá và truy vấn các thiết bị riêng
hay một nhóm thiết bị. DevCon cũng cung cấp thông tin tương ứng về nhà phát triển
driver và không có sẵn trong Device Manager. Download từ
Có các phiên bản 32 và 64 bit.
USB Sniffer/Analyzer – công cụ debug USB cho phép bạn xem các byte được
truyền đi giữa host và thiết bị.
Phụ Lục A
Xây dựng môi trường phát triển 18f4550
Bản thiết kế được trình bày ở đây là sự kết hợp các cách tiếp cận thiết lập 18f4550 cơ
bản. Nó nhấn mạnh vào các cách tiếp cận CUI và thực hiện pic18fusb.
Các thành phần cần thiết để tạo lập phát triển 18f4550 được liệt kê sau đây:
P/N (source) Description Qty Each Total Component
39
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Designation
450-1644-ND
(Digi-Key)
SWITCH TACT 6MM BK 160GF
8.51MM
2 0.21 0.42 S1, S2
PIC18F4550-
I/P-ND (Digi-
Key)
IC PIC MCU FLASH 16KX16
40DIP
1 9.73 9.73 P1
X439-ND (Digi-
Key)
CRYSTAL 20.000 MHZ 20PF
49US
1 0.58 0.58 Q1
4.7KQBK-ND
(Digi-Key)
RES 4.7K OHM 1/4W 5%
CARBON FILM
2 0.06 0.12 R1, R2
22QBK-ND
(Digi-Key)
RES 22 OHM 1/4W 5%
CARBON FILM
2 0.06 0.12 R3, R4
1.0KQBK-ND
(Digi-Key)
RES 1.0K OHM 1/4W 5%
CARBON FILM
1 0.06 0.06 R5
1.0MQBK-ND
(Digi-Key)
RES 1.0M OHM 1/4W 5%
CARBON FILM
1 0.06 0.06 R6
516-1311-ND
(Digi-Key)
LED 3MM 645NM RED DIFF
LOW CURR
1 0.51 0.51 LED1
478-4278-1-ND
(Digi-Key)
CAP CER .10UF 50V DISC RAD 2 0.20 0.40 C1, C5
478-4178-ND
(Digi-Key)
CAP TANTALUM .47UF 35V
10% RAD
1 0.46 0.46 C2
BC1003CT-ND
(Digi-Key)
CAP 15PF 50V CERAMIC C0G
5%
2 0.08 0.16 C3, C4
PBCUB1F
(Winford)
USB B Female Breadboard
Adapter
1 5.60 5.60
40
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
438-1045-ND
(Digi-Key)
BREADBOARD 2.13x6.496
SLDLESS*
1 8.73 8.73
Total 26.95
số lượng.
Hinh 13: bo mạch test
Hình 14 : mạch nguyên lý
Tạo lập
Hai thành phần trong mạch phân cực.
Một thành phần mà cực là tụ điện 470 nF (C2). Cực được đánh dấu trên tụ được
theo dõi.
41
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Thành phần nhạy phân cực
thứ hai là LED. Cực được đánh
dấu dưới đây (Phụ lục 4) của
LED được theo dõi.
Sắp xếp các thành phần
quanh tinh thể hơi khó khăn và
cần thực hiện cẩn thận để tránh
đoản mạch.
Khi thực hiện, Winford
USB B Female Breadbroad
Adapter được dùng nhiều hơn
bộ lắp ráp USB B Female rẻ hơn
thường được nối với PCB (Digi-Key 609-1039-ND). Adator này đảm bảo rằng cáp
USB có kết nối tốt với bảng mạch.
Hình có tiêu đề “Breadboard Adator Detail” thể hiện cách nối ngầm dưới breadboard
adapter.
Nếu bạn dùng bộ lắp ráp USB B Female thì các chân phải nối như sau:
42
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Chân Tên Màu cáp Mô tả
1 VCC Đỏ +5VDC
2 D- Trắng Dữ liệu -
3 D+ Xanh Dữ liệu +
4 GND Đen Đất
Một số định nghĩa
Vcc +5VDC (supplied by the USB port)
Vdd Ground, GND,
Capacitor
Resistor
LED
Crystal
Sử dụng nguồn USB
Các chức năng tốn ít năng lượng, năng lượng bus: Draw Max 100mA.
Phụ lục B
Phần cứng để tải mã vào 18f4550
Như đã đề cập đến, lần đầu tiên bạn lập trình cho bảng phát triển thì phải dùng
chương trình ICD2 thay cho PDFSUSB.EXE. Đó là do PIC hoàn toàn trống khi đem
từ nhà máy về và bạn phải lập trình một file hex cho tải khởi động vào PIC để kích
hoạt các phiên lập trình trong tương lai qua PDFSUSB.EXE.
Cách chắc chắn nhất để thực hiện điều này là dùng chương trình ICD2 và module
lập trình toàn cục từ Microchip. Giá của các thiết bị này vào mùa xuân năm 2008 là:
43
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
MPLAB CD2 In-Circuit Debugger/Programmer (DV164007) – 189,99 trừ 25%
(xem phần dưới).
Module lập trình toàn cục cho ICD2 (AC162049) – 39,95 trừ 25% (xem phần
dưới).
Cách khác cũng được đề cập đến cho ICD2 là:
Olimex MPLAB Compatible ICD2 với USB và RS232 - $106,95
(
Khấu trừ
Đặt mua trên Microchip trực tiếp qua địa chỉ email với “.edu”, “.k12”, “.ac” …
trong tên miền sẽ nhận được khoản tự khấu trừ 25% giá bán các công cụ phát triển
Microchip.
Phụ lục C
Phần cứng để chiếu sáng LED với chương trìn DEMO2
Chương trình Demo02 khi nhấn S2, trạng thái châm RD1 phải thay đổi (0V lên 5V
…). LED được gắn vào bảng phát triển như hình:
Phụ lục F
Tổng quan về các cổng vào/ra trên PIC18F4550
Port
Other
Functions
Traits
RA0 Analog input 0
RA1 Analog input 1
RA2 Analog input 2
44
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
RA3 Analog input 3
RA4 Digital I/O
Schmitt Trigger input, can be programmed to be input to TMR0
clock
RA5 Analog input 4
RB0 Analog input12 can be programmed for external interrupt (INT0)
RB1 Analog input10 can be programmed for external interrupt (INT1)
RB2 Analog input 8 can be programmed for external interrupt (INT2)
RB3 Analog input 9
RB4 Analog input11 can be programmed for interrupt on change
RB5 Digital I/O can be programmed for interrupt on change
RB6 Digital I/O can be programmed for interrupt on change
RB7 Digital I/O can be programmed for interrupt on change
RC0 Digital I/O
RC1 Digital I/O can be programmed for PWM output
RC2 Digital I/O can be programmed for PWM output
RC6 Digital I/O can be programmed for UART TX line
RC7 Digital I/O can be programmed for UART RX line
RD0 Digital I/O
RD1 Digital I/O
RD2 Digital I/O
RD3 Digital I/O
45
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
RD4 Digital I/O
RD5 Digital I/O
RD6 Digital I/O
RD7 Digital I/O
RE0 Analog input5
RE1 Analog input6
RE2 Analog input7
CHƯƠNG V
CHUYỂN ĐỔI TỪ THIẾT BỊ FLASH PIC18F SANG PIC18FXXJ
5.1 Chuyển đổi thiết bị
Tài liệu này có mục đích mô tả sự khác biệt về chức năng và sự khác biệt về đặc
tính kỹ thuật điện hiện tại khi chuyển từ thiết bị này sang thiết bị thế hệ kế tiếp.
Chú ý: Các thiết bị này được thiết kế để biểu thị các thông số trong bản data
sheet sẽ nói đến. Chúng được kiểm thử với các đặc tính kỹ thuật điện được thiết kế để
xác định khả năng tương thích với các thông số này. Do có sự khác biệt trong quá trình
sản xuất thiết bị, chúng có thể những đặc tính hoạt động khác với các phiên bản trước.
Những sự khác biệt này khiến cho thiết bị hoạt động khác với các phiên bản trước.
Chú ý: Người dùng phải đảm bảo dao động ký đo thiết bị phải được bật và hoạt
động đúng ý mình. Có thể phải điều chỉnh giá trị trở kháng tải và/hoặc chế độ dao
động ký.
5.2 Giới thiệu
Họ thiết bị Flash mới PIC18FXXJ có những khác biệt lớn so với họ phiên bản
Flash PIC18 trước. Tài liệu chuyển đổi này sẽ chỉ rõ, kiểm tra và giải thích những khác
biệt này và cách thức chúng gây ảnh hưởng đến thiết kế hệ thống. Những khác biệt này
gồm có thay đổi quy định gọi tên các phần, chức năng tổng quát, khác biệt theo
module và cách thiết lập chính xác các công cụ lập trình.
46
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
5.3 Cấp nguồn cho thiết bị
Bộ điều chỉnh điện thế gắn trong, VDDCORE/VCAP, thiết bị “LF” và “F”, cấp VDD
Khác với các thiết bị của dòng Flash PIC18 trước, họ thiết bị Flash PIC18FXXJ
có một bộ điều chỉnh điện thế gắn trong. Bộ điều chỉnh điện thế này cấp nguồn cho
phần chính của thiết bị thấp hơn so với cấp cho các chân vào/ra. Trong thiết bị có
nhiều chân hơn (từ 60 chân trở lên), bộ điều chỉnh điện thế có thể được khởi động hoặc
ngắt từ bên ngoài qua chân ENVREG. Chân này có thể nối với VDD để khởi động bộ
điều chỉnh điện thế hoặc nối đất để ngắt bộ điều chỉnh điện thế. Hình 16 minh hoạ
mạch hoạt động cho thiết bị có nhiều chân. Chú ý là chân ENVREG đang hoạt động và
nó điều khiển việc bật hay tắt bộ điều chỉnh điện thế.
47
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 15: Kết nối bên trong cho đăc trưng mã đếm thiết bị
Trong thiết bị có ít chân hơn, ví dụ PIC18F45J10 (xem hình 17), ký tự “F” trong
tên thiết bị (ví dụ PIC18F45J10) cho biết bộ điều chỉnh điện thế gắn trong luôn nối với
VDD và luôn bật. Ký tự “LF” (ví dụ PIC18LF45J10) cho biết bộ điều chỉnh điện thế
luôn nối đất và luôn tắt.
Hình:16: Kết nối giao diện cho mã đếm “F” và “LF” của thiết bị
Chân VDDCORE/VCAP có hai chức năng. Khi bộ điều chỉnh tắt, nếu ENVREG nằm
trên thiết bị nhiều chân và thiết bị ít chân có ký tự “LF” thì VDDCORE cấp nguồn cho
thành phần số chính của thiết bị. Như vậy sẽ giảm dòng tiêu thụ của các phần khác
bằng cách loại bỏ dòng thụ động của bộ điều chỉnh điện thế, là nơi tiêu tốn năng lượng
nhất khi ở chế độ Idle hay Sleep. Ở chế độ này, năng lượng phải cấp cho cả chân
VDDCORE và chân VDD. Cách cấu hình thông thường là nối VDDCORE với VDD và cấp nguồn
từ 2,0V đến 2,7V. Cũng có thể lấy năng lượng từ nguồn riêng cho VDDCORE (2,0V đến
2,7V) và VDD (VDDCORE đến 3.6V). Như vậy cho phép thành phần chính hoạt động với
48
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
mức điện thế thấp hơn trong khi các chân vào/ra và các cổng ngoại vi hoạt động với
mức điện thế cao hơn. Khi hoạt động ở chế độ này, nhất thiết phải giữ cho VDDCORE
không vượt quá VDD kể cả khi bắt đầu.
Khi bộ điều chỉnh điện thế được bật, do ENVREG được nối với VDD ở thiết bị
nhiều chân và thiết bị ít chân với ký tự “F”, một tụ điện trở kháng chuỗi tương đương
(ESR) thấp sẽ nối vào chân VCAP để ổn định đầu ra từ bộ điều chỉnh điện thế gắn trong.
Trong chế độ này, thiết bị phải được cấp nguồn từ 2.7V đến 3.6V trên VDD. Khi bộ
điều chỉnh bị ngắt, VDDCORE phải được cấp nguồn từ 2.0V đến 2.7V để cấp năn lượng
cho thành phần chính của thiết bị.
Hình 17: Cấu hình nguồn điển hình cho thiết bị flash PIC18FXXJ nhiều chân
Hình 18: Cấu hình nguồn điển hình cho thiết bị flash PIC18FXXJ it chân
49
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 18 thể hiện cấu hình năng lượng thông dụng cho thiết bị PIC18FXXJ Flash
nhiều chân. Hình 4 thể hiện cấu hình năng lượng thông dụng cho thiết bị PIC18FXXJ
Flash ít chân.
5.3 Reset Brown-out (BOR)
Thiết bị PIC18FXXJ Flash có module BOR là một phần của bộ điều chỉnh điện
thế gắn trong. Khi đầu ra của bộ điều chỉnh hạ xuống dưới mức điện thế chính tối thiểu
thì thiết bị sẽ rơi vào trạng thái BOR. Do module BOR có trong bộ điều chỉnh điện thế
nên thiết bị với bộ điều chỉnh điện thế bị ngắt (thiết bị nhiều chân với ENVREG nối
đất và tất cả các thiết bị ít chân với ký tự “LF”) sẽ ngắt module BOR.
Điểm khác biệt với thiết bị PIC18 Flash trước, do module BOR khả trình có thể
được chọn là bật hay ngắt, nằm ở từ cấu hình hay thanh ghi điều khiển, và có thể được
cấu hình với mức điện thế nhất định mà tại đó Reset hoạt động. Các thiết bị này đòi
hỏi có BOR khả trình vì chúng cần giảm tần số hoạt động khi điện thế giảm; vì vậy,
BOR khả trình cho phép người dùng đảm bảo rằng các thông số kỹ thuật không bị ảnh
hưởng khi điện thế hệ thống giảm. Trái lại, với thiết bị PIC18FXXJ Flash, với bộ điều
chỉnh điện thế bật, chỉ cần BOR đơn mức vì chúng có thể hoạt động toàn tốc với điện
thế hoạt động tối thiểu. Chức năng BOR trong thiết bị PIC18FXXJ Flash có trong bộ
điều chỉnh điện thế và không hoạt động nếu bộ điều chỉnh bị ngắt.
5.4 XUNG
Tần số xung nhịp cao khi điện thế thấp hơn, thiết bị “LF” và “F”
Dù họ thiết bị PIC18FXXJ Flash có dải điện thế hoạt động hẹp, chúng vẫn có thể
cung cấp được nhiều MIPS/V hơn thiết bị PIC18 Flash trước. Các thiết bị này có thể
chạy với tốc độ 40 MHz (10 MIPS) khi hoạt động ở 2.25 V. Tính mềm dẻo hoạt động
tăng cường này cho phép người dùng khai thác toàn bộ năng lượng và tốc độ của thiết
bị trong dải điện thế rộng hơn.
Hình 20 thể hiện quan hệ giữa VDD và tần số hoạt động của thiết bị với bộ điều
chỉnh được bật (thiết bị nhiều chân với ENVREG nối với VDD và thiết bị ít chân với ký
tự “F”). Hình 6 thể hiện quan hệ giữa VDD, VDDCORE và tần số hoạt động của thiết bị với
bộ điều chỉnh điện thế bị ngắt. Chú ý VDD nối với VDDCORE nên điện thế hoạt động tối
đa là 2.75V.
50
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 19: VDD theo tần số hoạt động ( bộ điều chỉnh đã bật)
Hình 20: VDD theo tần số hoạt động ( bộ điềo chỉnh đã tắt)
5.5Tuỳ chọn dao động ký
Tuỳ chọn dao động ký cho thiết bị PIC18FXXJ Flash là EC, ECPLL, HS,
HSPLL và dao động ký gắn trong 31 kHz. Thiết bị PIC18FXXJ Flash không có tuỳ
chọn XT và LP thường có trong thiết bị PIC18 Flash. Chế độ RC có trong một số thiết
bị PIC18FXXJ Flash. Hãy xem data sheet để rõ hơn về thiết bị riêng.
5.6 Đồng hồ đo năng lượng
Trong thiết bị PIC18FXXJ Flash, đồng hồ đo năng lượng được bật. Ở thiết bị
trước, có tuỳ chọn bật hay tắt ở phần thiết lập cấu hình.
5.7 Độ trễ khởi động/reset
Do trong thiết bị PIC18FXXJ Flash, đồng hồ đo năng lượng luôn bật nên thời
gian khởi động các thiết bị này lâu hơn so với các phần PIC18 Flash. Cũng có độ trễ
cộng thêm vào cho thiết bị PIC18FXXJ Flash sau mỗi lần reset để copy từ cấu hình từ
bộ nhớ chương trình vào thanh ghi cấu hình. Trong thời gian trễ, dao động ký RC gắn
51
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
trong đóng vai trò nguồn thiết bị. Sau khi thanh ghi cấu hình được nạp, thiết bị chuyển
sang xung đặc biệt nhờ các bit cấu hình FOSC. Xem “Từ cấu hình” để biết thêm chi
tiết.
5.8 Sự khác Biệt Về Chân
Chân dung sai 5 Volt
Dù các thiết bị PIC18FXXJ Flash có VDD tối đa 3.6V nhưng các chân vào/ra với
tính năng số chỉ chịu được tối đa 5V. Các chân được ghép kênh với đặc tính tương tự
có dung sai không phải là 5V và không giới hạn, gồm:
Bất cứ chân nào là đầu vào tương tự (AN0, AN1 …)
Bất cứ chân nguồn xung nào (OSC1, OSC2, T1OSC)
Bất cứ chân đầu vào so sánh nào
Chú ý rằng các chân có dung sai 5V là đầu vào chỉ nhận VDD là đầu ra. Với các
ứng dụng đòi hỏi đầu ra 5V trên các thiết bị cắm ngoài thì chân cổng 5V có thể tự tạo
bằng cách:
Thêm điện trở kéo ghép ngoài;
Đặt bit thanh ghi LAT cho chân đó là ‘0’ và
Dùng bit thanh ghi TRIS cho chân đó để cho phép chân đó nâng lên 5V hay
hạ xuống mức đất.
Khi dùng một điện trở kéo trên chân cổng, khả năng kết nối giữa hai thiết bị cần
được xem xét để quyết định tỷ lệ tăng/giảm của tín hiệu trên chân cổng và giá trị chính
xác của điện trở cho ứng dụng. Ta có Phương trình 1 sau:
Phương trình 1:
Thời gian tăng/giảm = t ln(PVDD/(PVDD - TVIH))
trong đó:
t = RCt, TVIH = điện thế đầu vào mức cao của thiết bị nhận và PVDD là điện thế
mà điện trở kéo lên.
Ví dụ, như trình bày ở mạch trong Hình 7, PVDD là điện thế mà điện trở kéo lên.
Nếu R = 1kOhm, Ct = 10 pF và PVDD = 5V thì thời gian từ khi thiết bị PIC18FXXJ
52
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Flash mở đường (cho phép điện trở kéo đường lên mức cao) đến khi thiết bị A phát
hiện ra thay đổi như Phương trình 2:
Phương trình 2:
tln(PVDD/(PVDD - TVIH)) = (1K)(10 pF)ln(5V/5V*(.8*5V)) = 16 ns
Hình 21: Nối thiết bị với một điện trở kéo đẩy
Khi thiết bị PIC18FXXJ Flash có đường nối đất thì giá trị R được dùng để tính
toán t là điện trở chuỗi của phần đầu ra cộng thêm trở kháng đường. Thời gian tính
thêm do đường thường được lược đi khi so sánh với thời gian giảm xuống của đầu ra
cổng (Tiof). Xem phần đặc tính AC trong data sheet về thiết bị để biết giá trị của Tiof.
5.9 Điện trở kéo gắn trong
Để chân số trên thiết bị PIC18FXXJ Flash chịu được 5V, cần có một bộ dịch
mức. Điện trở kéo gắn trong trên chân cổng không thể kéo các chân theo tất cả các
đường lên VDD được; chúng bị giới hạn bởi VDD trừ đi ngưỡng giảm của bộ dịch hay
Vtn. Thông tin chuyên biệt thêm về các giới hạn kéo đầu ra được nói đến trong phần
các đặc tính điện của data sheet về thiết bị.
5.10 Tỷ lệ dòng trên các chân vào/ra
Một điểm đáng xem xét khi chuyển sang phần PIC18FXXJ Flash là khả năng lưu
điện của chân cổng. Trong nhiều phần PIC18 Flash, tất cả các cổng đều có khả năng
lưu 25 mA một chân. Ở thiết bị PIC18FXXJ Flash, các cổng nhất định, thường là
PORTB và PORTC, lưu được dòng 25 mA một chân. Các cổng khác có khả năng lưu
53
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
được 8 mA hoặc 2 mA một chân. Người dùng nên thường xuyên đọc data sheet về
thiết bị để xem thông tin lưu điện của họ thiết bị PIC18FXXJ Flash.
5.11 VCAP/VDDCORE và ENVREG
Thiết bị PIC18FXXJ Flash có các chân mới: VCAP/VDDCORE trên tất cả các thiết bị
và ENVREG trên các thiết bị có từ 44 chân trở lên. Mỗi chân này thay cho một trong
các chân cổng tương đương trong thiết bị PIC18 Flash. Xem phần “Bộ điều chỉnh điện
thế, VDDCORE/VCAP, thiết bị “LF” và “F”, mức VDD” để biết thêm thông tin về việc sử
dụng các chân này và hiệu ứng của chúng trong chức năng thiết bị
5.12 Bộ Nhớ Chương Trình
5.12.1 ID thiết bị
Ở các thiết bị PIC18FXXJ Flash ít chân, các phần ký hiệu “F” và “LF” có các ID
thiết bị khác nhau. Trong thiết bị PIC18 Flash, phần “F” và “LF” có cùng ID thiết bị.
Xem “Thiết lập chính xác chương trình thiết bị và công cụ phần mềm” để biết thêm
thông tin về cách thay đổi chương trình và sử dụng công cụ.
5.12.2 Từ cấu hình
Trong thiết bị PIC18 Flash, từ cấu hình được đặt ở đầu địa chỉ 300000h. Địa chỉ
này nằm trong không gian bộ nhớ chương trình người dùng thường xuyên (xem Hình 8
làm ví dụ).
Trong thiết bị PIC18FXXJ Flash, từ cấu hình được đặt ở cuối không gian bộ nhớ
người dùng (xem Hình 21). Các giá trị này được copy mỗi lần reset từ vị trí bộ nhớ
chương trình vào thanh ghi cấu hình. Khi copy xong, cơ chế ghi vào thanh ghi cấu
hình bị ngắt.
Nếu bất cứ bit cấu hình nào thay đổi trong bộ nhớ chương trình trong lúc hoạt
động, chúng sẽ không ảnh hưởng đến khi thiết bị được reset. Sau khi thiết bị được
reset, từ cấu hình sẽ được copy lại vào thanh ghi cấu hình.
54
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 22: Sơ đồ địa chỉ từ cấu hình flash PIC18
55
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 23: Sơ đồ địa chỉ từ cấu hình flash PIC18FXXJ
Các ứng dụng sử dụng chức năng tự ghi của thiết bị PIC18FXXJ Flash nên được
xem xét riêng theo từ cấu hình. Trước khi xoá khối không gian bộ nhớ chương trình
người dùng cuối cùng, ứng dụng lưu lại từ cấu hình và ghi lại các giá trị này càng sớm
càng tốt. Trong trường hợp reset sau khi xoá khối bộ nhớ cuối cùng nhưng trước khi
ghi lại thì thiết lập cấu hình của thiết bị có thể bị hỏng. Theo khuyến cáo, các ứng
dụng dùng chức năng tự ghi để tránh dùng khối bộ nhớ cuối cùng trong phần thay đổi
mã khởi động hay giữ lại một bản copy từ cấu hình ở vùng sao lưu của bộ nhớ để kiểm
định chương trình vào trong tình huống hiếm hoi này, từ cấu hình có thể được khôi
56
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
phục lại. Ứng dụng buộc reset cần phải có trước khi thiết bị có thể tổng hợp hoạt động
ở chế độ hoạt động khôi phục lại.
5.12.3 Các chu trình ghi
Thiết bị PIC18FXXJ Flash có tốc độ chu trình ghi thông thường thấp hơn Flash
cải tiến thường dùng trong đa phần các thiết bị PIC18 Flash. Hãy xem data sheet về
thiết bị PIC18FXXJ Flash để biết thêm về số chu trình ghi thông thường của thiết bị
đó.
5.12.4 Khả năng ghi nhớ đặc tính
Thiết bị PIC18FXXJ Flash có khả năng ghi nhớ đặc tính yếu hơn so với Flash cải
tiến dùng trong nhiều thiết bị PIC18 Flash. Giá trị tối thiểu và thông dụng để ghi nhớ
đặc tính được ghi trong data sheet về thiết bị của họ thiết bị PIC18FXXJ Flash.
5.12.5Mô phỏng tự ghi và EEPROM
Khi chuyển sang ứng dụng tự ghi sang thiết bị PIC18FXXJ Flash, phải xem xét
một số vấn đề. Vấn đề đầu tiên là thiết bị PIC18FXXJ Flash có khối xoá lớn hơn đa
phần thiết bị PIC18 Flash. Việc tăng bản ghi cũng đòi hỏi khôi phục lại toàn bộ khối
sau khi xoá.
Một vấn đề khác là không như các thiết bị PIC18 Flash, mỗi khối ghi chỉ có thể
ghi một lần giữa các chu trình xoá. Điều này nghĩa là nếu một ứng dụng muốn thay đổi
một bit của bộ nhớ chương trình về 0 thì nó cần phải đệm toàn bộ khối xoá, xoá bộ
nhớ và ghi lại toàn bộ bộ nhớ với bit đã thay đổi. Nhiều thiết bị PIC18 Flash cho phép
ghi nhiều bản cho một khối giữa các lần xoá, cho phép ứng dụng chỉ copy khối cần
thay đổi, xoá một bit đó rồi ghi lại bộ nhớ. Việc xoá bắt buộc, yêu cầu tăng bộ đệm và
giảm số chu trình xoá trong thiết bị PIC18FXXJ Flash làm cho việc mô phỏng
EEPROM khó khăn hơn.
Trong thiết bị PIC18FXXJ Flash, thanh ghi giữ để tự ghi không tự reset thành
FFh sau khi ghi xong. Chúng giữ giá trị từ khối lập trình cuối cùng. Điều này được
dùng vào các ứng dụng có thể ghi toàn bộ khối vào bộ nhớ và giữ phần dữ liệu còn lại
là FFh. Để đảm bảo các byte còn lại chuyển thành FFh thì ứng dụng cần thực hiện chỉ
thị TBLWT cho các byte còn lại trong khối với giá trị FFh.
57
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Bất cứ ứng dụng nào tự ghi hay mô phỏng EEPROM trên thiết bị Flash
PIC18FXXJ phải biết số chu trình ghi thông thường của thiết bị đó (xem “Chu trình
ghi” để biết thêm chi tiết).
Vấn đề đặc biệt phải thực hiện với các ứng dụng có chức năng tự ghi trong khối
xoá cuối cùng của không gian bộ nhớ người dùng. Xem “Từ cấu hình” để biết thêm
chi tiết.
5.12.6 Bảo vệ mã
Bảo vệ mã trong thiết bị PIC18FXXJ Flash được thực hiện như một khối đơn.
Toàn bộ bộ nhớ được bảo vệ bởi một bit cấu hình. Giống như (các) bit bảo vệ mã ở
thiết bị trước, bit này không cho ghi và đọc từ ngoài tại module lập trình nối tiếp in-
circuit. Tuy nhiên, bit bảo vệ mã không giới hạn chức năng đọc và ghi bảng trong mã
ứng dụng.
5.12.7 Vào chế độ lập trình
Phương thức vào chế độ lập trình của thiết bị PIC18FXXJ Flash đã thay đổi.
Trước đây, thiết bị PIC18 Flash dựa vào nguồn 12V trên VPP/MCLR để vào chế độ lập
trình qua chế độ lập trình điện thế cao hoặc tín hiệu mức cao trên PGM để vào chế độ
lập trình nguồn đơn khi bit cấu hình được đặt chính xác. Ở thiết bị PIC18FXXJ Flash,
vào chế độ lập trình bằng cách trước hết nâng và sau đó hạ đường reset xuống. Khi
reset xong, một chuỗi được truyền nối tiếp vào các chân lập trình để vào chế độ lập
trình. Cuối cùng, đường MCLR được đặt lại mức cao để bắt đầu lập trình.
HÌnh 24 trình bày ví dụ vào chế độ lập trình trên thiết bị PIC18FXXJ Flash. Xem
thông số kỹ thuật lập trình thiết bị để biết thông tin về yêu cầu thời gian và thiết bị
riêng.
Hình 24: Vào chế độ lập trình/ thay đổi của thiết bị flash PIC18FXXJ
58
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
5.13 Thiết Lập Chính Xác Cho Chương Trình Thiết Bị Và Công Cụ Phần Mềm
Phải chú ý khi dùng bất cứ công cụ lập trình nào cho thiết bị PIC18FXXJ Flash.
Thiết bị PIC18FXXJ Flash không thể hoạt động ở 12V trên Vpp/MCLR thường sử
dụng để vào thiết bị trong chế độ lập trình. Trước khi nối thiết bị PIC18FXXJ Flash
với bảng thể hiện hay cài nó vào một socket lập trình:
1. Xác nhận rằng bảng sẽ đưa ra mức điện thế chính xác.
2. Xác nhận rằng chân VDDCORE/VCAP được cấu hình đúng như đã được mô tả
trước trong phần “Bộ điều chỉnh điện thế, VDDCORE/VCAP, thiết bị “LF” và
“F”, mức VDD”.
3. Xác nhận rằng chương trình và MPLAB IDE đều chọn thiết bị chính xác.
Nối chương trình với máy tính và kiểm tra chương trình đã được bạt và kích hoạt
đúng thiết bị trước khi nối chương trình với bảng hay cài một phần vào chương trình.
Không thực hiện được điều này có thể làm hỏng phần đó.
Để chọn đúng thiết bị, vào tuỳ chọn thực đơn “Configure” trong MPLAB IDE rồi
chọn tuỳ chọn “Select Device”. Từ thực đơn này, chọn thiết bị chính xác .
Chú ý: Với thiết bị PIC18FXXJ Flash ít chân, các phần ký hiệu “F” và “LF” sẽ
đợc liệt kê riêng biệt trong hộp thoại “Select Device”. Điểm này khác biệt với thiết bị
PIC18 Flash, chỉ có phần ký hiệu “F” được liệt kê trong hộp thoại “Select Device”.
Hình 25: Chọn thiết bị trong MPLAB- IDE
59
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
5.14 KHÁC BIỆT MODULE
Chuẩn hoá tương tự/số
Một thay đổi chức năng quan trọng được thêm vào thiết bị PIC18FXXJ Flash là
khả năng người dùng có thể chuẩn hoá bộ chuyển đổi tương tự/số. Việc chuyển hoá
này sẽ giúp bù lại bất cứ phần offset nào sinh ra trong module.
Để bắt đầu chuẩn hoá, đầu tiên đặt bit chuẩn hoá ADCAL trong thanh ghi
ADCON0 (xem Hình 26). Khi đặt bit ADCAL, bắt đầu chuyển đổi tương tự/số bằng
cách đặt bit GO/DONE. Việc chuyển đổi này sẽ không đọc bất cứ một chân đầu vào
tương tự nào. Quá trình này nên thực hiện mỗi lần hoạt động của thiết bị thay đổi, ví
dụ, dao động ký thay đổi, điện thế thay đổi, sau mỗi lần reset …
Hình 26: Mở rộng đến các chân đến thêm vào bit chuẩn hóa A/D
5.15 TỔNG KẾT
Thiết bị PIC18FXXJ Flash cho nhà thiết kế hệ thống nhiều tuỳ chọn và tính linh hoạt
cao hơn để thoả mãn các nhu cầu về vi điều khiển của họ. Những khác biệt chính trong tài
liệu này giúp phân biệt thiết bị PIC18FXXJ Flash với thiết bị PIC18 Flash, cho phép nhà thiết
kế chọn đúng thiết bị cho ứng dụng của mình. Nhà thiết kế nên xem xét những điểm khác biệt
khi thiết kế và phát triển sản phẩm.
60
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
CHƯƠNG VI
ĐỒNG HỒ BÁO THỨC
6.1 Tóm lược
Mục đích của ta là thiết kế một đồng hồ báo thức tốt hơn với các đặc tính ưu việt
mà mọi người thực sự cảm thấy hữu ích. Ta muốn cung cấp nhiều âm báo thức cho
phép người dùng tải MP3 và cài những bài hát khác nhau ứng với những báo hiệu khác
nhau. Ta cũng thiết kế để cung cầp nhiều báo hiệu, cho phép một báo hiệu có thể đặt ở
chế độ tắt trong nhiều ngày với thời gian ngắn biến thiên và có âm báo thức đặt trước.
Cấu hình này được thực hiện toàn bộ qua một ứng dụng Java và tấ cả các lệnh và dữ
liệu đều được gửi qua giao diện USB.
6.2 Chỉ thị hoạt động
Đồng hồ báo thức Spiffy được điều khiển chủ yếu qua ứng dụng Java trên máy
tính cá nhân của người dùng. Ứng dụng này là giao diện người dùng đồ hoạ trên nền
Swing cho phép sử dụng thời gian và ngày hiện tại, hiệu chỉnh 12 giờ và thời gian
quân sự, báo thức với độ dài chờ thay đổi và âm báo thức được tải qua USB vào đồng
hồ báo thức. Để sử dụng đồng hồ báo thức, cắm nguồn và cáp USB vào và kiểm tra
xem đồng hồ bắt đầu đếm từ 12 giờ. Tại điểm này, ứng dụng có thể mở và cấu hình/tải
có thể bắt đầu.
6.2.1 Ngày tháng/thời gian hiện tại
Theo mặc định, ngày tháng/thời gian hiện tại của đồng hồ báo thức được đồng bộ
theo đồng hồ hệ thống của máy tính người dùng. Nếu không thích thì người dùng có
thể chọn trên menu Time, tuỳ chọn Edit Date/Time để chỉnh lại phần ngày tháng/thời
gian.
61
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hinh 27: Ngày tháng / thời gian hiện tại
6.2.2 Thời gian 12 giờ hay thời gian quân sự
Theo mặc định, đồng hồ báo thức chỉ giờ dạng 12 giờ nhưng nếu người dùng
muốn hiển thị kiểu 24 giờ/thời gian quân sự thì có thể vào menu Time và chọn tuỳ
chọn 12-hr/Military Time.
Hình 28: Thời gian quân sự
62
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
6.2.3 Báo thức
Người dùng có thể thêm, chỉnh và xoá báo thức qua menu Alarms. Thêm hay
chỉnh báo thức thì mở phần chỉnh báo thức ra, ở đó cho người dùng một bộ các nút thể
hiện ngày mà báo thức cần tắt đi, vùng thể hiện thời gian trong ngày mà báo thức cần
tắt đi, độ dài chờ và danh sách các âm báo thức người dùng có thể chọn cho báo thức.
Hình29a: Báo thức
Hình 29b: Báo thức
63
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
6.2.4 Âm báo thức
Người dùng có thể chỉnh các khe âm báo thức hiện tại bằng cách vào menu
Tones và chọn Edit. Người dùng sẽ có một hộp thoại mở file để có thể tìm trong hệ
thống file và chọn một file MP3 muốn tải vào đồng hồ báo thức.
Hình 30: Âm báo thức
6.2.5 Đồng bộ, chờ và ngừng báo thức
Khi người dùng chọn xong, có thể đồng bộ theo ý muốn và tải bất cứ âm báo
thức thay đổi bào vào đồng hồ báo thức bằng cách vào menu App và chọn Sync. Ngoài
ra, khi báo thức được điều khiển, người dùng có thể để chế độ chờ hau ngưng báo thức
qua menu App.
64
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 31: Đồng bộ, ngứng và chờ báo thức
Chi tiết về project
Hình 32: Chi Tiết Project
65
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
6.3 USB
PIC18F4550 có phần hỗ trợ tích hợp cho USB 2.0, nghĩa là có bộ nhớ tích hợp và
khả năng hoạt động không đồng bộ để truyền/lấy dữ liệu qua các đường truyền dữ liệ
USB được D+ và D- được chỉ định. Microchip cung cấp firmware cho nhiều thiết lập
USB gọi là lớp Thiết bị Giao diện Người dùng và Thiết bị Truyền thông. Firmware lớp
Thiết bị Truyền thông được dùng với chức năng cần thiết để cấu hình và tải dữ liệu
qua máy tính vào đồng hồ báo thức. Firmware được cung cấp kèm theo PIC18F4550
bán cùng bộ sản phẩm demo Microchip, vì vậy ta bỏ đi nhiều mã để firmware hoạt
động theo đúng như thiết lập. Firmware CDC do Microchip cung cấp làm việc với
driver USB trên máy host qua cổng COM chuẩn, mô phỏng đến chương trình ứng
dụng. Microsoft tích hợp driver này trên Windows XP nên khó khăn duy nhất là file
.INF chứa ID nhà sản xuất và ID sản phẩm của đồng hồ báo thức đã được cài đặt để
máy tính biết sử dụng driver USB/nối tiếp khi cắm thiết bị vào. Lập trình thiết bị tương
đối đơn giản, dùng gói Javacomm do Sun cung cấp cho kết nối nối tiếp trong Java. Ta
chọn kết nối USB do sự phổ biến của USB trong lĩnh vực tin học hiện nay và khả năng
truyền dữ liệu tốc độ cao, cho phép người dùng chon và tải âm báo thức MP3 mới dễ
dàng và nhanh. Theo vấn đề về thời gian và độ phức tạp, dùng driver chuyên biệt, đầy
đủ cho Windows XP không dễ dàng và ta chọn thay bằng mô phỏng USB/nối tiếp.
Nhược điểm là tốc độ truyền ta dùng không tương đương với USB nhưng ưu điểm là
thực dùng USB và tiếp tục phát triển là khả thi trong một giờ hai đợt, một khung thời
gian định kỳ.
6.4 Lập trình PIC
Vi điều khiển PIC thực hiện một số tác vụ bao gồm theo dõi ngày tháng và thời
gian thực, điều khiển vào/ra từ kết nối USB và giao tiếp với phần cứng thiết bị
Compact Flash bộ mã hoá MP3. Để tất cả các hoạt động chạy một cách trơn tru thì đòi
hỏi phải chia chức năng mà các tác vụ đó yêu cầu thành các phần nhỏ để có thể thực
hiện tuần tự bằng một vòng lặp chính, do đó cho phép tất cả các tác vụ lấy thời gian bộ
xử lý theo định kỳ.
6.4.1 Đồng hồ
Để theo dõi ngày tháng và thời gian thực, PIC dùng đồng hồ gắn trong dò theo
luồng để điều khiển một ngắt có nhiệm vụ tăng giá trị ngày tháng/thời gian một cách
chính xác. Ngoài ra, khi ngắt thấy bắt đầu một phút mới, nó kiểm tra báo thức xem có
66
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
cần kích hoạt chưa. Nếu có, một cờ được đặt để lần sau qua vòng lặp, chức năng hỏi
vòng để kiểm tra cờ kích hoạt báo thức sẽ cho chạy âm báo thức chính xác.
6.4.2 USB
Tác vụ USB dùng thành phần trạng thái để cho phép lưu lại đúng trạng thái của
nó trong khi các tác vụ khác vẫn chạy. Ví dụ, đặt ngày tháng/thời gian hiện tại yêu cầu
gửi lệnh “set” từ máy tính đến đồng hồ báo thức, để thành phần trạng thái USB vào
trạng thái chờ lệnh “clk”, rồi lại thay đổi trạng thái để chờ một số nhất định các byte
chứa dữ liệu thời gian/ngày tháng.
Bộ mã hoá MP3 Compact Flash
Compact Flash có bộ điều khiển gắn trên mạch nên dễ dàng gửi lệnh mới để thực
thi độc lập với PIC. Vì vậy, trong vòng lặp chính, nếu báo thức được điều khiển và vì
vậy âm báo thức được bật thì khi chức năng chạy được gọi từ vòng lặp chính xác định
Compact Flash cần nhiều dữ liệu hơn, nó phát lệnh đọc để ngăn lại trong khi CF đọc,
vì vậy cho phép tác vụ chạy nhanh chóng kết thúc hoạt động liên tiếp, lặp lại. Bộ mã
hoá MP3 đòi hỏi dữ liệu phải được gửi vào nối tiếp để hoạt động được chia nhỏ ra để
gửi dữ liệu thành các gói nhỏ.
6.5 Sử dụng Compact Flash
Ta chọn sử dụng card Compact Flash (CF) để lưu trữ dữ liệu MP3. Lý do chính
cho lựa chọn này là card CF có bộ điều khiển riêng gắn cùng để khi kết nối chỉ cần gửi
lệnh và chờ thực hiện. Ta chọn kết nối với card CF dùng chế độ Common Memory
làm việc với giao diện dữ liệu 8 bit và vì vậy ta có thể lưu trên các chân của vi điều
khiển PIC. Ta dùng bảng ngắt CF có sẵn trong trang SparkFun.com.
Dữ liệu trên card CF được lưu trữ trên các sector 512 byte và tất cả các sector
phải được viết thành khối kích thước 512 byte. Để kết nối với card CF, ta dùng 3
đường địa chỉ để truy cập vào 8 thanh ghi. Các thanh ghi này được dùng để tải thông
tin địa chỉ và gửi lệnh đọc và viết. Ta cũng có thể tận dụng nhiều đường điều khiển,
việc này chỉ tận dụng được những đường quan trọng nhất gồm Reset, Ready, Write
Enable và Output Enable. Reset thì dễ hiểu, Ready là tín hiệu từ card để báo hiệu khi
bận, Write Enable viết vào thanh ghi địa chỉ và Output Enable đọc từ thanh ghi địa chỉ.
Khi bật đồng hồ báo thức, card CF được reset và sẵn sàng nhận chấp nhận tín hiệu. Có
mã cung cấp để gọi nhiều chức năng và thực hiện những tác vụ phức tạp nhưng mã
thực sự dùng trong thiết bị khá đơn giản. Khi cần chơi một bài hát thì sector đầu tiên
67
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
sẽ được tải vào các thanh ghi CF bằng lệnh CF_StartSectorRead(), nó cũng tải thanh
ghi điều khiển bằng lệnh read. Sau đó sector đầu tiên được copy từ card vào bộ đệm
trên PIC, việc này thực hiện bằng cách đọc thanh ghi 0 và cho phép đầu ra xuống mức
thấp rồi nâng lên mức cao để đọc lần lượt 512 byte. Để sector kế tiếp sẵn sàng khi cần
thiết, lệnh CF_StartSectorRead() được gọi lại để tải trước. Chức năng gửi MP3 đến
chip STA013 cũng kiểm tra hết file sau khi tải một sector mới, việc này được thực
hiện bằng cách kiểm tra một sector mà tất cả các byte có giá trị 0xFF. Khi viết số bài
hát, trước tiên phải xác định sector bắt đầu. Sau đó, các byte được viết vào sector và
mỗi lần sector lấp đầy, bộ đệm được viết vào card và nó lại được lấp đầy lại. Khi cả
bài hát đã được viết, phần còn lại của sector đó được lấp với giá trị 0xFF và được viết,
sau đó công việc cũng được thực hiện tương tự trong sector kế tiếp để có ít nhất một
sector đầy giá trị 0xFF khi kết thúc bài hát.
Nhìn chung, giao diện CF rất cơ bản và dễ sử dụng. Quản lý dữ liệu trên một bộ
đệm kích thước sector trên PIC và viết hay đọc vào card CF khiến cho việc truy cập và
viết dữ liệu rất dễ dàng.
6.6 Chip bộ mã hoá MP3
Ta chọn STA013 để mã hoá MP3, thực sự thì có những phiên bản mới hơn của
chip này phổ biến hơn nhưng ta không nói đến ở đây. Chip này được chọn vì dễ sử
dụng, tất cả những việc cần làm chỉ đơn giản là gửi vào một file và nó sẽ quyết định
tốc độ bit và các thông tin khác rồi mã hoá phần dữ liệu. Chip có sắn bộ đệm trong và
nâng tín hiệu lên mức cao để báo hiệu cho PIC biết nó có thể nhận dữ liệu. Điều này
không cần nhiều điều kiện cho việc báo hiệu thời gian chính xác từ PIC, chỉ cần giữ
đầy bộ đệm nếu có thể.
68
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hinh 33: Bộ mã hóa MP3
Việc cấu hình chip STA013 được thực hiện qua bus I2C, là bus chia sẻ hai chiều
sử dụng đơn giản như một công cụ cấu hình. Dùng giao thức I2C, các lệnh có thể được
viết vào chip và chip được thiết lập để chạy file. Chip STA013 ta dùng có file cấu hình
rất lớn do STMicro cung cấp, nhiều người cho rằng đó là firmware cập nhật cho chip
để hoạt động tốt. File này có khoảng 2000 bản ghi vào chip, đầu tiên phải được gửi
vào chip qua bus I2C, khi file đã được gửi thì các lệnh chính xác phải được gửi đi để
cấu hình chip trong môi trường cài đặt. Cấu hình gồm các chi tiết như tốc độ xung và
thông tin giao diện để nối vào bộ chuyển đổi số - tương tự. Thiết lập chính xác có thể
thấy trên data sheet của chip này. Khi chip đã được cấu hình, nó phải được chuyển đổi
để sử dụng và chạy các chế độ và sau đó nó sẽ sẵn sàng nhận dữ liệu MP3. Chip mã
hoá cũng có nhiều tuỳ chọn tiên tiến gồm tuỳ chọn EQ và thiết lập dung lượng, cho
phép sửa đổi âm thanh dễ dàng nhưng không được dùng trong mã hiện tại. Các thiết
lập này dễ thay đổi qua bus I2C.
Dữ liệu MP3 được gửi đến chip qua giao diện SPI đơn giản. Giao diện này có hai
đường, một cho đồng hồ và một cho dữ liệu. Đường dữ liệu được đặt và xung đồng hồ
69
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
được gửi cho mỗi bit. Dữ liệu được gửi từng byte một đến khi đường yêu cầu dữ liệu
của chip xuống mức thấp để báo hiệu bộ đệm đã đầy.
Việc khó nhất khi sử dụng chip là thiết lập mạch khởi tạo cho nó và chỉnh tín
hiệu 5V sang 3V do STA013 là chip 3V trong khi PIC của ta là 5V. Mạch khởi tạo có
trong sơ đồ, hiệu điện thế có thể điều chỉnh bằng nhiều cách.
Đầu tiên, có một mạch đơn giản gồm điện trở và tụ điện giữa PIC và STA013, nó
giảm điện thế xuống đủ thấp để điện thế không làm hỏng chip STA013. Khó nhất là
đường dữ liệu bus I2C. Cần thực hiện cả hai việc để bộ chia giữa các chip không hoạt
động. Lẽ ra phải dùng thành phần kéo 3V và PIC chỉnh tín hiệu thành High-Z đến khi
nó hạ tín hiệu thấp xuống điểm không mà chân và điện trở kéo có sụt điện thế 3V.
Hình 34a: :I2C bus data
Hình 34b: Giao diện 5 xuống 3V một chiều
Để cấp nguồn cho chip STA013 thì phải dùng một bộ điều chỉnh điện thế thay
đổi được 317T, nó cấp nguồn khá ổn định chỉ với một chip và các điện trở và tụ điện
kép gắn ngoài. Data sheet của chip này có mạch máy phát dao động tinh thể được
dùng để cấp xung nhưng điều này không đáp ứng được, vì vậy ta chuyển sang máy
phát dao động 10 MHz, giải quyết tất cả các vấn đề về máy phát dao động.
70
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
6.7 Bộ chuyển đổi số - tương tự CS4334
Đây là một bộ chuyển đổi số - tương tự cơ bản. Giao diện khá đơn giảm do chip
hỗ trợ kết nối I2S và STA013 cũng vậy. Ngoài việc thiết lập mạch khởi tạo, chip chỉ
cần cấp nguồn và có tín hiệu chính xác từ STA013. StA013 phải thiết lập chính xác
theo các thông số kỹ thuật của bộ chuyển đổi số - tương tự kèm theo và hoạt động đơn
giản.
6.8 Màn hình LED
Để hiển thị, ta sử dụng màn hình 7 phần, khiến cho đồng hồ trông giống như
đồng hồ báo thức thường hơn là đồng hồ báo thức phức tạp. Điều này hạn chế ta chỉ
hiển thị thời gian và các đối tượng không phức tạp hơn như ngày trong tuần và ngày
tháng nhưng do thiết lập bình thường qua kết nối USB, đó không phải là vấn đề quan
trọng.
Để nối màn hình 7 đoạn vào PIC, ta biết là cần phải dùng càng ít chân càng tốt.
Quyết định cuối cùng là dùng bốn thanh ghi dịch 8 bit nối tiếp vào/song song ra để có
thể tải qua hai chân và có một bit cho mỗi đoạn. Do có bộ điều khiển màn hình 7 đoạn,
tuỳ chọn này rất đơn giản và đạt yêu cầu. Ta chỉ cần refresh lại màn hình bất cứ khi
nào dữ liệu hiển thị thay đổi, mặt khác, có thể giữ nguyên và màn hình sẽ hiển thị thời
gian hiện tại. Nối bốn thanh ghi dịch vào một đường nối tiếp và dùng chúng để điều
khiển màn hình rất đơn giản và hiệu quả.
Hình 35: Màn hình LED
71
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
6.9 Kết luận
Ta đã thành công trong việc tạo ra một đồng hồ báo thức với các đặc tính mong
muốn. Dùng đồng thời các chip tiện dụng, nối và lập trình chúng theo thiết kế riêng
không phải là cách dễ nhất để tạo ra một đồng hồ báo thức như vậy như đó là cơ hội
lớn để học hỏi.
72
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 36: Sơ đồ khối
73
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
Hình 37: STA013
74
Nguyễn Thế Anh Khoa Điện Tử Viễn Thông
TÀI LIỆU THAM KHẢO
1. Dương Minh Chí. Sơ Đồ Chân Linh Kiện Bán Dẫn. NXB KHKT. 2002
2. Ngô Diên Tập. Vi Xử Lý Trong Đo Lường Và Điều Khiển. NXB KHKT.
10/08/2004
3. Ngô Diên Tập. Vi Điều Khiển Với Lập Trình C. NXB KHKT. 04/2006
4. Ngô Diên Tập. Kỹ Thuật Vi Điều Khiển AVR
Một Số Trang Web:
75
Các file đính kèm theo tài liệu này:
- Vi Điều Khiển PIC 18F4550.pdf