Cĩ nhiều chế độ Reset vi điều khiển bao gồm:
- Power-on Reset POR (Reset khi cấp nguồn hoạt động cho vi điều khiển) - /MCLR reset trong quá trình hoạt động
- /MCLR từ chế độ sleep
- WDT reset (reset do khối WDT tạo ra trong quá trình hoạt động) - WDT wake up từ chế độ sleep
- Brown-out reset (BOR).
Ngoại trừ reset POR trạng thái thanh ghi là khơng xác định và WDT wake up khơng ảnh hưởng đến trạng thái các thanh ghi, các chế độ reset cịn lại đều đưa giá trị các thanh ghi về giá trị ban đầu đã được ấn định sẵn. Các bit /TO và /PD chỉ thị trạng thái hoạt động, trạng tháo reset của vi điều khiển và được điều khiển bởi CPU.
/MCLR reset: Khi pin /MCLR ở mức logic thấp, vi điều khiển sẽ được reset. Tín
hiệu reset sẽ được cung cấp bởi một mạch ngoại vi với các yêu cầu cụ thể như sau: - Khơng nối pin /MCLR trực tiếp lên nguồn Vdd
- R1 phải nhỏ hơn 40K để đảm bảo các đặc tính điện của vi điều khiển - R2 phải lớn hơn 1K để hạn dịng đi vào vi điều khiển
/MCLR reset cịn được chống nhiễu bởi một bộ lọc để tránh các tín hiệu nhỏ tác động lên /MCLR
Power-on reset (POR): Đây là xung do vi điều khiển tạo ra khi phát hiện nguồn cung cấp Vdd. Khi hoạt động ở chế độ bình thường, vi điều khiển cần được đảm báo các thơng số về dịng điện, điện áp để hoạt động bình thường. Nhưng nếu các tham số này khơng đảm bảo, xung reset do POR tạo ra sẽ đưa vi điều khiển về trạng thái reset và chỉ tiếp tục hoạt động khi nào các tham số trên được đảm bảo.
Power-up Timer (PWRT): Đây là bộ định thời hoạt động dựa vào mạch RC bên
trong vi điều khiển. Khi PWRT được kích hoạt, vi điều khiển sẽ được đưa về trạng thái reset. PWRT sẽ tạo ra một khoảng thời gian delay (khoảng 72ms) để Vdd tăng đến giá trị thích hợp.
Oscillator Start-up Timer (OST): OST cung cấp một khoảng thời gian delay bằng
1024 chu kỳ xung oscillator sau khi PWRT ngưng tác động (vi điều khiển đã đủ điều kiện hoạt động) để đảm bảo sự ổn định của xung do oscillator phát ra. Tác động của OST cịn xảy ra đối với POR reset và khi vi điều khiển được đánh thức từ chế độ sleep. OST chỉ tác động đối với các loại oscillator là XT, HS và LP.
Brown-out reset (BOR): Nếu Vdd hạ xuống thấp hơn giá trị VBOR (khoảng 4V) và
kéo dài trong khoảng thời gian lớn hơn TBOR (khoảng 100us), BOR được kích hoạt và vi điều khiển được đưa về trạng thái BOR reset. Nếu điện áp cung cấp cho vi điều khiển hạ xuống thấp hơn VBOR trong khoảng thời gian ngắn hơn TBOR, vi điều khiển sẽ khơng được reset. Khi điện áp cung cấp đủ cho vi điều khiển hoạt động, PWRT được kích hoạt để tạo ra một khoảng thời gian delay (khoảng 72ms). Nếu trong thời gian này điện áp cung cấp cho vi điều khiển lại tiếp tục hạ xuống dưới mức điện áp VBOR, BOR sẽ lại được kích hoạt khi vi điều khiển đủ điện áp hoạt
động. Một điểm cần chú ý là khi BOR reset được cho phép, PWRT cũng sẽ hoạt động bất chấp trạng thái của bit PWRT.
Tĩm lại, để vi điều khiển hoạt động được từ lúc cấp nguồn cần trải qua các bước sau:
- POR tác động
- PWRT (nếu được cho phép hoạt động) tạo ra khoảng thời gian delay
TPWRT để ổn định nguồn cung cấp
- OST (nếu được cho phép) tạo ra khoảng thời gian delay bằng 1024 chu
kỳ xung của oscillator để ổn định tần số của oscillator
- Đến thời điểm này vi điều khiển mới bắt đầu hoạt động bình thường.
Thanh ghi điều khiển và chỉ thị trạng thái nguồn cung cấp cho vi điều khiển là thanh ghi PCON. (xem phụ lục 2 để biết thêm chi tiết)
Hình 0.12: Sơ đồ các chế độ reset của PIC16F877A