HỆ THỐNG RESET, NGẮT VÀ CÁC CHẾ ĐỘ HOẠT ĐỘNG

0
366
ngắt msp 430

II.1. Hệ thống reset và khởi động

Hệ  thống  mạch  reset  bao  gồm  2  hệ  thống  là  POR  (  Power  On  Reset)  và  PUC ( Power Up Claer).

Hình II.1: Sơ đồ hệ thống Reset của MSP430

+ POR chỉ được sinh ra bởi 3 sự kiện sau:

– Cấp nguồn cho thiết bị.

– Tín hiệu ở chân RST/NMI ở mức thấp khi thiết lập cấu hình cho hệ thống Reset.

– SVS ở mức thấp khi PORON = 1.

+ PUC thì luôn sinh ra khi POR được sinh ra, nhưng không xảy ra ngược lại. Những sự kiện sau đây sẽ khởi động PUC:

– Khi POR được sinh ra.

– Watchdog timer hết hiệu lực khi trong chế độ watchdog.

– Khi chốt an toàn của Watchdog timer, Flash memory bị vi phạm.

II.1.1. Power On Reset ( POR)

POR được sinh ra bởi các điều kiện liên quan đến phần cứng:

+ Thiết bị được cấp nguồn. POR được sinh ra nếu điện áp cung cấp giảm xuống dưới giá trị mà tại đó thiết bị không còn làm việc chính xác nữa, còn gọi là sự sụt áp.

+ Khi chân RST/NMI ở  mức thấp nếu nó được thiết lập chức năng Reset hơn là ngắt không khả ngụy. Mặc định thì chức năng của chân này là Reset.

+ Ở những phương án lớn hơn có bộ giám sát điện áp cung cấp SVS. Ở đây ta có thể thiết lập cấu hình, không giống như bộ dò sụt áp. Nó đặt cờ SVSFG nếu điện áp sụt dưới mức được lập trình và có thể Reset một cách tùy chọn.

II.1.2. Power Up Clear ( PUC)

PUC thì luôn sinh ra khi POR được sinh ra, nhưng không xảy ra ngược lại. Những sự kiện sau đây sẽ khởi động PUC:

+ Watchdog timer bị tràn trong chế độ giám sát.

+ Một sự cố gắn ghi vào thanh ghi điều khiển giám sát WDTCTL mà không đúng từ khóa 0x5A trong Byte cao. Một Reset được khởi động nếu watchdog không cho phép hoặc ở chế độ định thời khoảng.

+ PUC còn được sinh ra bởi một sự truy cập địa chỉ dự trữ của những thanh ghi ngoại vi hoặc đọc bộ nhớ không được thực thi.

II.1.3. Các điều kiện sau khi reset

Những điều kiện ban đầu cho những thanhghi và những ngoại vi sau khi Reset POR và PUC được giới thiệu tổng quát như sau:

+ Chân RST/NMI được thiết lập cho Reset, nó cũng có thể được sử dụng cho  kết nối JTAG ở một vài loại như F2013.

+ Phần lớn các chân I/O được thiết lập như là ngã vào tín hiệu số. Cũng có một vài ngoại lệ là những chân này có thể sử dụng với bộ dao động thạch anh như ở F2013.

+Thanh ghi trạng thái được Clear. Điều này có nghĩa là IC sẽ hoạt động hết công suất, mặc dù nó có thể có một chế độ nguồn thấp trước khi được Reset trở lại.

+ Watchdog timer bắt đầu ở chế độ giám sát. Đây là một điều cốt yếu vì bởi vì nó là một đặc tính an toàn, nhưng có nghĩa là bạn phải vận hành nó hoặc cho phép nó trước khi nó hết thời gian chờ và Reset lại chip.

+ Bộ đếm chươngtrình được nạp bởi một vector Reset được lưu ở địa chỉ 0xFFFE. Nó sẽ cung cấp địa chỉ của lệnh đầu tiên được thực thi.

II.2. Hệ thống ngắt

Hệ thống ngắt được bố trí thành một dãy kết nối gồm nhiều mô đun. Mô đun gần nhất là CPU/NMIRS thì có quyền ưu tiên ngắt cao hơn. Ở đây có 3 loại ngắt là: Reset hệ thống,

ngắt khả ngụy, ngắt không khả ngụy.

II.2.1. Ngắt không khả ngụy

Ngắt khôngkhả ngụy NMI thì không bị che bởi bít ngắt cho phép chung GIE nhưng bị che bởi các bít ngắt riêng lẽ như NMIIE, ACCVIE, OFIE. Khi một ngắt NMI được chấp nhận thì tất cả những bít ngắt cho phép NMI tự động Reset. Chương trình bắtđầu chạy ở địa chỉ được lưu trữ trong vector ngắt không khả ngụy là 0FFFCh.

Ngắt không khả ngụy có thể được sinh ra bởi 3 nguồn sau:

+ Biên của chân RST/NMI khi được thiết lập ở chế độ NMI.

+ Xuất hiện những sự đứt gãy dao động.

+ Có sự vượt quá dữ liệu bộ nhớ Flash.

Hình II.3: Sơ đồ khối của nguồn ngắt khả ngụy

> Chân RST/NMI

Khi  cấp  nguồn,  chân RST/NMI  được  thiết  lập  ở  chế  độ  Reset.  Chức  năng  của  chân RST/NMI  được  chọn  trong  thanh  ghi  bộ  điều  khiển  giám  WDTCTL.  Nếu  chân RST/NMI được thiết lập để khởi động lại chức năng, CPU giữ ở chế độ Reset trong lúc chân RST/NMI ở mức thấp. Sau khi chân RST/NMI lên mức cao thì CPU bắt đầu chạy chương trình từ địa chỉ lưu trong vector Reset là 0FFFEh.

Nếu chân RST/NMI được thiết lập tính năng NMI bởi phần mềm người sử dụng, một tín hiệu biên được chọn bởi bít WDTNMIES sinh ra ngắt NMI nếu bít NMIIE được Set. Cờ NMIIFG cũng được Set.

>  Sự vi phạm dữ liệu bộ nhớ Flash

Cờ nhớ ACCVIFG được Set khi xuất hiện những sự vi phạm dữ liệu bộ nhớ Flash. Nó có thể cho phép phát sinh ngắt NMI khi bít ACCVIE được thiết lập. Cờ ACCVIFG có thể được kiểm tra bởi chương trình ngắt NMI nếu NMI được gây ra bởi sự vi phạm bộ nhớ Flash.

>  Sự đứt gãy dao động 

Sự đứt gãy tín hiệu dao động báo cho ta biết có thể bộ dao động thạch anh bị lỗi. Sự đứt gãy dao động này cũng có thể phát sinh ra ngắt NMI bởi việc thiết lập bít OFIE. Tín hiệu PUC có thể kích hoạt sự đứt gãy dao động bởi vì bộ ngắt mạch PUC là LFXT1 ở chế độ LF thành ra tắt đi chế độ HF. PUC cũng tắt đi bộ dao động XT2.

>  Ví dụ về một bộ điều khiển ngắt NMI

Ngắt NMI là một ngắt nhiều nguồn. Ngắt NMI tự động Reset các Bit ngắt cho phép như NMIIE, OFIE và ACCVIE. Sử dụng chương trình ngắt NMI để reset các cờ ngắt và cho phép lại các Bit ngắt sao cho phù hợp với những ứng dụng.

Hình II.4: Điều khiển ngắt NMI

 

II.2.2. Ngắt khả ngụy

 

Ngắt khả ngụy đượcgây ra bởi các thiết bị ngoại vi với khả năng ngắt bao gồm cả bộ định thời giám sát sự tràn của bộ đếm thời gian. Mỗi nguồn ngắt khả ngụy có thể mất tác dụng một cách riêng lẽ bởi một bít ngắt cho phép hoặc tất cả những ngắt khả ngụy có thể bị mất tác dụng bởi bít cho phép ngắt GIE ở thanh ghi trạng thái.

 

II.2.3. Xử lý ngắt

 

Khi một ngắt được yêu cầu từ thiết bị ngoại vi, các Bit ngắtđược cho phép và Bit GIE được Set, chương trình ngắt được yêu cầu. Chỉ có những Bit cho phép riêng rẽ phải được Set cho ngắtkhông khả ngụy được yêu cầu.

 

>  Sự chấp nhận ngắt:

 

Thời gian trễ ngắt là 5 chu kỳ ( CPUx) và 6 chu kỳ ( CPU), bắt đầu với sự chấp nhận của một yêu cầu ngắt và kéo dài đến khi thực hiện những lệnh đầu tiên của các chương trình ngắt. Ngắt Logic được thực hiệntheo các bước như sau:

 

1. Bất kì một lệnh nào đang thực thi đều được hoàn thành.

2. Bộ đếm chương trình PC, địa chỉ của lệnh kế tiếp được đẩy lên ngăn xếp.

3. SR được đẩy lên ngăn xếp.

4. Các ngắt với ưu tiên cao hơn thì được chọn nếu các ngắt xảy ra trong suốt quá trình thực thi và làm trì hoãn chương trình.

5. Những cờ ngắt yêu cầu Reset một cách tự động trên cờnguồn đơn. Nhiều cờ nguồn vẫn Set cho chương trình bằng phần mềm.

6. SR được Clear. Điều  này sẽ chấm  dứt  bất cứ chế độ  nguồn thấp nào  vì Bit GIE được Clear, hơn nữa các ngắt thì không có tác dụng.

7. Nội dung của véc tơ ngắt được nạp vào trong PC: Chương trình ngắt tiếp tục tại địa chỉ đó.

>  Quay về từ chương trình ngắt:

Chương trình ngắt được chấm dứt với lệnh RETI: Quay về từ một chương trình ngắt. Sự trở lại từ chương trình ngắt mất 5 chu kỳ ( CPU) và 3 chu kỳ ( CPUx) để thực thi các  hoạt động sau:

1. SR với tất cả các thiết lập trước đó được lấy ra từ ngăn xếp. Tất cả các thiết lập  trước đó của GIE, CPUOFF, … có hiệu lực, bất chấp các cài đặt trong suốt chương trình  ngắt.

2. PC được lấy ra từ ngăn xếp và bắt đầu thực thi tại nơi mà nó bị gián đoạn khi ngắt.

Hình II.6: Quay về từ chươngtrình ngắt

II.2.4. Ngắt có hướng ( Ngắt véc tơ)

Ngắt véc tơ khởi đầu ở địa chỉ nằm trong dãy địa chỉ từ 0FFFFh đến 0FFC0h. Một véc tơ được lập trình bởi người sử dụng với 16 bit địa chỉ của ngắt tương ứng. Nó thì đề nghị cung cấp một thường trình ngắt cho mỗi véc tơ ngắt được gán cho một Mô đun. Một thường trình ngắt có thể bao gồm một lệnh RETI và một vài véc tơ ngắt có thể trỏ đến nó.

Những véc tơ ngắt không được chỉ định có thể được sử dụng cho mã chương nếu cần thiết.

Một số mô đun Bit cho phép, Bit ngắt cho phép, cờ ngắt thì nằm ở SFRs. SFRs nằm ở phạm vi địa chỉ thấp hơn và được thực hiện ở định dang Byte. SFRs phải được truy cập bằng những lệnh Byte.

Địa chỉ của các nguồn ngắt và cờ ngắt được trình bày dưới Bảng II.1

 

INTERRUPT
SOURCE
INTERRUPT
FLAG
SYSTEM
INTERRUPT
WORD
ADDRESS
PRIORITY
Power-up, external PORIFG
reset, watchdog, flash RSTIFG RESET 0FFFEh 31
password, illegal WDTIFG
instruction fetch. KEYV
NMI, oscillator fault, NMIIFG (non)-maskable
flash memory access ACCVIFG (non)-maskable 0FFFCh 30
violation. OFIFG (non)-maskable
device-specific 0FFFAh 29
device-specific 0FFF8h 28
device-specific 0FFF6h 27
Watchdog timer WDTIFG maskable 0FFF4h 26
device-specific 0FFF2h 25
device-specific 0FFF0h 24
device-specific 0FFEEh 23
device-specific 0FFECh 22
device-specific 0FFEAh 21
device-specific 0FFE8h 20
device-specific 0FFE6h 19
device-specific 0FFE4h 18
device-specific 0FFE2h 17
device-specific 0FFE0h 16
device-specific 0FFDEh 15
device-specific 0FFDCh 14
device-specific 0FFDAh 13
device-specific 0FFD8h 12
device-specific 0FFD6h 11
device-specific 0FFD4h 10
device-specific 0FFD2h 9
device-specific 0FFD0h 8
device-specific 0FFCEh 7
device-specific 0FFCCh 6
device-specific 0FFCAh 5
device-specific 0FFC8h 4
device-specific 0FFC6h 3
device-specific 0FFC4h 2
device-specific 0FFC2h 1
device-specific 0FFC0h 0

 

 Bảng II.1: Những nguồn ngắt, cờ ngắt và véc tơ ngắt

 

II.3. Các chế độ hoạt động

Họ MSP430 được thiết kế cho những ứng dụng sử dụng nguồn thấp và sử dụng ở nhiềuchế độ hoạt động khác nhau. Các chế độ hoạt động khác nhau ở 3 đặc điểm chính:

+ Mức độ sử dụng nguồn thấp.

+ Tốc độ và lưu lượng dữ liệu.

+ Mức độ làm nhỏ đi lượng tiêu thụ điện của các thiết bị ngoại vi.

Hình II.7: Dòng tiêu thụ của MSP430x1xx ở các chế độ hoạt động

Ở  chế  độ  nguồn  thấp  LPM0  đến LPM4  được  thiết  lập  với  các  Bit SCG0,  SCG1, OSCOFF, CPUOFF trong thanh ghitrạng thái. Ưu điểm của các Bitđiều khiển SCG0, SCG1, OSCOFF và CPUOFF trong thanh ghi trạng thái là chế độ hoạt động hiện tại sẽ được lưu trong Stack trong suốt quá trình ngắt diễn ra. Chương trình sẽ quay về chế độ hoạt động trước đó nếu giá trị được lưu trong thanh ghi trạng thái không bị thay đổi trong suốt quá trình ngắt. Chương trình có thể quay về một chế độ hoạtđộng khác nếu có sự thay đổi giá trị được lưu bên trong Stack trong suốt quá trình ngắt diễn ra. Các Bít điều khiển và Stack có thể được truy cập bởi bất kì lệnh nào. Các chế độ hoạt động của họ MSP430 được trình bày ở Bảng II.2

 

Mode SCG1 SCG0 OSCOFF CPUOFF CPU and Clocks Status
Active 0 0 0 0 CPU on, MCLK on, SMCLK on, ACLK on.
LPM0 0 0 0 1 CPU off, MCLK off, SMCLK on, ACKL on.
LPM1 0 1 0 1 CPU off, MCLK off, SMCLK on, ACKL on.
LPM2 1 0 0 1 CPU off, MCLK off, SMCLK off, DCO off, ACKL on/
LPM3 1 1 0 1 CPU off, MCLK off, SMCLK on, DCO off, ACKL on.
LPM4 1 1 1 1 CPU off, MCLK off, SMCLK off, DCO off, ACLK off.

 

Bảng II.2: Các chế độhoạt động cơ bản của MSP430

II.3.1. Cách nhập và thoát khỏi Low-Power Modes

Một sự kiện ngắt được cho phép sẽ kích hoạt MSP430 từ bất kì chế độ hoạt động nguồn thấp nào. Chương trình là:

Nhập chương trình ngắt:

+ PC và SR được lưu trữ trên ngăn xếp.

+ Các Bit CPUOFF, SCG1 và OSCOFF tự động Reset.

Trở về từ chương trình ngắt:

+ SR được lấy ra từ ngăn xếp và khôi phục lại chế độ điều hành trước đó.

+ Các Bit SR được lưu trữ trong ngăn xếp có thể bị thay đổi trong thường trình dịch vụ ngắt quay trở về một chế độ hoạt động khác khi lệnh RETI được thực thi.

>  Ví dụ:

;Chế độ LPM0

BIS #GIE+CPUOFF,SR  ; Khởi tạo LPM0

;… ; Dừng chương trình

;

; Thoát khỏi chương trình con ngắt LPM0

BIC #CPUOFF,0(SP)  ; Trở về chương trình chính bằng lệnh RETI

RETI

; Chế độ LPM3

BIS #GIE+CPUOFF+SCG1+SCG0,SR ; Khởi tạo LPM3

;…  ; Dừng chương trình

;

; Thoát khỏi chương trình con ngắt LPM3

BIC  #CPUOFF+SCG1+SCG0,0(SR)   ; Trở về chương trình chính bằng

lệnh RETI

RETI

0 BÌNH LUẬN

BÌNH LUẬN