Chapter2 ViDieuKhien PIC18F4550 V2q

56 364 9
Chapter2 ViDieuKhien PIC18F4550 V2q

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chapter2 ViDieuKhien PIC18F4550 V2q tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các l...

Chương 2: cấu trúc vi điều khiển PIC 18F4550 CHƯƠNG 2: CẤU TRÚC VI ĐIỀU KHIỂN PIC 18F4550 Sau đọc chương này, người tham khảo có khả năng:  Biết đặc trưng PIC 18F4550  Nắm vững cấu hình dao động  Có khả thiết kế xung clock theo ứng dụng yêu cầu  Hiểu rõ chế tổ chức nhớ vi điều khiển  Phân biệt chế độ hoạt động vi điều khiển  Nắm vững đặc điểm loại reset trạng thái ảnh hưởng ghi sau tác động reset  Nắm vững ý nghĩa hoạt động ghi: OSCTUNE, OSCCON, RCON, STKPTR, STATUS 2.1 TỔNG QUAN PIC 18F4550 PIC 18F4550 vi điều khiển 40 chân, có khả giao tiếp USB hiệu cao, tăng cường nhớ Flash sử dụng cơng nghệ nanoWatt Hình 2.1: sơ đồ chân PIC 18F4550 2.1.1 Tính bus nối tiếp đa − Là vi xử lý trang bị tính giao tiếp USB 2.0 − Có khả truyền nhận liệu tốc độ thấp (1.5 Mb/s) tốc độ cao (12 Mb/s) − Hỗ trợ việc điều khiển, ngắt, truyền liệu kích thước lớn truyền liệu đồng thời 31 Chương 2: cấu trúc vi điều khiển PIC 18F4550 − Hỗ trợ lên đến 32 điểm đầu cuối (16 đường truyền song hướng) − kb nhớ RAM truy cập kép cho USB − Bộ thu phát USB với điều chỉnh điện áp 3.3 V chip − Giao tiếp thu phát USB riêng bên ngồi − Có port truyền liệu song song (SPP) cho việc truyền dòng liệu USB (chỉ có vi điều khiển 40 chân) 2.1.2 Chế độ quản lý công suất − Run: CPU hoạt động, khối ngoại vi hoạt động − Idle: CPU không hoạt động, khối ngoại vi hoạt động Dòng điện chế độ idle giảm xuống 5.8 μA − Sleep: CPU khơng hoạt động, khối ngoại vi khơng hoạt động Dòng điện chế độ sleep giảm xuống 0.1 μA − Bộ dao động Timer1 với thông số: 1.1 μA, 32 kHz, V − Bộ định thời watchdog hoạt động với dòng 2.1 μA − Có chế độ khởi động dao động hai tốc độ 2.1.3 Công nghệ nanowatt Tất vi điều khiển họ PIC18F có tính giảm đáng kể lượng cơng suất tiêu thụ q trình hoạt động Chế độ chạy luân phiên Hoạt động theo xung clock từ điều khiển Timer1 dao động nội, công suất tiêu thụ trình thực thi chương trình giảm đến 90% Chế độ tĩnh (idle) phức hợp Vi điều khiển chạy với CPU ngưng hoạt động, khối ngoại vi hoạt động Ở trạng thái này, cơng suất tiêu thụ giảm nữa, đến 4% lượng cơng suất mà chế độ họat động bình thường yêu cầu Chế độ on-to-fly Chế độ quản lý công suất gọi chương trình người dùng trình hoạt động, cho phép người lập trình kết hợp ý tưởng tiết kiệm lượng thành thiết kế ứng dụng họ 32 Chương 2: cấu trúc vi điều khiển PIC 18F4550 2.1.4 Tính đa dao động Dòng vi điều khiển PIC18F có tính lựa chọn 12 nguồn dao động khác nhau, cho phép người dùng nhiều lựa chọn việc phát triển ứng dụng Tính bao gồm: − nguồn dao động thạch anh sử dụng thạch anh cộng hưởng ceramic − nguồn dao động ngoại − khối tạo dao động nội cung cấp nguồn xung MHz (độ xác ±2%), nguồn dao động nội dùng RC INTRC (xấp xỉ 31 KHz không bị ảnh hưởng nguồn cung cấp nhiệt độ), dãi 6/8 tần số mà người dùng lựa chọn có dãi tần từ 125 kHz đến MHz Lựa chọn giúp ta có thêm hai chân dao động trống để sử dụng cho giao tiếp I/O − Một nhân tần số vòng lặp khóa pha (PLL) sử dụng thạch anh tần số cao dao động ngoại cho phép tần số từ MHz đến 48 MHz − Hoạt động với nguồn xung clock kép không đồng bộ, cho phép chế độ USB sử dụng dao động tần số cao, phần lại vi điều khiển cấp xung clock từ dao động công suất thấp bên Bộ dao động nội bên cạnh vai trò nguồn xung, cung cấp nguồn tham chiếu ổn định cho số tính bổ sung như: − Giám sát lỗi xung clock (Fail-Safe Clock Monitor): chế độ giám sát liên tục nguồn xung sơ cấp dựa vào tín hiệu tham chiếu từ nguồn dao động nội Nếu xảy lỗi xung clock, vi điều khiển chuyển sang sử dụng dao động nội cho phép tiệp tục hoạt động tốc độ thấp shutdown ứng dụng cách an toàn − Chế độ khởi động hai tốc độ: lựa chọn cho phép dao động nội phục vụ nguồn xung, cấp cho chế độ reset mở nguồn (Power-on Reset), đánh thức đưa hệ thống thoát khỏi chế độ sleep nguồn xung clock hoạt động trở lại 2.1.5 Tính đặc biệt khác Độ bền nhớ Bộ nhớ flash tăng cường dùng cho chương trình liệu EEPROM ghi xóa với chu kỳ đến hàng ngàn lần, lên đến 100.000 lần nhớ chương trình, 1000.000 lần cho EEPROM Khả trì liệu mà khơng cần làm tươi nhớ 40 năm 33 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Tính tự lập trình Linh kiện ghi vào chỗ trống nhớ chương trình điều khiển phần mềm nội Bằng cách sử dụng thủ tục khởi động khối boot nằm nhớ chương trình, tạo lập ứng dụng có khả tự cập nhật Thiết lập lệnh mở rộng Họ PIC 18F đưa lựa chọn mở rộng lệnh thiết lập gồm cấu trúc lệnh chế độ ghi địa offset đánh số chữ Lựa chọn mở rộng lựa chọn cấu hình thiết bị, thiết kế đặc biệt để tối ưu mã chương trình ngơn ngữ cấp cao C Khối CCP tăng cường Trong chế độ PWM, khối cung cấp ngõ điều chế 1, 2, để điều khiển driver cầu bán cầu Các tính khác bao gồm chế độ auto shutdown để vô hiệu ngõ PWM theo ngắt hay theo điều kiện khác Ngoài có chế độ auto-restart để kích hoạt lại ngõ PWM điều kiện kể bị xóa Khối USART tăng cường có khả lập địa Khối truyền thơng nối tiếp có khả hoạt động theo chuẩn RS-232 cung cấp hỗ trợ cho giao thức bus LIN Tính tăng cường bao gồm nhận dạng tốc độ baud tự động, tạo tốc độ baud 16-bit nhằm cải thiện độ phân giải truyền liệu Khi vi điều khiển sử dụng dao động nội EUSART hoạt động ổn định ứng dụng mà không cần phải dùng đến dao động thạch anh bên ADC 10-bit Khối kết hợp với chu kỳ thời gian nhận tín hiệu chuyển đổi khả trình cho phép chọn lựa kênh chuyển đổi khởi xướng trình chuyển đổi mà không cần đợi chu kỳ lấy mẫu Do đó, tính làm giảm bớt mã vượt giới hạn chuyển đổi Port ICD/ICSP dành riêng Port dành riêng cung cấp việc sử dụng chân sửa lỗi chân lập trình khơng tích hợp chức khác vi điều khiển Tính cho phép người dùng phát triển ứng dụng chuyên I/O trì khả lập trình sửa lỗi chip Bảng 2.1: tính họ vi điều khiển PIC18F Tính Tần số hoạt động Bộ nhớ chương trình (byte) Bộ nhớ chương trình (bộ nhớ lệnh) Bộ nhớ liệu (byte) Bộ nhớ liệu EEPROM (byte) 34 18F2455 DC – 48 MHz 24576 12288 18F2550 DC – 48 MHz 32768 16384 18F4455 DC – 48 MHz 24576 12288 18F4550 DC – 48 MHz 32768 16384 2048 256 2048 256 2048 256 2048 256 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Nguồn ngắt Port I/O Timer Khối Capture/Compare/PWM Khối Capture/Compare/PWM tăng cường Truyền thông nối tiếp USB Port liệu song song (Streaming Parallel Port SPP) Khối ADC 10bit Khối so sánh Reset (và delay) Phát điện áp thấp khả trình Reset Brown-out (yếu nguồn) khả trình Cấu trúc lệnh Kiểu vỏ 19 Ports A, B, C, (E) 19 Ports A, B, C, (E) 20 Ports A, B, C, D, E 20 Ports A, B, C, D, E 0 1 MSSP, USART tăng cường Không MSSP, USART tăng cường Không MSSP, USART tăng cường Có MSSP, USART tăng cường Có 10 kênh ngõ vào POR, BOR, lệnh RESET, Stack Full, Stack Underflow (PWRT, OST), MCLR (tùy chọn), WDT Có 10 kênh ngõ vào POR, BOR, lệnh RESET, Stack Full, Stack Underflow (PWRT, OST), MCLR (tùy chọn), WDT Có 13 kênh ngõ vào POR, BOR, lệnh RESET, Stack Full, Stack Underflow (PWRT, OST), MCLR (tùy chọn), WDT Có 13 kênh ngõ vào POR, BOR, lệnh RESET, Stack Full, Stack Underflow (PWRT, OST), MCLR (tùy chọn), WDT Có Có Có Có Có 75 cấu trúc, cho phép thiết lập đến 83 cấu trúc với lệnh mở rộng 28-pin PDIP 28-pin SOIC 75 cấu trúc, cho phép thiết lập đến 83 cấu trúc với lệnh mở rộng 28-pin PDIP 28-pin SOIC 75 cấu trúc, cho phép thiết lập đến 83 cấu trúc với lệnh mở rộng 40-pin PDIP 44-pin QFN 44-pin TQFP 75 cấu trúc, cho phép thiết lập đến 83 cấu trúc với lệnh mở rộng 40-pin PDIP 44-pin QFN 44-pin TQFP 35 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Hình 2.2: sơ đồ khối PIC18F4455/4550 (40/44 chân) Chú ý: − RE3 tích hợp chung với ̅̅̅̅̅̅̅̅ MCLR sử dụng chân reset ̅̅̅̅̅̅̅̅ MCLR bị vô hiệu − OSC1/CLKI OSC2/CLKO dùng chế độ lựa chọn dao động khơng sử dụng ngõ I/O số Bảng 2.2 bên mô tả chức chân PIC18F4455/4550 Ghi chú: 36 Chương 2: cấu trúc vi điều khiển PIC 18F4550 TTL = ngõ vào tương thích TTL CMOS = ngõ vào ngõ tương thích CMOS ST = ngõ vào Schmitt Trigger với mức CMOS I = Input O = Output P = Power Bảng 2.2: chức chân PIC18F4455/4550 Tên chân ̅̅̅̅̅̅̅̅/VPP/RE3 MCLR Thứ tự chân PDIP QFN TQFP 18 18 Kiểu chân Kiểu buffer Mơ tả Xố chủ (input) điện áp lập trình (input) - Ngõ vào Master xoá (reset), hoạt động mức thấp, dùng để reset VĐK - Ngõ vào điện áp lập trình - Ngõ vào số Ngõ vào dao động thạch anh xung clock bên - Ngõ vào dao động thạch anh nguồn xung clock bên - Ngõ vào nguồn xung clock bên ngồi, ln kết hợp với chân OSC1 Ngõ dao động thạch anh xung clock - Ngõ dao động thạch anh, kết nối với thạch anh mạch cộng hưởng chế độ tạo dao động thạch anh - Ở chế độ RC, OSC2 kết nối ngõ với CLKO có tần số ¼ tần số OSC1 biểu thị cho tốc độ chu kỳ lệnh - Chân I/O dùng chung PORTA port I/O song hướng ̅̅̅̅̅̅̅̅ MCLR I ST VPP RE3 OSC1/CLKI P I ST OSC1 I Analog CLKI I Analog OSC2 O − CLKO O − RA6 I/O TTL I/O I TTL Analog - I/O số - Ngõ vào analog I/O I TTL Analog - I/O số - Ngõ vào analog I/O I I TTL Analog Analog - I/O số - Ngõ vào analog - Ngõ vào (low) điện áp tham chiếu A/D OSC2/CLKO/RA6 13 14 RA0/AN0 RA0 AN0 RA1/AN1 RA1 AN1 RA2/AN2/VREF-/ CVREF RA2 AN2 VREF- 32 33 19 20 21 30 31 19 20 21 37 Chương 2: cấu trúc vi điều khiển PIC 18F4550 CVREF O Analog - Ngõ tham chiếu so sánh analog I/O I I TTL Analog Analog - I/O số - Ngõ vào analog - Ngõ vào (high) điện áp tham chiếu A/D RA4/T0CKI/ C1OUT/RCV RA4 T0CKI I/O I ST ST C1OUT O − RCV I TTL I/O I I I TTL Analog TTL Analog O − − − I/O I I I TTL Analog ST ST I I/O ST ST I/O I I I/O TTL Analog ST ST I/O ST I/O I I O TTL Analog ST − RA3/AN3/VREF+ RA3 AN3 VREF+ RA5/AN4/SS/ HLVDIN/C2OUT RA5 AN4 ̅̅̅ SS HLVDIN 22 23 24 22 23 24 C2OUT RA6 − − − RB0/AN12/INT0/ FLT0/SDI/SDA RB0 AN12 INT0 FLT0 33 SDI SDA RB1/AN10/INT1/ SCK/SCL RB1 AN10 INT1 SCK 34 10 38 35 RB3/AN9/CCP2/ 36 11 12 - I/O số - Ngõ vào analog - Ngõ vào chọn slave SPI - Ngõ vào phát điện áp cao/thấp - Ngõ comparator - Xem chân OSC2/CLKO/RA6 PORTB port I/O song hướng, PORTB lập trình phần mềm để pull-up tất ngõ vào - I/O số - Ngõ vào analog 12 - Ngắt - Ngõ vào lỗi sai PWM tăng cường (khối ECCP1) - Dữ liệu vào SPI - Ngõ vào/ra liệu I2C SCL RB2/AN8/INT2/ VMO RB2 AN8 INT2 VMO - I/O số - Ngõ vào xung clock ngoại Timer0 - Ngõ comparator - Ngõ vào RCV thu phát USB ngoại - I/O số - Ngõ vào analog 10 - Ngắt - Ngõ vào xung clock nối tiếp đồng chế độ SPI - Ngõ vào xung clock nối tiếp đồng chế độ I2C 10 11 - I/O số - Ngõ vào analog - Ngắt - Ngõ VMO thu phát USB ngoại Chương 2: cấu trúc vi điều khiển PIC 18F4550 VPO RB3 AN9 CCP2 I/O I I/O TTL Analog ST VPO O − I/O I I TTL Analog TTL O − I/O I TTL TTL I/O ST I/O I TTL TTL I/O ST I/O I TTL TTL I/O ST I/O O I ST − ST - I/O số - Ngõ dao động Timer1 - Ngõ vào xung clock ngoại Timer1/Timer3 I/O I I/O ST CMOS ST O − - I/O số - Ngõ vào dao động Timer1 - Ngõ vào Capture 2/ngõ Compare 2/ngõ PWM ̅̅̅̅ thu phát USB - Ngõ OE ngoại I/O I/O ST ST O TTL I TTL RB4/AN11/KBI0/ CSSPP RB4 AN11 KBI0 37 14 14 CSSPP RB5/KBI1/PGM RB5 KBI1 38 15 39 16 40 17 15 RC1/T1OSI/CCP2/ ̅̅̅̅̅̅ UOE RC1 T1OSI CCP2 16 34 35 17 36 35 36 P1A RC4/D-/VM RC4 23 42 - I/O số - Chân ngắt theo thay đổi trạng thái - Chân liệu data clock lập trình ICSP debugger mạch PORTC port I/O song hướng 32 ̅̅̅̅̅̅ UOE RC2/CCP1/P1A RC2 CCP1 - I/O số - Chân ngắt theo thay đổi trạng thái - Chân xung clock lập trình ICSP debugger mạch 17 PGD RC0/T1OSO/ T13CKI RC0 T1OSO T13CKI - I/O số - Chân ngắt theo thay đổi trạng thái - Chân cho phép lập trình ICSP điện áp thấp 16 PGC RB7/KBI3/PGD RB7 KBI3 - I/O số - Ngõ vào analog 11 - Chân ngắt theo thay đổi trạng thái - Ngõ điều khiển chọn chip SPP 15 PGM RB6/KBI2/PGC RB6 KBI2 - I/O số - Ngõ vào analog - Ngõ vào Capture 2/ngõ Compare 2/ngõ PWM - Ngõ VPO thu phát USB ngoại 42 - I/O số - Ngõ vào Capture 1/ngõ Compare 1/ngõ PWM - Ngõ CCP1 PWM tăng cường kênh A - I/O số 39 Chương 2: cấu trúc vi điều khiển PIC 18F4550 D- I/O − VM I TTL I I/O TTL − I TTL I/O O I/O ST − ST - I/O số - Truyền EUSART bất đồng - Xung clock EUSART bất đồng I/O I I/O O ST ST ST − - I/O số - Thu EUSART bất đồng - Dữ liệu EUSART bất đồng - Dữ liệu SPI PORTD port I/O song hướng Port dòng liệu song song (Streaming Parallel Port SPP) Các pin có đệm TTL ngõ vào khối SPP cho phép I/O I/O ST TTL - I/O số - Dữ liệu SPP I/O I/O ST TTL - I/O số - Dữ liệu SPP I/O I/O ST TTL - I/O số - Dữ liệu SPP I/O I/O ST TTL - I/O số - Dữ liệu SPP I/O I/O ST TTL - I/O số - Dữ liệu SPP I/O I/O O ST TTL − - I/O số - Dữ liệu SPP - Ngõ PWM CCP1 tăng cường kênh B I/O I/O O ST TTL − - I/O số - Dữ liệu SPP - Ngõ PWM CCP1 tăng cường kênh C RC5/D+/VP RC5 D+ 24 43 43 VP 40 RC6/TX/CK RC6 TX CK 25 RC7/RX/DT/SDO RC7 RX DT SDO 26 RD0/SPP0 RD0 SPP0 19 RD1/SPP1 RD1 SPP1 20 RD2/SPP2 RD2 SPP2 21 RD3/SPP3 RD3 SPP3 22 RD4/SPP4 RD4 SPP4 27 RD5/SPP5/P1B RD5 SPP5 P1B 28 RD6/SPP6/P1C RD6 SPP6 P1C 29 RD7/SPP7/P1D 30 44 38 39 40 41 - Đường truyền vi sai âm USB - Ngõ vào VM thu phát USB ngoại - I/O số - Đường truyền vi sai dương USB - Ngõ vào VP thu phát USB ngoại 44 38 39 40 41 Chương 2: cấu trúc vi điều khiển PIC 18F4550 2.5 TỔ CHỨC BỘ NHỚ Có loại nhớ họ PIC18: nhớ chương trình, nhớ liệu RAM, nhớ liệu EEPROM Như VĐK kiến trúc Harvard khác, nhớ liệu nhớ chương trình sử dụng bus độc lập với nhau, điều cho phép truy cập đồng thời vào hai nhớ lúc Bộ nhớ liệu EEPROM dùng ứng dụng thực xem thành phần ngoại vi đánh địa truy cập thông qua thiết lập ghi điều khiển Phân tích ứng dụng nhớ trình bày chương sau 2.5.1 Tổ chức nhớ chương trình VĐK PIC18 trang bị đếm chương trình 21-bit có khả đánh địa đến Mbyte nhớ chương trình PIC 18F4550 có 32 kbyte nhớ Flash lưu đến 16384 lệnh single word PIC18 có hai vector ngắt, địa vector reset 000h, địa vector ngắt 0008h 0018h 72 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Bản đồ nhớ PIC18FX455 PIC18FX550 mô tả hình 2.26 Hình 2.26: đồ nhớ chương trình PIC18F2455/2550/4455/4550 Bộ đếm chương trình Bộ đếm chương trình (PC) định địa lệnh cần tìm để thực thi Bộ đếm PC 21 bit chứa ghi bit độc lập: byte thấp ghi PCL có khả đọc ghi, byte cao ghi PCH chứa bit PC đọc ghi cách trực tiếp Do đó, việc cập nhật cho ghi PCH thực thông qua ghi PCLATH Byte cao thứ ba gọi PCU chứa bit PC, khơng thể đọc ghi cách trực tiếp Việc cập nhật cho ghi PCU thực thông qua ghi PCLATU Nội dung hai ghi PCLATH PCLATU truyền đến đếm chương trình có hoạt động ghi vào PCL Và tương tự, hai byte cao PC truyền đến PCLATH PCLATU có hoạt động đọc PCL xảy PC đánh địa nhớ chương trình thành byte, để ngăn PC đánh địa không trùng với cấu trúc word, bit LSB PCL cố định 0, đếm PC tăng lên lần để định vị trí cho lệnh nhớ chương trình 73 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Các lệnh rẽ nhánh CALL, RCALL, GOTO ghi trực tiếp lên nhớ chương trình, lệnh nội dung PCLATH PCLATU khơng truyền đến đếm chương trình Trả địa ngăn xếp Việc trả địa ngăn xếp cho phép kết nối lên đến 31 lệnh gọi ngắt chương trình Giá trị PC đẩy vào nhớ ngăn xếp lệnh CALL RCALL thực thi có ngắt xác nhận xảy Giá trị PC lấy khỏi ngăn xếp lệnh RETURN, RETLW RETFIE Hai ghi PCLATH PCLATU không bị ảnh hưởng lệnh RETURN CALL Ngăn xếp hoạt động nhớ RAM 21bit có khả chứa đến 31 word, có trỏ ngăn xếp 5-bit (STKPTR) Không gian ngăn xếp không bị chia thành không gian chứa chương trình hay liệu riêng biệt Con trỏ ngăn xếp đọc ghi, địa ngăn xếp đọc ghi thông qua ghi chức đặc biệt đỉnh ngăn xếp Dữ liệu cất vào hay lấy khỏi ngăn xếp dùng ghi Khi có lệnh CALL thực thi, trỏ ngăn xếp tăng lên trỏ đến vị trí ghi nội dung PC, lệnh RETURN làm nội dung trỏ ngăn xếp truyền đến PC, sau trỏ ngăn xếp giảm xuống Con trỏ ngăn xếp khởi tạo ‘00000’ sau reset, nhớ RAM không chứa giá trị ‘00000’ mà đơn giá trị reset mà thơi, có bit trạng thái dùng để thị ngăn xếp đầy, tràn hay tràn Truy cập đỉnh ngăn xếp Chỉ có đỉnh địa ngăn xếp trả (TOS) đọc ghi Việc thiết lập ghi TOSU:TOSH:TOSL chứa nội dung vị trí ngăn xếp trỏ ghi STKPTR (hình 2.27) Sau lệnh CALL, RECALL ngắt, phần mềm quản lý ngăn xếp mà người dùng cài vào xác định giá trị cất cách đọc ghi TOSU:TOSH:TOSL, người dùng phải vộ hiệu ngắt toàn cục truy cập ngăn xếp để tránh việc làm sai lệch giá trị ngăn xếp cách vơ ý Hình 2.27: ngăn xếp trả địa 74 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Con trỏ ngăn xếp trả Thanh ghi STKPTR chứa giá trị trỏ, bit trạng thái STKFUL (Stack Full) STKUNF (Stack Underflow) Giá trị trỏ ngăn xếp từ đến 31 Con trỏ ngăn xếp tăng trước có giá trị cất vào ngăn xếp, giảm sau lấy khỏi ngăn xếp Khi reset, giá trị trỏ 0, người dùng đọc ghi giá trị trỏ Sau PC cất vào ngăn xếp 31 lần mà không lấy trở lại lần nào, bit STKFUL set, bit xóa phần mềm thơng qua POR Q trình xử lý ngăn xếp đầy tùy thuộc vào bit cấu hình STVREN (Stack Overflow Reset Enable), bit set lần cất vào ngăn xếp thứ 31 cất giá trị (PC+2) vào ngăn xếp, set bit STKFUL, reset VĐK Sau bit STKFUL set trỏ ngăn xếp set Nếu STVREN xóa, bit STKFUL set lần cất thứ 31 trỏ ngăn xếp tăng lên 31 Sau đó, hoạt động cất không đè lên lần cất 31 trỏ trì giá trị 31 Khi ngăn xếp giải phóng hồn tồn, lần lấy trả giá trị cho PC set bit STKUNF, trỏ ngăn xếp trì Bit STKUNF trì set xoá phần mềm kiện POR Thanh ghi STKPTR (Stack Pointer Register) Hình 2.28: ghi STKPTR Bit – STKFUL: bit cờ báo ngăn xếp đầy = Ngăn xếp đầy bị tràn = Ngăn xếp chưa đầy chưa bị tràn Bit – STKUNF: bit cờ báo ngăn xếp tràn = Ngăn xếp tràn = Ngăn xếp chưa bị tràn Bit – không sử dụng, đọc Bit 4-0 – SP4:SP0: bit vị trí trỏ ngăn xếp Chú ý : bit xóa phần mềm người dùng kiện POR Cấu trúc PUSH POP 75 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Bởi Top-of-Stack (đỉnh ngăn xếp) ghi đọc, khả cất giá trị vào ngăn xếp lấy khỏi ngăn xếp mà không gây gián đoạn trình thực thi lệnh tính cần thiết Ở PIC18F có hai cấu trúc lệnh PUSH POP cho phép TOS điều khiển phần mềm, ghi TOSU, TOSH TOSL điều chỉnh để đặt liệu vào trả địa ngăn xếp Lệnh PUSH làm tăng trỏ ngăn xếp, đặt giá trị PC vào nhớ ngăn xếp Lệnh POP đẩy giá trị TOS cách giảm trỏ ngăn xếp, giá trị đẩy trước vào TOS trở thành giá trị TOS Tra bảng nhớ chương trình Trong trình lập trình cho VĐK, xuất tình chương trình đòi hỏi tạo lập cấu trúc liệu bảng tra nhớ chương trình Với PIC18, tra bảng thực theo cách:  Dùng lệnh GOTO  Đọc bảng Dùng lệnh GOTO Lệnh GOTO thực cách cộng giá trị offset vào đếm chương trình Ví dụ 1: MOVF OFFSET, W CALL TABLE ORG nn00h TABLE ADDWF PCL RETLW nnh RETLW nnh RETLW nnh Việc tra bảng thực lệnh ADDWF PCL, nhóm lệnh RETLW nn, ghi W nạp giá trị offset vào bảng trước thực thi việc gọi bảng tra Lệnh thủ tục gọi ADDWF PCL, lệnh thực thi trả giá trị ‘nn’ cho hàm gọi 76 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Giá trị offset nạp vào ghi W số byte làm cho đếm chương trình tăng lên làm cho PC nhân với Trong phương pháp này, có byte liệu lưu vị trí lệnh, yêu cầu phải có khơng gian để trả địa ngăn xếp Tra bảng ghi bảng Đây phương pháp tốt để ghi liệu vào nhớ chương trình, cho phép byte liệu lưu vị trí lệnh Dữ liệu tra bảng lưu thành byte word chương trình cách dùng bảng đọc ghi Thanh ghi Table Pointer (TBLPTR) xác định số byte địa ghi Table Latch (TABLAT) chứa liệu đọc ghi từ nhớ chương trình Dữ liệu chuyển đến lấy từ nhớ chương trình byte lần 2.5.2 Bộ nhớ liệu Bộ nhớ data PIC18 thiết kế RAM tĩnh Mỗi ghi nhớ data có địa 12-bit, cho phép nhớ liệu chứa lên đến 4096 byte Không gian nhớ chia thành 16 bank, bank chứa 256 byte PIC 18F2455/2550/4455/4550 chứa bank hoàn chỉnh, tức chứa tổng cộng 2048 byte Hình 2.29 mơ tả tổ chức nhớ liệu VĐK 77 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Hình 2.29: tổ chức nhớ liệu Bộ nhớ data chứa ghi có chức đặc biệt (SFRs) ghi dùng chung (GPRs) SFRs dùng để điều khiển xác định trạng thái chức điều khiển thành phần ngoại vi, GPRs dùng để lưu trữ liệu làm vùng hoạt động tạm cho ứng dụng người dùng Bất vị trí chưa sử dụng đọc ‘0’ 78 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Để đảm bảo ghi (SFRs GPRs) truy cập chu kỳ xung nhịp, PIC18 trang bị Access bank Đây vùng nhớ 256 byte cho phép truy cập nhanh đến SFRs phần thấp bank GPRs mà không cần dùng đến ghi chọn bank BSR Bộ nhớ data đánh địa trực tiếp, gián tiếp hay theo số USB RAM Bank đến bank nhớ data xếp đặc biệt dành cho RAM, khối USB bị vơ hiệu GPRs bank sử dụng GPRs khác nhớ data Khi khối USB cho phép vùng nhớ bank định vị đệm RAM cho USB Vùng nhớ chia dùng để truyền liệu trực tiếp lõi VĐK cấu giao diện USB nối tiếp (SIE) Bank dùng để quản lý đệm USB khối USB kích hoạt không nên dùng thực việc khác suốt thời gian USB hoạt động Thanh ghi chọn bank (BSR) Do nhớ data lớn nên cần phải có chế đánh địa hiệu phép truy cập rộng rãi đến địa vùng nhớ này, điều có nghĩa tồn địa khơng thể cho phép có tính chất ghi đọc Đối với PIC18 sử dụng chế phân chia RAM banking Cơ chế chia vùng nhớ thành 16 bank kề nhau, bank có dung lượng 256 kbyte Tùy theo cấu trúc lệnh, vị trí đánh địa trực tiếp địa 12 bit, địa 8bit thấp kết hợp với trỏ bank bit Hầu hết lệnh PIC18 sử dụng trỏ bank hay gọi ghi chọn bank (BSR) Thanh ghi SFRs chứa bit địa cao vị trí vùng nhớ, lệnh bit thấp Thanh ghi BSR sử dụng bit thấp (BSR3:BSR0), bit cao không dùng đọc bit ghi bit Giá trị BSR vị trí bank nhớ data, bit mã lệnh cho biết vị trí lệnh bank Mối quan hệ giá trị BSR phân chia bank nhớ data minh họa hình 2.30 Bởi có đến 16 bank chia cho vùng địa thấp, phải đảm bảo chọn bank trước thực đọc ghi data Khi bank chọn thực chất có bank ghi đọc liệu, việc ghi lên bank khác bị cấm, đọc giá trị bank trả ‘0’ Trong hình 2.29 thể ghi chọn để thực thi 79 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Trong cấu trúc lệnh PIC18, có lệnh MOVFF chiếm hết địa 12-bit ghi nguồn đích Tất lệnh khác dùng địa thấp để chứa toán hạng, phải sử dụng BSR access bank để chứa ghi đích chúng Hình 2.30: ghi chọn bank (định địa trực tiếp) Access bank Để truy cập theo luồng đến vị trí liệu thường sử dụng nhất, nhớ data cấu hình theo access bank cho phép truy cập đến khối nhớ mà không cần xác định BSR Access bank bao gồm 96 byte nhớ (00h-5Fh) bank gọi “access Ram” chứa GPRs; 160 byte cuối nhớ (60h-FFh) bank 15 nơi chứa SFRs Access bank sử dụng lệnh cốt lõi PIC18 có chứa bit access RAM (biến ‘a’ lệnh) Khi ‘a’ = 1, lệnh sử dụng BSR địa bit nằm mã lệnh thể cho địa nhớ data Tuy nhiên, ‘a’ = 0, lệnh bị buộc chuyển sang dùng access bank, giá trị BSR bỏ qua toàn Việc sử dụng access bank cho phép lệnh hoạt động vùng địa liệu chu kỳ xung mà không cần phải cập nhật giá trị BSR trước Vùng access RAM có địa nhỏ 60h vùng lưu giá trị liệu tốt dành cho ứng dụng cần truy cập nhanh, chẳng hạn kết tính tốn trực tiếp biến chung chương trình Các ghi dùng chung PIC18F có vùng nhớ chia bank nằm vùng GPR, nhớ RAM liệu cho phép tất lệnh sử dụng nhớ GPRs bank có địa 80 Chương 2: cấu trúc vi điều khiển PIC 18F4550 000h không khởi tạo Power on reset, không bị thay đổi tất chế độ reset khác Các ghi có chức đặc biệt Thanh ghi có chức đặc biệt SFR ghi CPU thành phần ngoại vi sử dụng để điều khiển hoạt động VĐK theo ý muốn Các ghi xem nhớ RAM tĩnh nhớ data SFR chiếm vùng nhớ từ F60h đến FFFh, địa ghi có chức đặc biệt xem tham khảo từ datasheet Microchip SFR chia thành dạng: ghi liên quan đến chức lõi VĐK (ALU, reset, ngắt) ghi liên quan đến chức ngoại vi Thanh ghi trạng thái STATUS Thanh ghi STATUS chứa trạng thái số học ALU, giống ghi SFR khác, sử dụng làm tốn hạng cho lệnh Nếu ghi STATUS đích lệnh, tác động đến bit Z, DC, C, OV N Kết thực lệnh không ghi vào ghi này, thay vào cập theo hoạt động lệnh, kết lệnh sử dụng ghi STATUS làm đích có lẽ khác so với dự định Ví dụ: lệnh CLRF STATUS set bit Z không thay đổi trạng thái bit khác ‘000u u1uu’ Chỉ có lệnh BCF, BSF, SWAPF, MOVFF, MOVWF thay đổi nội dung ghi STATUS, lệnh khơng tác động đến bit ghi STATUS Hình 2.31: ghi STATUS Bit 7-5 – không sử dụng, đọc Bit – N: bit negative, bit dùng cho số có dấu (ALU MSB = 1) = Kết âm = Kết dương Bit – OV (Overflow bit): bit dùng cho số có dấu (bù 2) Nó cho biết có tràn số bit làm cho bit dấu (bit thứ 7) thay đổi trạng thái = Tràn, xuất số có dấu (trong phép tốn số học) = Khơng tràn 81 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Bit – Z: bit zero = Kết phép toán số học hay logic 0 = Kết phép toán số học hay logic khác Bit – DC: Digit Carry/Borrow bit (bit nhớ/mượn) Đối với lệnh ADDWF, ADDLW, SUBLW SUBWF = Có bit nhớ bit thấp thứ kết = Khơng có bit nhớ bit thấp thứ kết Bit – C: bit Carry/Borrow Đối với lệnh ADDWF, ADDLW, SUBLW SUBWF = có bit nhớ bit lớn kết = khơng có bit nhớ bit lớn kết 2.6 CHU KỲ LỆNH PIC18 2.6.1 Giản đồ xung Xung ngõ vào VĐK lấy từ nguồn xung nội hay ngoại chia cho để tạo bốn xung clock lệch pha 90o không trùng lấp (Q1, Q2, Q3, Q4) Bộ đếm chương trình tăng lên Q1, lệnh lấy từ nhớ chương trình chốt ghi lệnh (IR) Q4 Lệnh giải mã thực thi khoảng Q1 đến Q4 Giản đồ xung clock q trình thực thi lệnh mơ tả hình 2.32 Hình 2.32: chu kỳ xung lệnh 2.6.2 Dòng thực lệnh Một chu kỳ lệnh bao gồm chu kỳ Q từ Q1 đến Q4, lệnh lấy thực thi xếp tầng mà lần lấy chu kỳ lệnh, q trình giải mã thực thi chiếm chu kỳ lệnh lại Tuy nhiên, cấu trúc lệnh dạng tầng nên lệnh thực chất 82 Chương 2: cấu trúc vi điều khiển PIC 18F4550 thực thi chu kỳ lệnh, lệnh làm thay đổi đếm chương trình (GOTO) phải chu kỳ lệnh để thực thi lệnh Chu kỳ lấy lệnh bắt đầu PC tăng Q1 Trong chu thi, lệnh lấy chốt ghi IR chu kỳ Q1 Lệnh sau giải mã thực thi Q2, Q3, Q4 Bộ nhớ liệu đọc Q2 (đọc toán hạng) ghi Q4 Ví dụ 2: cấu trúc tầng lệnh 2.6.3 Lệnh nhớ chương trình Bộ nhớ chương trình đánh địa theo byte, lệnh lưu thành byte byte nhớ chương trình Byte nhỏ word (2 byte) lệnh lưu nhớ chương trình địa chẵn, để trì xếp giới hạn lệnh, PC tăng thêm lần bit LSB ‘0’ Hình 2.33 mơ tả word lệnh lưu nhớ chương trình Hình 2.33: ví dụ lưu word lệnh nhớ chương trình Địa tuyệt đối nhớ chương trình lệnh CALL GOTO nhúng vào lệnh Và lệnh lưu theo word, nên liệu chứa lệnh địa word Địa word ghi vào PC truy cập đến byte địa cần truy cập nhớ chương trình 2.6.4 Lệnh có cấu trúc word PIC18 có cấu trúc lệnh word là: CALL, MOVFF, GOTO LSFR Trong tất trường hợp, word thứ hai cấu trúc lệnh chứa bit cao ‘1111’, 12 bit lại liệu thực, thường địa nhớ liệu 83 Chương 2: cấu trúc vi điều khiển PIC 18F4550 Việc sử dụng bit ‘1111’ hình thức dặc biệt lệnh NOP Nếu lệnh thực thi theo tuần tự, sau word đầu tiên, data word thứ hai truy cập sử dụng lệnh Nếu word bị loại bỏ lý word thứ hai tự thực thi cách thay lệnh NOP Điều cần thiết trường hợp lệnh word đặt trước nhóm lệnh điều kiện tác động làm thay đổi đếm chương trình Hình 2.34: cấu trúc lệnh word 2.7 CƠ CHẾ ĐỊNHH ĐỊA CHỈ DỮ LIỆU Trong nhớ chương trình định địa theo cách thơng qua đếm chương trình, thông tin nhớ liệu lại định địa theo nhiều cách Đối với hầu hết lệnh cách định địa cố định loại, số lệnh dùng đến loại phụ thuộc vào toán hạng sử dụng cấu trúc lệnh mở rộng có cho phép hay khơng Các chế độ định địa là:  Kiểu riêng sẵn có  Theo ký tự  Trực tiếp  Gián tiếp 2.7.1 Cách định địa sẵn có theo ký tự Nhiều lệnh điều khiển PIC18 không cần đối số nào, chúng thực phép tốn mà tác động đến tồn VĐK chúng thực hồn tồn ghi, cách đánh địa gọi kiểu sẵn có Ví dụ lệnh SLEEP, RESET, DAW… Một số cấu trúc lệnh khác làm việc theo cách tương tự cần phải thêm vào đối số rõ ràng mã lệnh Kiểu đánh địa gọi đánh theo ký chúng 84 Chương 2: cấu trúc vi điều khiển PIC 18F4550 cần đối số có giá trị ký tự Ví dụ lệnh ADDLW, MOVLW dùng để cộng di chuyển giá trị ký tự đến ghi W Cách định địa trực tiếp 2.7.2 Cách định địa trực tiếp cần tất hai thông số địa nguồn địa đích tốn hạng mã lệnh Cách đánh địa thể thông qua đối số với lệnh, xác định địa ghi bank nhớ RAM liệu vị trí access bank nguồn liệu lệnh Trong cấu trúc lệnh PIC18F, lệnh định hướng theo bit theo byte sử dụng mặc định cách đánh địa trực tiếp Bit access RAM ‘a’ xác định địa biên dịch Khi ‘a’ = nội dung BSR sử dụng có địa xác định địa 12 bit ghi Khi ‘a’ = địa hiểu ghi access bank Một số lệnh MOVFF chứa hẳn địa 12 bit (của nguồn đích) mã lệnh nó, trường hợp giá trị BSR bỏ qua Đích đến kết phép tốn xác định bit đích ‘d’ Khi ‘d’ = 1, kết ghi đè ngược trở lại ghi nguồn Khi ‘d’ = 0, kết lưu ghi W Lệnh khơng có đối số’d’ đích đến hiểu ngầm ghi đích hoạt động ghi W 2.7.3 Định địa gián tiếp Cách định địa gián tiếp cho phép truy cập đến nhớ liệu mà khơng cần phải có địa cố định cấu trúc lệnh Điều thực cách dùng ghi FSR (File Select Registers) trỏ đến vị trí nhớ cần ghi hay đọc Bởi FSR nằm RAM nên thao tác trực tiếp điều khiển chương trình, hữu ích việc thiết lập cấu trúc liệu kiểu bảng hay mảng liệu Các ghi sử dụng cách đánh địa gián tiếp hoạt động với toán hạng INDF (Indirect File Operands), INDF toán hạng cho phép tự động tăng, giảm, điều chỉnh giá trị khác trị số trỏ Điều giúp thực thi chương trình hiệu đặc biệt sử dụng vòng lặp Ví dụ 3: NEXT LFSR FSR0, 100h ; CLRF POSTINC0 ; Xoá INDF 85 Chương 2: cấu trúc vi điều khiển PIC 18F4550 ; xóa ghi ; tăng trỏ BTFSS FSR0H, ; tất thực bank BRA NEXT ; NO, quay NEXT CONTINUE 2.8 ; YES, tiếp tục thực CÂU HỎI VÀ BÀI TẬP 1) PIC 18F4550 có giao tiếp USB tương thích với phiên nào? 2) Bên VĐK 18F4550 có chia tần số nào? 3) Họ VĐK PIC18F có cấu hình dao động? 4) Khối dao động nội có tần số lớn bao nhiêu? 5) XTAL gắn vào hai chân OSC1 OSC2 18F4550 có tần số lớn bao nhiêu? 6) Họ VĐK PIC18F có chế độ hoạt động nào? 7) Cho biết dung lượng nhớ chương trình VĐK 18F4550? 8) Cho biết dung lượng nhớ liệu SRAM VĐK 18F4550? 9) VĐK 18F4550 có kiểu reset nào? 10) Điều khiển dao động cho PIC18F sử dụng ghi cấu hình nào? 11) Điều khiển dao động cho PIC18F sử dụng ghi điều khiển gì? 12) Cho biết ý nghĩa sử dụng điện trở Rs hình 2.4? 13) Tín hiệu đưa vào khối PLL để tạo tín hiệu 96 MHz, có tần số bắt buột bao nhiêu? 14) Cho biết khác chế độ hoạt động Sleep Idle? 15) Nếu tần số XTAL = 20 MHz bit ̅̅̅̅̅̅̅̅̅̅̅̅ PWRTEN = hệ thống thời gian ổn định nguồn điện bao lâu? 16) Nếu tần số XTAL = 20 MHz bit ̅̅̅̅̅̅̅̅̅̅̅̅ PWRTEN = 1, VĐK hoạt động HS hệ thống thời gian ổn định nguồn điện bao lâu? 17) Nếu tần số XTAL = 20 MHz bit ̅̅̅̅̅̅̅̅̅̅̅̅ PWRTEN = 0, VĐK hoạt động HS hệ thống thời gian ổn định nguồn điện bao lâu? 18) Nếu tần số XTAL = 16 MHz bit ̅̅̅̅̅̅̅̅̅̅̅̅ PWRTEN = 1, VĐK hoạt động HSPLL hệ thống thời gian ổn định nguồn điện bao lâu? 19) Nếu tần số XTAL = 16 MHz hệ thống cần thời gian để ổn định dao động? 86

Ngày đăng: 21/12/2017, 12:18

Tài liệu cùng người dùng

Tài liệu liên quan