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...
Trang 1CHƯƠNG 2: CẤU TRÚC VI ĐIỀU KHIỂN PIC 18F4550
Sau khi đọc chương này, người tham khảo có khả năng:
Biết được các đặc trưng của PIC 18F4550
Nắm vững các cấu hình dao động
Có khả năng thiết kế xung clock theo ứng dụng yêu cầu
Hiểu rõ về cơ chế tổ chức các bộ nhớ trong vi điều khiển
Phân biệt được các chế độ hoạt động của vi điều khiển
Nắm vững đặc điểm các loại reset và trạng thái ảnh hưởng của các thanh ghi sau tác động của reset
Nắm vững ý nghĩa hoạt động các thanh ghi: OSCTUNE, OSCCON, RCON, STKPTR, STATUS
− Là bộ vi xử lý được trang bị tính năng giao tiếp USB 2.0
− Có khả năng truyền nhận dữ liệu tốc độ thấp (1.5 Mb/s) và tốc độ cao (12 Mb/s)
− Hỗ trợ việc điều khiển, ngắt, truyền dữ liệu kích thước lớn và truyền dữ liệu đồng thời
Trang 2− Hỗ trợ lên đến 32 điểm đầu cuối (16 đường truyền song hướng)
− 1 kb bộ nhớ RAM truy cập kép cho USB
− Bộ thu phát USB cùng với bộ điều chỉnh điện áp 3.3 V trên chip
− Giao tiếp bộ thu phát USB riêng bên ngoài
− Có port truyền dữ liệu song song (SPP) cho việc truyền dòng dữ 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, các khối ngoại vi hoạt động
− Idle: CPU không hoạt động, các khối ngoại vi hoạt động Dòng điện ở chế độ idle giảm xuống chỉ còn 5.8 μA
− Sleep: CPU không hoạt động, các khối ngoại vi không hoạt động Dòng điện ở chế độ sleep giảm xuống chỉ còn 0.1 μA
− Bộ dao động Timer1 với các thông số: 1.1 μA, 32 kHz, 2 V
− Bộ định thời watchdog hoạt động với dòng chỉ bằng 2.1 μA
− Có chế độ khởi động bộ dao động hai tốc độ
2.1.3 Công nghệ nanowatt
Tất cả các vi điều khiển trong họ PIC18F đều có tính năng giảm đáng kể lượng công suất tiêu thụ trong quá trình hoạt động
Chế độ chạy luân phiên
Hoạt động theo xung clock từ bộ điều khiển Timer1 hoặc bộ dao động nội, công suất tiêu thụ trong quá trình thực thi chương trình có thể giảm đến 90%
Chế độ tĩnh (idle) phức hợp
Vi điều khiển có thể chạy với CPU ngưng hoạt động, nhưng các khối ngoại vi vẫn hoạt động Ở trạng thái này, công suất tiêu thụ có thể giảm hơn nữa, ít hơn đế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 được gọi bởi chương trình của người dùng trong quá trình hoạt động, cho phép người lập trình kết hợp các ý tưởng tiết kiệm năng lượng thành thiết kế ứng dụng của họ
Trang 32.1.4 Tính năng bộ đa dao động
Dòng vi điều khiển PIC18F đều có tính năng lựa chọn 12 nguồn dao động khác nhau, cho phép người dùng nhiều sự lựa chọn hơn trong việc phát triển các ứng dụng Tính năng này bao gồm:
− 4 nguồn dao động thạch anh sử dụng thạch anh hoặc bộ cộng hưởng ceramic
− 4 nguồn dao động ngoại
− 1 khối tạo dao động nội cung cấp nguồn xung 8 MHz (độ chính xác ±2%), một nguồn dao động nội dùng RC INTRC (xấp xỉ 31 KHz không bị ảnh hưởng bởi nguồn cung cấp
và nhiệt độ), cũng như một dãi 6/8 tần số mà người dùng có thể lựa chọn có dãi tần từ
125 kHz đến 4 MHz Lựa chọn này giúp ta có thêm hai chân dao động trống để sử dụng cho các giao tiếp I/O
− Một bộ nhân tần số vòng lặp khóa pha (PLL) sử dụng cả thạch anh tần số cao và bộ dao
động ngoại cho phép tần số từ 4 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 bộ dao động tần số cao, trong khi phần còn lại của vi điều khiển được cấp xung clock từ bộ dao động công suất thấp bên trong
Bộ dao động nội bên cạnh vai trò nguồn xung, còn cung cấp nguồn tham chiếu ổn định cho một số tính năng bổ sung như:
− Giám sát lỗi xung clock (Fail-Safe Clock Monitor): chế độ này 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 ra lỗi xung clock, vi điều khiển sẽ chuyển sang sử dụng bộ dao động nội cho phép tiệp tục hoạt động tốc độ thấp hoặc shutdown các ứng dụng một cách an toàn
− Chế độ khởi động hai tốc độ: lựa chọn này cho phép bộ dao động nội phục vụ như một
nguồn xung, cấp cho chế độ reset khi đang mở nguồn (Power-on Reset), hoặc đánh thức
đưa hệ thống thoát khỏi chế độ sleep cho đến khi nguồn xung clock chính hoạt động trở lại
2.1.5 Tính năng đặc biệt khác
Độ bền của bộ nhớ
Bộ nhớ flash tăng cường dùng cho cả chương trình và dữ liệu EEPROM có thể ghi xóa với chu kỳ đến hàng ngàn lần, có thể lên đến 100.000 lần đối với bộ nhớ chương trình, và 1000.000 lần cho EEPROM Khả năng duy trì dữ liệu mà không cần làm tươi bộ nhớ có thể trên 40 năm
Trang 4Tính tự lập trình
Linh kiện này có thể ghi vào các chỗ trống trong bộ nhớ chương trình của nó dưới sự điều khiển của phần mềm nội Bằng cách sử dụng thủ tục khởi động trong khối boot nằm trên cùng của bộ nhớ chương trình, có thể tạo lập một ứng dụng có khả năng tự cập nhật
Khối CCP tăng cường
Trong chế độ PWM, khối này cung cấp các ngõ ra điều chế 1, 2, 4 để điều khiển các driver cầu và bán cầu Các tính năng khác bao gồm chế độ auto shutdown để vô hiệu ngõ ra PWM theo ngắt hay theo các điều kiện khác Ngoài ra còn có chế độ auto-restart để kích hoạt lại ngõ ra PWM một khi điều kiện kể trên bị xóa
Khối USART tăng cường có khả năng lập địa chỉ
Khối truyền thông nối tiếp này có khả năng hoạt động theo chuẩn RS-232 và cung cấp
sự hỗ trợ cho giao thức bus LIN Tính năng tăng cường bao gồm nhận dạng tốc độ baud tự động, và một bộ tạo tốc độ baud 16-bit nhằm cải thiện độ phân giải khi truyền dữ liệu Khi vi điều khiển sử dụng bộ dao động nội thì EUSART sẽ vẫn hoạt động ổn định trên các ứng dụng
mà không cần phải dùng đến dao động thạch anh bên ngoài
ADC 10-bit
Khối này 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 và khởi xướng quá trình chuyển đổi mà không cần đợi chu kỳ lấy mẫu
Do đó, tính năng này làm giảm bớt các mã có thể vượt quá giới hạn chuyển đổi
Port ICD/ICSP dành riêng
Port dành riêng này cung cấp việc sử dụng các chân sửa lỗi và chân lập trình không tích hợp các chức năng khác của vi điều khiển Tính năng này cho phép người dùng phát triển các ứng dụng chuyên về I/O trong khi vẫn duy trì khả năng lập trình và sửa lỗi trên chip
Bảng 2.1: tính năng của họ vi điều khiển PIC18F
Trang 5Nguồn ngắt 19 19 20 20
Port I/O Ports A, B, C,
(E)
Ports A, B, C, (E)
MSSP, USART tăng cường
MSSP, USART tăng cường
Port dữ liệu song song
(Streaming Parallel Port -
POR, BOR, lệnh RESET, Stack Full, Stack Underflow (PWRT, OST), MCLR (tùy chọn), WDT
POR, BOR, lệnh RESET, Stack Full, Stack Underflow (PWRT, OST), MCLR (tùy chọn), WDT
POR, BOR, lệnh RESET, Stack Full, Stack Underflow (PWRT, OST), MCLR (tùy chọn), WDT Phát hiện điện áp thấp khả
75 cấu trúc, cho phép thiết lập đến 83 cấu trúc với các lệnh mở rộng
75 cấu trúc, cho phép thiết lập đến 83 cấu trúc với các lệnh mở rộng
75 cấu trúc, cho phép thiết lập đến 83 cấu trúc với các lệnh mở rộng
28-pin SOIC
28-pin PDIP 28-pin SOIC
40-pin PDIP 44-pin QFN 44-pin TQFP
40-pin PDIP 44-pin QFN 44-pin TQFP
Trang 6Hình 2.2: sơ đồ khốiPIC18F4455/4550 (40/44 chân)
Chú ý:
− RE3 tích hợp chung với MCLR̅̅̅̅̅̅̅̅ và chỉ sử dụng được khi chân reset MCLR̅̅̅̅̅̅̅̅ bị vô hiệu
− OSC1/CLKI và OSC2/CLKO dùng trong chế độ lựa chọn bộ dao động và chỉ khi nó không được sử dụng như là các ngõ I/O số
Bảng 2.2 bên dưới mô tả chức năng các chân PIC18F4455/4550
Ghi chú:
Trang 7TTL = ngõ vào tương thích TTL
CMOS = ngõ vào hoặc ngõ ra tương thích CMOS
ST = ngõ vào Schmitt Trigger với các mức CMOS
I = Input
O = Output
P = Power
Bảng 2.2: chức năng các chân PIC18F4455/4550
chân
Kiểu
PDIP QFN TQFP MCLR
- Ngõ vào nguồn xung clock bên ngoài, luôn kết hợp với chân OSC1
- Ở chế độ RC, OSC2 kết nối ngõ
ra với CLKO có tần số ¼ tần số của OSC1 và biểu thị cho tốc độ của chu kỳ lệnh
- Chân I/O dùng chung
TTL Analog
TTL Analog Analog
PORTA là port I/O song hướng
Trang 8ST
ST
− TTL
TTL Analog TTL Analog
−
−
- Ngõ ra tham chiếu bộ so sánh analog
- Ngõ vào chọn slave SPI
- Ngõ vào phát hiện điện áp cao/thấp
I/O
I
I I/O I/O
ST
ST
ST
TTL Analog
ST
−
PORTB là port I/O song hướng, PORTB có thể được lập trình bằng phần mềm để pull-up tất cả ngõ vào
- Dữ liệu vào SPI
- Ngõ vào/ra dữ liệu của I2C
Trang 9I/O
I I/O
I/O
I I/O
TTL Analog
ST
−
TTL Analog TTL
−
TTL TTL
ST
TTL TTL
ST
TTL TTL
ST
- I/O số
- Ngõ vào analog 9
- Ngõ vào Capture 2/ngõ ra Compare 2/ngõ ra PWM 2
- Ngõ ra VPO bộ thu phát USB ngoại
O
I/O I/O
ST
−
ST
ST TTL
- Ngõ ra OE ̅̅̅̅ bộ thu phát USB ngoại
- I/O số
- Ngõ vào Capture 1/ngõ ra Compare 1/ngõ ra PWM 1
- Ngõ ra CCP1 PWM tăng cường kênh A
- I/O số
Trang 10I
I/O
O I/O
I/O
I I/O
O
− TTL
TTL
− TTL
I/O I/O
I/O I/O
I/O I/O
I/O I/O
I/O I/O
O
I/O I/O
O
ST TTL
ST TTL
ST TTL
ST TTL
ST TTL
ST TTL
−
ST TTL
−
PORTD là port I/O song hướng hoặc là Port dòng dữ liệu song song (Streaming Parallel Port - SPP) Các pin này có bộ đệm TTL ngõ vào khi khối SPP được cho phép
- I/O số
- Dữ liệu SPP
- Ngõ ra PWM CCP1 tăng cường kênh C
Trang 11RD7
SPP7
P1D
I/O I/O
O
ST TTL
−
- I/O số
- Dữ liệu SPP
- Ngõ ra PWM CCP1 tăng cường kênh D
−
ST Analog
−
ST Analog
RE3 − − − − − Xem chân MCLR̅̅̅̅̅̅̅̅/VPP/RE3
Họ PIC 18F2455/2550/4455/4550 phối hợp với bộ tạo dao động và hệ thống xung clock cho VĐK theo cách khác hơn so với họ PIC18F đã có trước đó Đồng thời, khối USB được thêm vào nên đòi hỏi phải có một nguồn xung ổn định, do đó cần phải cung cấp cho
Trang 12khối này một nguồn xung độc lập phù hợp với các thông số USB khi giao tiếp ở tốc độ thấp
và tốc độ cao Vì vậy, PIC 18F2455/2550/4455/4550 luôn có một nguồn xung clock cung cấp xung tần số 48 MHz cho hoạt động tốc độ cao của USB, và bởi vì xung clock này được lấy
từ nguồn xung sơ cấp nên cần phải thêm vào một hệ thống bộ chia trước tần số (prescaler) và
bộ chia sau tần số (postscaler) để có thể thích ứng với dải tần rộng của bộ tạo dao động
Cấu trúc của bộ dao động được miêu tả trong hình 2.3
2.2.1 Điều khiển bộ dao động
Cơ chế hoạt động của họ PIC này được điều khiển thông qua 2 thanh ghi thiết lập cấu hình CONFIG1L, CONFIG1H và 2 thanh ghi điều khiển OSCCON, OSCTUNE Hai thanh ghi cấu hình sẽ lựa chọn chế độ của bộ dao động và thiết lập thông số cho prescaler/postscaler của USB Các bit cấu hình này được set khi VĐK được lập trình, và chúng tiếp tục duy trì cấu hình này cho đến khi được lập trình lại
Thanh ghi điều khiển OSCCON sẽ chọn chế độ xung clock hoạt động, nó được dùng chủ yếu để điều khiển chuyển nguồn xung trong chế độ quản lý công suất Thanh ghi OSCTUNE được dùng để vi chỉnh tần số INTRC nội, cũng như chọn nguồn xung có tần số thấp để điều khiển các tính năng đặc biệt khác
2.2.2 Các loại dao động
Họ PIC này có thể hoạt động theo 12 cấu hình dao động khác nhau của bộ tạo dao động, người lập trình có thể lập trình các bit cấu hình FOSC3:FOSC0 để lựa chọn giữa các chế độ này:
(1) XT: thạch anh (Crystal)/Bộ cộng hưởng (Resonator)
(2) XTPLL: Crystal/Resonator với PLL được kích hoạt
(3) HS: Crystal/Resonator tốc độ cao
(4) HSPLL: Crystal/Resonator tốc độ cao với PLL được kích hoạt
(5) EC: xung Clock ngoại với ngõ ra được chia tần FOSC/4
(6) ECIO: xung Clock ngoại với RA6 đóng vai trò là I/O
(7) ECPLL: xung Clock ngoại với PLL được kích hoạt và ngõ ra FOSC/4 trên chân RA6 (8) ECPIO: xung Clock ngoại với PLL được kích hoạt, và RA6 đóng vai trò là I/O (9) INTHS: xung Clock nội được sử dụng như nguồn xung của VĐK, còn bộ dao động
HS được sử dụng như nguồn xung USB
(10) INTXT: xung Clock nội được sử dụng như nguồn xung của VĐK, còn bộ dao động
XT được sử dụng như nguồn xung USB
Trang 13(11) INTIO: xung Clock nội được sử dụng như nguồn xung của VĐK, còn bộ dao động
EC được sử dụng như nguồn xung USB, và RA6 đóng vai trò là I/O
(12) INTCKO: xung Clock nội được sử dụng như nguồn xung của VĐK, còn bộ dao động
EC được sử dụng như nguồn xung USB, và ngõ ra FOSC/4 trên chân RA6
Hình 2.3: sơ đồ bộ tạo xung clock PIC 18F2455/2550/4455/4550 2.2.2.1 Các chế độ bộ dao động và hoạt động của USB
Đối với dòng PIC trước thì xung điều khiển hoạt động của CPU và các ngoại vi đều lấy từ cùng một nguồn xung đơn Với họ PIC 18F2455/2550/4455/4550, nguồn xung sơ cấp lại trở thành một phần của khối USB và không thể phối hợp với bất kỳ nguồn xung nào khác Còn CPU và các thành phần ngoại vi sẽ được cấp xung độc lập từ nguồn xung thứ cấp hoặc nguồn xung nội
Trang 14Bởi vì khối USB có liên quan đến vấn đề định thời, nên khi khối USB được kích hoạt thường đòi hỏi có nguồn xung nội 6 MHz hoặc 48 MHz May mắn là VĐK và thành phần ngoại vi thường không hoạt động với tốc độ xung clock này Có rất nhiều cách khác nhau để đạt được tốc độ xung khối USB yêu cầu bằng nguồn xung sơ cấp, mà vẫn cấp xung một cách linh hoạt cho những thành phần khác trong VĐK
2.2.2.2 Dao động thạch anh, bộ cộng hưởng RC
Trong chế độ HS, HSPLL, XT và XTPLL, thì thạch anh tạo dao động hoặc mạch cộng hưởng RC được nối đến hai chân OSC1 và OSC2 để tạo dao động
Hình 2.4: cấu hình thạch anh/mạch cộng hưởng RC
Hình 2.4 chỉ dẫn cách kết nối các linh kiện tạo dao động này vào VĐK, trong đó giá trị điện trở RF thay đổi theo chế độ dao động được chọn
Kiểu dao động Tần số XTAL Các giá trị tụ điển hình đã kiểm thử
− Đây là các giá trị tần số thường dùng trong thực tế
− Sử dụng tụ có điện dung cao sẽ làm tăng tính ổn định của mạch, nhưng lại làm tăng thời gian khởi động mạch
− Khi hoạt động với điện áp VDD dưới 3 V hoặc khi dùng mạch RC với bất kỳ điện áp VDD nào thì nên chọn chế độ HS hoặc sử dụng dao động thạch anh
Trang 15− Mỗi loại thạch anh hoặc bộ cộng hưởng RC đề có các đặc tính riêng, do đó khi sử dụng cấn tham khảo nhà sản xuất để chọn giá trị phù hợp
− Phải luôn kiểm tra hoạt động của bộ tạo dao động theo VDD và nhiệt độ
− Rs đôi khi được dùng để tránh tình trạng thạch anh vượt ngưỡng khả năng tạo dao động của hệ thống
Để tạo ra các giá trị tần số khác với tần số trên, bộ chia tần số postscaler thường được
sử dụng Tỷ lệ chia tần số được xác định bởi bit cấu hình CPUDIV, các mức chia thường áp dụng là 1/2, 1/3 hoặc 1/4 của giá trị tần số đang sử dụng
Hình 2.5 mô tả cấu hình dao động ở chế độ HS sử dụng bộ dao động ngoại, trong trường hợp này chân OSC2/CLKO sẽ được bỏ trống
Hình 2.5: cấu hình HS sử dụng mạch dao động ngoại 2.2.2.3 Tạo xung clock sử dụng bên ngoài
Chế độ tạo dao động EC, ECIO, ECPLL và ECPIO sử dụng nguồn clock bên ngoài nối
đến chân OSC1 Đối với EC và ECPLL thì tần số được chia 4 tại ngõ ra OSC2 (xem hình 2.6)
có thể được dùng để test hoặc đồng bộ các mạch logic khác Đối với ECIO và ECPIO cũng tương tự như trên, tuy nhiên lúc này OSC2 sẽ đóng vai trò như I/O dùng chung RA6
Hình 2.6: cấu hình dao động EC và ECPLL
Hình 2.7: cấu hình dao động ECIO và ECPIO
Trang 162.2.2.4 Bộ nhân tần số PLL
Dòng PIC 18F này có chứa một mạch lặp khóa pha, mạch này cung cấp đặc biệt cho ứng dụng dùng USB với bộ tạo dao động có tốc độ thấp hơn, nó cũng có thể được dùng như nguồn xung clock cho VĐK
PLL có thể dùng trong các chế độ như HSPLL, XTPLL, ECPLL và ECPIO PLL có thể tạo ra nguồn xung tham chiều cố định 96 MHz từ xung ngõ vào 4 MHz Lúc này, xung ngõ
ra có thể được chia để cấp cho USB và CPU VĐK Có 8 mức chia trước để đưa xung ngõ vào đến PLL, đồng thời cũng có một bộ chia sau độc lập để đưa xung từ PLL đến VĐK Điều này cho phép VĐK và USB dùng cùng một nguồn dao động ngõ vào nhưng hoạt động với các tốc
độ clock khác nhau Bộ chia sau cho các chế độ XT, HS và EC có các mức 1/2, 1/3, 1/4 và 1/6 tại ngõ ra PLL
Chế độ HSPLL, ECPLL và ECPIO làm cho tần số sử dụng trong chế độ dao động HS tăng lên đến 48 MHz, khi đó bộ chia trước prescaler sẽ chia ngõ vào xung đi 12 lần tạo tần số
4 MHZ cấp cho ngõ vào PLL Ở chế độ XTPLL có thể dùng trực tiếp tần số ngõ vào 4 MHz cấp cho PLL
Hình 2.8: sơ đồ khối PLL chế độ HS 2.2.2.5 Khối dao động nội
Khối dao động nội tạo ra hai tín hiệu clock khác nhau có thể được dùng cấp xung cho VĐK Nếu không sử dụng khối USB, thì khi đó VĐK có thể dùng khối tạo dao động nội này
mà không cần đến mạch tạo dao động bên ngoài
Ngõ ra chính (INTOSC) là nguồn xung 8 MHz có thể dùng cấp trực tiếp cho VĐK, ngoài
ra cũng có thể dùng postscaler INTOSC để chia tần số này tạo ra dải tần từ 31 kHz đến 4 MHz
Trang 17Nguồn xung nội khác là mạch dao động RC (INTRC) tạo nguồn xung nhỏ 31 kHz,
INTRC được kích hoạt khi chọn nó như là nguồn xung clock cho VĐK, ngoài ra nó được tự
động kích hoạt khi các hoạt động sau đây thực thi: định thời khởi nguồn (power-up timer), định thời canh gác (watchdog timer), khởi động hai tốc độ (two-speed start-up)
Các chế độ tạo dao động nội
Khi VĐK sử dụng bộ dao động nội, thì các nguồn xung khác sẽ được dùng làm nguồn xung cho USB Việc chọn nguồn xung cho USB phụ thuộc vào 4 chế độ xung nội riêng biệt sau:
− Chế độ INTHS: xung clock USB được cấp bởi bộ dao động chế độ HS
− Chế độ INTXT: xung clock USB được cấp bởi bộ dao động chế độ XT
− Chế độ INTCKO: xung clock USB được cấp bởi ngõ vào xung ngoại ở chân
OSC1/CLKI; ngõ ra xung ở chân OSC2/CLKO với FOSC/4
− Chế độ INTIO: xung clock USB được cấp bởi ngõ vào xung ngoại ở chân
OSC1/CLKI; chân OSC2/CLKO sử dụng như I/O số (RA6)
Thanh ghi OSCTUNE
Tần số ngõ ra của bộ dao động nội thường được định sẵn bởi nhà sản xuất, tuy nhiên chúng vẫn có thể được điều chỉnh trong các ứng dụng của người dùng thông qua thanh ghi OSCTUNE Khi thanh ghi này được thiết lập giá trị thì tần số tại các chân INTOSC và INTRC
sẽ xác định giá trị mới Xung INTRC sẽ tiến đến giá trị mới trong 8 chu kỳ xung nhịp (xấp xỉ 8*32μs = 256 μs), còn xung INTOSC sẽ ổn định tại giá trị mới trong vòng 1 ms
Thanh ghi OSCTUNE còn chứa bit INTSCR cho phép người dùng chọn bộ dao động nội nào cung cấp xung khi tần số 31 kHz được chọn
Hình 2.9: thanh ghi OSCTUNE Ghi chú:
R = bit có thể đọc
W = bit có thể ghi
U = bit chưa sử dụng, được xem như bit ‘0’
‘1’ = Bit được set
‘0’ = Bit được xoá
x = Bit chưa xác định
Trang 18Bit 7 – INTSCR: bit lựa chọn nguồn tần số thấp của bộ dao động nội
1 = Xung 31.25 kHz lấy từ nguồn xung 8 MHz ở chân INTOSC (đã chia 256)
0 = Xung 31 kHz lấy trực tiếp từ dao động nội INTRC
Bit 6, 5 – không sử dụng, được đọc bằng 0
Bit 4-0 – TUN4:TUN0: bit điều chỉnh tần số
2.2.3 Tạo dao động cho giao tiếp USB
PIC 18F4550 khi dùng kết nối USB, nó cần phải có xung clock 6 MHz hoặc 48 MHz cho việc giao tiếp USB tùy thuộc vào cấu hình tốc độ cao hay thấp Điều này cần được tính toán cẩn thận trong việc lựa chọn tần số dao động và khi lập trình cho VĐK
Bảng 2.5: các cấu hình bộ tạo dao động được lựa chọn cho hoạt động USB
Tần số dao động
đưa vào (PLLDIV<2:0>) Hệ số chia PLL
Kiểu xung clock (FOSC<3:0>)
Hệ số chia clock MCU (CPUDIV<1:0>)
Tần số xung clock VĐK
48 MHz Không có (1) EC, ECIO Không có (00) 48 MHz
Trang 20là một trong các chế độ tạo dao động chính(XT, HS hoặc EC, có hoặc không có PLL)
2.2.3.2 Hoạt động với các xung clock khác nhau đối với USB và VĐK
Khối USB khi hoạt động ở cả tốc độ thấp và tốc độ cao có thể chạy không cần đồng bộ với CPU và các thành phần ngoại vi khác Điều này có nghĩa khối USB có thể dùng nguồn xung sơ cấp trong khi các thành phần khác hoạt động với nguồn xung độc lập với USB nhưng
có tốc độ thấp hơn Điều này là cần thiết vì chế độ giao tiếp USB tốc độ cao đòi hỏi phải cung cấp tần số lớn hơn so với xung clock của VĐK
2.2.4 Chuyển đổi giữa bộ dao động và nguồn xung
Cũng giống như các dòng PIC18 khác, họ PIC18F2455/2550/4455/4550 cũng có tính năng cho phép nguồn xung hoạt động chuyển từ bộ tạo dao động chính sang nguồn xung clock
có tần số thấp khác Có hai nguồn xung clock luân phiên được họ PIC này sử dụng, khi một nguồn xung loại này được cho phép thì sẽ có các chế độ hoạt động quản lý công suất khác nhau có thể được kích hoạt
Về cơ bản có 3 nguồn xung clock được họ PIC này sử dụng: bộ tạo dao động sơ cấp, bộ tạo dao động thứ cấp, khối tạo dao động nội
Bộ tạo dao động sơ cấp: bao gồm thạch anh và bộ cộng hưởng RC ngoại, xung ngoại và khối
dao động nội Mỗi chế độ được khai báo bằng các bit cấu hình FOSC3:FOSC0
Bộ tạo dao động thứ cấp: là các nguồn dao động ngoại không được kết nối đến chân OSC1
hoặc OSC2, các nguồn dao động này có thể vẫn hoạt động cho dù VĐK đang ở chế độ quản
lý công suất
PIC 18F2455/2550/4455/4550 sử dụng Timer1 như bộ tạo dao động thứ cấp, bộ dao động này khi hoạt động trong chế độ quản lý công suất là một hàm dựa trên thời gian, nó là một bộ xung clock thời gian thực Bộ dao động này thường là một thạch anh đồng hồ 32.768 kHz được nối giữa chân RC0/T1OSO/T13CKI và RC1/T1OSI/UOE̅̅̅̅̅̅ Cũng giống như chế độ dao động XT và HS, khi kết nối phải có tụ nối từ mỗi chân xuống mass
Khối tạo dao động nội: thường dùng làm nguồn xung trong chế độ quản lý nguồn Nguồn
xung từ INTRC cũng được dùng làm clock cho một số tính năng khác như WDT hay giám sát lỗi xung
Trang 21Thanh ghi điều khiển bộ dao động
Thanh ghi OSCCON điều khiển nhiều yếu tố trong hoạt động tạo xung clock của VĐK trong chế độ hoạt động bình thường và cả chế độ quản lý công suất
Hình 2.10: thanh ghi OSCON Bit 7 – IDLEN: bit cho phép chế độ idle
1 = VĐK vào trạng thái idle bằng cấu trúc lệnh SLEEP
0 = VĐK vào trạng thái sleep bằng cấu trúc lệnh SLEEP
Bit 6-4 – IRCF2:IRCF0: bit chọn tần số dao động nội Các bit này sẽ chọn ngõ ra tần số
của khối tạo dao động nội để điều khiển clock VĐK
111 = 8 MHz (lấy xung clock trực tiếp từ INTOSC)
000 = 31 kHz (lấy trực tiếp từ INTOSC/256 hoặc INTRC)
Nếu bộ dao động nội này cấp xung cho VĐK thì ngay khi các bit này thay đổi trạng thái thì lập tức làm thay đổi ngõ ra của bộ tạo dao động Nếu có reset xảy ra thì tần
số ngõ ra của bộ tạo dao động nội sẽ đưa về giá trị mặc định 1 MHz
Khi tần số 31 kHz được chọn, người dùng có thể quyết định dao động nội nào đóng vai trò là nguồn xung, điều nay được thực hiện thông qua bit INTSRC trong thanh ghi OSCTUNE Khi bit này được set sẽ chọn nguồn xung 31.25 kHz từ INTOSC
được chia cho 256 (sử dụng postscaler) Bit này được xóa sẽ chọn nguồn xung 31
kHz từ INTRC
Bit 3 – OSTS: bit trạng thái báo hết thời gian chờ để khởi động bộ dao động
1 = Đã hết thời gian chờ để khởi động bộ tạo dao động, bộ tạo dao động chính đang hoạt động
0 = Vẫn đang chờ để khởi động bộ tạo dao động, bộ tạo dao động chính chưa sẵn sàng
Trang 22Bit 2 – IOFS: bit báo ổn định tần số INTOSC
2.2.5 Tác động của chế độ quản lý công suất đối với các nguồn xung
Đối với tất cả các chế độ quản lý công suất, các bộ dao động đang sử dụng chân OSC1
sẽ bị vô hiệu Và nếu khối USB chưa được kích hoạt, thì các chân OSC1 và OSC2 sẽ ngừng cấp dao động
Khi sử dụng nguồn xung thứ cấp, bộ dao động Timer1 vẫn chạy nếu được yêu cầu cấp xung cho Timer1 hoặc Timer3
Trong chế độ tạo dao động nội, ngõ ra xung 31 kHz từ chân INTRC sẽ cấp xung trực tiếp và cho phép hỗ trợ một số tính năng đặc biệt khác bất chấp có chế độ quản lý công suất đang thực thi Còn ngõ ra xung INTOSC sẽ bị vô hiệu nếu xung clock INTRC đang được sử dụng
Nguồn xung cấp cho USB vẫn tiếp tục hoạt động bất chấp chế độ quản lý đang chạy là run hay idle Nếu VĐK đang hoạt động với dao động từ thạch anh hoặc bộ cộng hưởng, thì các bộ dao động dó sẽ tiếp tục cấp xung cho khối USB, còn CPU và các khối khác sẽ chuyển sang dùng nguồn xung mới
Nếu chế độ sleep được chọn thì tất cả nguồn xung sẽ ngừng hoạt động, do đó chế độ sleep sẽ đạt được mức tiêu thụ công suất thấp nhất Chế độ này không nên kích hoạt nếu khối USB đang hoạt động hay đang kết nối, chỉ ngoại lệ khi VĐK phát hiện trạng thái hoạt động của USB đang bị treo, khi đó VĐK sẽ được chuyển sang trạng thái sleep một cách an toàn
2.2.6 Độ trễ do khởi động nguồn
Delay khởi động nguồn được điều khiển bởi 2 bộ định thời để không phải sử dụng thêm mạch reset bên ngoài trong các ứng dụng Delay sẽ đảm bảo VĐK được giữ ở trạng thái reset cho đến khi nguồn cung cấp cho VĐK ổn định và đến khi nguồn xung sơ cấp hoạt động và đạt được sự ổn định
Bộ định thời đầu tiên là Power-up Timer (PWRT) cho biết giá trị delay cố định để khởi
Trang 23Bộ định thời thứ hai là bộ định thời khởi tạo dao động (OST) dùng để giữ chip ở trạng
thái reset cho đến khi dao động thạch anh ổn định (chế độ XT và HS) OST thực hiện điều này
bằng cách đếm 1024 chu kỳ dao động trước khi cho phép bộ dao động cấp xung cho VĐK
Khi chế độ dao động HSPLL được chọn, VĐK sẽ duy trì trạng thái reset thêm 2 ms so với delay ở chế độ HS để bộ PLL có thể khóa tần số xung đang đến
Họ PIC18F2455/2550/4455/4550 đưa ra 7 chế độ hoạt động quản lý công suất hiệu quả hơn, các chế độ này cug cấp các lựa chọn đa dạng để bảo toàn công suất trong các ứng dụng
mà nguồn tài nguyên bị hạn chế (linh kiện dùng nguồn pin)
Các chế độ quản lý công suất được chia làm 3 chế độ chính: run, idle, sleep
Các chế độ này sẽ quyết định thành phần nào của VĐK được cấp xung và đôi khi nó quyết định cả tốc độ của nguồn xung Chế độ run và idle dùng cả 3 nguồn xung: chính, thứ cấp và xung nội Chỉ có chế độ sleep là không sử dụng nguồn xung
Chế độ quản lý công suất bao gồm nhiều tính năng giúp tiết kiệm công suất khác nhau, một trong các tính năng đó là chuyển nguồn xung, cho phép VĐK sử dụng bộ tạo dao động
từ Timer1 thay cho nguồn xung sơ cấp
2.3.1 Lựa chọn chế độ quản lý công suất
Việc lựa chọn chế độ quản lý công suất được tiến hành thông qua hai quyết định: một là CPU có được cấp xung hay không, và hai là lựa chọn nguồn xung cấp nào Như đã trình bày
ở phần trên, thanh ghi điều khiển OSCCON sẽ điều khiển quá trình lựa chọn này Các chế độ riêng biệt, các bit cài đặt, nguồn xung và các khối nào chịu tác động được tổng hợp trong bảng 2.6
Bảng 2.6: các chế độ quản lý công suất
Chế độ
nguồn xung có thể sử
dụng IDLEN SCS1:SCS0 CPU Ngoại vi
hiệu PRI_RUN N/A 00 Cấp xung Cấp xung Nguồn xung sơ cấp và
tất cả các chế độ tạo dao động
Đây là chế độ tiêu thụ công suất bình thường SEC_RUN N/A 01 Cấp xung Cấp xung Nguồn xung thứ cấp và
bộ tạo dao động từ Timer1
Trang 24PRI_IDLE 1 00 Ngắt Cấp xung Nguồn xung sơ cấp và
tất cả các chế độ tạo dao động
SEC_IDLE 1 01 Ngắt Cấp xung Nguồn xung thứ cấp và
bộ tạo dao động từ Timer1
RC_IDLE 1 1x Ngắt Cấp xung Khối tạo dao động nội Thời gian chuyển tiếp giữa các nguồn xung là tổng hai chu kỳ xung cũ cộng với ba hoặc bốn chu kỳ xung mới, và giả sử rằng nguồn xung mới là ổn định
2.3.2 Chế độ Run
Trong chế độ run thì xung được cấp cho cả CPU và các thành phần ngoại vi, sự khác
nhau giữa các chế độ này chỉ là nguồn xung mà thôi
2.3.2.1 Chế độ PRI_RUN
Chế độ PRI_RUN là chế độ tiêu thụ công suất bình thường của VĐK, đây cũng là chế
độ mặc định khi reset nếu quá trình start-up 2 tốc độ không được kích hoạt Trong chế độ này, bit OSTS được set, còn bit OSTF sẽ được set nếu khối dao động nội được chọn làm nguồn xung sơ cấp
2.3.2.2 Chế độ SEC_RUN
Chế độ SEC_RUN là chế độ tương thích với tính năng chuyển nguồn xung Trong chế
độ này CPU và các thành phần ngoại vi được cấp xung từ bộ tạo dao động Timer1, điều này cho phép người dùng điều khiển hoạt động với công suất tiêu thụ thấp trong khi vẫn sử dụng nguồn xung có độ chính xác cao
Chế độ SEC_RUN được chọn bằng cách set bit SCS1:SCS0 là ‘01’, xung clock của VĐK sẽ chuyển sang dùng bộ tạo dao động Timer1, bộ tạo xung chính tắt, bit T1RUN được set, bit OSTS được xoá
Chú ý là để kích hoạt chế độ này thì Timer1 phải đang chạy chứ không chỉ được cho phép thôi, đồng thời bit T1OSCEN phải được set khi bit SCS1:SCS0 là ‘01’
Trong quá trình chuyển tiếp chế độ từ SEC_RUN sang PRI_RUN thì CPU và các thành phần ngoại vi tiếp tục được cấp xung từ bộ tạo dao động Timer1, trong khi nguồn xung sơ cấp được khởi động Khi nguồn xung sơ cấp đã sẵn sàng, xung clock VĐK sẽ chuyển sang dùng nguồn xung sơ cấp này Lúc này, bit T1RUN được xoá, bit OSTS được set, bộ tạo dao động Timer1 vẫn tiếp tục chạy
Trang 25Hình 2.11: quá trình chuyển tiếp vào chế độ SEC_RUN
Hình 2.12: quá trình chuyển tiếp từ chế độ SEC_RUN sang PRI_RUN
2.3.2.3 Chế độ RC_RUN
Trong chế độ chế độ RC_RUN này, CPU và các thành phần ngoại vi được cấp xung từ
khối tạo dao động nội sử dụng chân chức năng INTOSC, bộ tạo xung chính tắt Khi sử dụng nguồn xung từ INTRC, thì chế độ này cung cấp tính đảm bảo công suất tốt nhất trong tất cả các chế độ chạy trong khi vẫn thực thi chương trình bình thường Nó làm việc rất hiệu quả đối với những ứng dụng không đòi hỏi cao về định thời hoặc yêu cầu xung clock tốc độ cao
Trang 26Trong quá trình chuyển tiếp từ RC_RUN sang PRI_RUN thì VĐK tiếp tục được cấp xung từ chân chức năng INTOSC, trong khi nguồn xung sơ cấp được khởi động Khi nguồn xung sơ cấp đã sẵn sàng, clock VĐK sẽ chuyển sang dùng nguồn xung sơ cấp này Lúc này, bit IOFS được xoá, bit OSTS được set Bit IDLEN và SCS không bị tác động bởi chuyển nguồn xung Nguồn xung INTRC vẫn tiếp tục chạy nếu WDT hoặc Fail-Safe Clock Monitor được kích hoạt
Hình 2.13: quá trình chuyển tiếp vào chế độ RC_RUN
Hình 2.14: quá trình chuyển tiếp từ RC_RUN sang PRI_RUN 2.3.3 Chế độ SLEEP
Chế độ này được thực thi bằng cách xoá bit IDLEN và thực thi cấu trúc lệnh SLEEP Chế độ này sẽ ngắt các bộ tạo dao động (xem hình 2.15), tất cả các bit trạng thái của nguồn
xung đều được xoá
Khi chuyển từ các chế độ hoạt động khác sang chế độ sleep sẽ không yêu cầu chuyển nguồn xung, bởi vì VĐK khi chuyển sang sleep không cần đến xung clock nữa Nếu WDT được kích hoạt thì nguồn xung INTRC vẫn sẽ tiếp tục hoạt động, nếu bộ tạo dao động Timer1 được kích hoạt, nó cũng sẽ tiếp tục chạy
Trang 27Khi có sự kiện đánh thức VĐK trong chế độ sleep (bằng ngắt, reset hoặc hết thời gian chờ WDT), VĐK sẽ không được cấp xung cho đến khi nguồn xung được chọn bởi các bit SCS1:SCS0 đã sẵn sàng (xem hình 2.16), hoặc nó sẽ được cấp xung từ khối tạo dao động nội
nếu chế độ khởi động hai tốc độ hoặc giám sát lỗi xung được kích hoạt Trong cả hai trường hợp, bit OSTS được set khi nguồn xung sơ cấp cấp xung cho VĐK, bit IDLEN và SCS không
bị ảnh hưởng bởi quá trình đánh thức VĐK khỏi chế độ sleep
Hình 2.15: quá trình chuyển tiếp vào chế độ sleep
Hình 2.16: quá trình đánh thức khỏi chế độ sleep 2.3.4 Chế độ IDLE
Chế độ idle cho phép CPU của VĐK tắt trong khi các thành phần ngoại vi khác vẫn hoạt
động bình thường Điều này cho phép người dùng đi sâu hơn vào chế độ quản lý công suất tiêu thụ
Khi bit IDLEN được set lên ‘1’ và lệnh SLEEP được thực thi, VĐK sẽ đươc chuyển nhanh từ chế độ run sang idle chế độ tương ứng của nó Khi đó, các thành phần ngoại vi sẽ được cấp xung từ nguồn xung được chọn bởi các bit SCS1:SCS0, tuy nhiên CPU sẽ không được cấp xung nữa Nếu WDT được chọn, thì nguồn xung INTRC sẽ tiếp tục hoạt động, nếu
bộ tạo dao động Timer1 được kích hoạt thì nó sẽ tiếp tục chạy
Khi ở trạng thái idle, CPU sẽ không hoạt động Do đó, muốn thoát khỏi chế độ idle, ta phải dùng ngắt, WDT timeout, hoặc reset Khi CPU được đánh thức, nó sẽ bị delay một thời khoảng TCSD cho đến khi nó sẵn sàng thực thi mã chương trình, lúc này nó sẽ sử dụng cùng một nguồn xung với trạng thái chế độ idle trước đó
Trang 282.3.4.1 Chế độ PRI_IDLE
Chế độ này khá đặc biệt trong số 3 chế độ idle công suất thấp, nó không vô hiệu nguồn xung sơ cấp của VĐK ở chế độ idle Đối với các ứng dụng đòi hỏi định thời, điều này cho phép khôi phục lại hoạt động hệ thống một cách nhanh nhất bởi nguồn xung sơ cấp là nguồn
có độ chính xác hơn cả
Quá trình chuyển tiếp từ PRI_RUN sang PRI_IDLE được thực hiện bằng cách set bit IDLEN và thực thi cấu trúc lệnh SLEEP Nếu VĐK đang ở trong các chế độ chạy khác thì đầu tiên set bit IDLEN trước, sau đó xoá các bit SCS rồi mới thực thi lệnh SLEEP Mặc dù CPU được ngắt, nhưng các thành phần ngoại vi khác vẫn được cấp xung bởi nguồn xung sơ cấp có giá trị được xác định qua các bit cấu hình FOSC3:FOSC0, và bit OSTS vẫn tiếp tục
được set (xem hình 2.17)
Khi có sự kiện đánh thức VĐK, CPU sẽ được cấp xung từ nguồn xung sơ cấp Lúc này
sẽ cần có một khoảng delay TCSD giữa sự kiện đánh thức và khi quá trình thực thi code bắt đầu Khoảng delay này sẽ cho phép CPU sẵn sàng để thực thi lệnh, bit OSTS vẫn được set,
bit IDLEN và SCS không bị ảnh hưởng khi VĐK hoạt động trở lại (xem hình 2.18)
Hình 2.17: quá trình chuyển tiếp vào chế độ idle
Hình 2.18: quá trình chuyển từ chế độ idle sang run 2.3.4.2 Chế độ SEC_IDLE
Trong chế độ SEC_IDLE, CPU tắt nhưng các thành phần ngoại vi khác vẫn được cấp xung từ bộ dao động Timer1 Quá trình chuyển tiếp từ SEC _RUN sang chế độ SEC _IDLE được thực hiện bằng cách set bit IDLEN và thực thi cấu trúc lệnh SLEEP Nếu VĐK đang ở