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.
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
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.
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
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.
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”.
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.
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.
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.
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
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.
Hình 31: Đồng bộ, ngứng và chờ báo thức Chi tiết về project
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ó
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