Ngắt (Interrupts)

Một phần của tài liệu đồ án : Thiết kế bộ điều khiển PID SỐ TRÊN NỀN VI ĐIỀU KHIỂN PIC (Trang 27 - 38)

Dịng Pic18Fxxxx này cung cấp cho người sử dụng nhiều nguồn ngắt và một đăc trưng ưu tiên ngắt là hầu hết các ngắt đều cĩ cả mức ưu tiên cao và thấp. Ngắt ưu tiên cao ở địa chỉ 0008h, ngắt ưu tiên thấp ở địa chỉ 0018h. Những ngắt ưu tiên cao thực hiện ngắt cịn các ngắt ưu tiên thấp phải được gọi trong chương trình.

Cĩ tất cả mười thanh ghi sử dụng dể điều khiển hoạt dộng ngắt gồm: • RCON • INTCON • INTCON2 • INTCON3 • PIR1, PIR2 • PIE1, PIE2 • IPR1, IPR2

Nĩi chung các nguồn ngắt cĩ 3 bit dể điều khiển hoạt động ngắt; • Flag bit : để xác định sự kiện ngắt xảy ra.

• Enable bit : Cho phép thực hiện ngắt tại địa chỉ Flag bit trỏ tới. • Priority bit : Để chọn mức ưu tiên cho ngắt

Ngồi ra ở các thanh ghi chức năng cụ thể phục vụ cho các ngắt thì cĩ các bit riêng với các chức năng giúp người lập trình cĩ thể quản lý và sử dụng các ngắt hiệu quả. Sơ đồ trạng thái Logic các ngắt cĩ thể mơ tả :

Hình 1.10 Pic 18 Interrup logic

Bây giờ chúng ta sẽ tìm hiểu cấu trúc mọt số thanh ghi điển hình sử dụng phục vụ hoạt động ngắt:

INTCON Registers

Thanh ghi này cho phép dọc ghi các ngắt và cho phép ưu tiên ngắt cĩ cờ Flag bit.

INTCON 1 Registers

• Khi IPEN = 0:

− Giá trị 1: Cho phép tồn bộ hoạt động ngắt.

− Giá trị 0: Khơng thực hiện tồn bộ hoạt động ngắt. • Khi IPEN = 1:

− Giá trị 1: Cho phép tồn bộ hoạt động ngắt với mức ưu tiên cao.

− Giá trị 0: Khơng thực hiện tồn bộ hoạt động ngắt từ ngoại vi. bit 6 (PEIE/GIEL): bit cho phép các ngắt từ ngoại vi thực hiện.

• Khi IPEN = 0:

− Giá trị 1: Cho phép tồn bộ hoạt động ngắt từ ngoại vi.

− Giá trị 0: Khơng thực hiện tồn bộ hoạt động ngắt từ ngoại vi. • Khi IPEN = 1:

− Giá trị 1: Cho phép tồn bộ hoạt động ngắt từ ngoại vi với mức ưu tiên thấp.

− Giá trị 0: Khơng thực hiện tồn bộ hoạt động ngắt từ ngoại vi với mức ưu tiên thấp.

bit 5 (TMR0IE): bit cho phép ngắt báo tràn TMR0

− Giá trị 1: Cho phép ngắt báo tràn TMR0.

− Giá trị 0: Khơng cho phép ngắt báo tràn TMR0. bit 4 (INT0IE): bit cho phép ngắt ngồi INT0

− Giá trị 1: Cho phép ngắt ngồi INT0 .

− Giá trị 0: Khơng cho phép ngắt ngồi INT0 bit 3 (RBIE): bit cho phép thay đổi RB Port

− Giá trị 1: Cho phép ngắt thay đổi RB Port . − Giá trị 0: Khơng cho phép ngắt thay đổi RB Port .

bit 2 (TMR0IF): bit cờ ngắt báo trànTMR0

− Giá trị 1: thanh ghi TMR0 xảy ra tràn (cĩ thể xố bằng phần mềm).

− Giá trị 0: Khơng xảy ra tràn thanh ghi TMR0.

bit 1 (INT0IF): bit cờ báo ngắt ngồi INT0

− Giá trị 1: xảy ra ngắt ngồi INT0 (cĩ thể xố bằng phần mềm).

− Giá trị 0: Khơng xảy ra ngắt ngồi INT0. bit 0 (RBIF): bit cờ báo thay đổi RB Port

− Giá trị 1: cĩ thay đổi trạng thái của chân mang giá trị nhỏ nhất của RB<7:4>(cĩ thể xố bằng phần mềm).

− Giá trị 1: tồn bộ PORT B khơng được kéo lên.

− Giá trị 0: Cho phép tồn bộ PORT B được kéo lên bơỉi một giá trị cổng chốt riêng lẻ..

bit 6 (INTEDG0): bit lựa chọn biên ngắt ngồi số 0.

− Giá trị 1: tăng biên độ ngắt.

− Giá trị 0: giảm biên độ ngắt

bit 5 (INTEDG1): bit lựa chọn biên ngắt ngồi số 1.

− Giá trị 1: tăng biên độ ngắt.

− Giá trị 0: giảm biên độ ngắt

bit 4 (INTEDG2): bit lựa chọn biên ngắt ngồi số 2.

− Giá trị 1: tăng biên độ ngắt.

− Giá trị 0: giảm biên độ ngắt bit 3 (Unimplemented): mang giá trị “0” bit 2 (TMR0IP): bit ưu tiên ngắt báo tràn TMR0

− Giá trị 1: mức ưu tiên cao −

Giá trị 0: mức ưu tiên thấp. bit 1 (Unimplemented): mang giá trị “0” bit 0 (RBIP): bit ưu tiên ngắt thay đổi RB Port

− Giá trị 1: mức ưu tiên cao

− Giá trị 0: mức ưu tiên thấp.

INTCON 3 Registers

bit 7 (INT2IP): bit ưu tiên ngắt ngồi INT2.

INTCON 2 Registers

− Giá trị 1: mức ưu tiên cao −

Giá trị 0: mức ưu tiên thấp. bit 6 (INT1IP): bit ưu tiên ngắt ngồi INT1.

− Giá trị 1: mức ưu tiên cao −

Giá trị 0: mức ưu tiên thấp. bit 5 (Unimplemented): mang giá trị “0” bit 4 (INT2IE): bit cho phép ngắt ngồi INT 2.

− Giá trị 1: Cho phép ngắt ngồi INT2 thực hiện.

− Giá trị 0: Khơng cho phép ngắt ngồi INT2 thực hiện. bit 3 (INT1IE): bit cho phép ngắt ngồi INT 1.

− Giá trị 1: Cho phép ngắt ngồi INT1 thực hiện. − Giá trị 0: Khơng cho phép ngắt ngồi INT1 thực hiện.

bit 2 (Unimplemented): mang giá trị “0” bit 1 (INT2IF): bit cờ báo ngắt ngồi INT2

− Giá trị 1: xảy ra ngắt ngồi INT2 (cĩ thể xố bằng phần mềm).

− Giá trị 0: Khơng xảy ra ngắt ngồi INT2. bit 0 (INT1IF): bit cờ báo ngắt ngồi INT1

− Giá trị 1: xảy ra ngắt ngồi INT1 (cĩ thể xố bằng phần mềm).

− Giá trị 0: Khơng xảy ra ngắt ngồi INT1.

PIR Registers

Các thanh ghi này xác định cờ ngắt cho thiết bị ngoại vi. Cùng lúc cĩ hai thanh ghi phục vụ cho hai thiết bị ngoại vi là PIR1 và PIR2.

PIR1 Registers

bit 7 (PSPIF): bit cờ thực hiện ngắt khi đọc/viết cổng song song phụ thuộc (Parallel

Slave Port)

− Giá trị 1: hoạt động đọc hoặc viết cĩ thể dưa tới(cĩ thể xố bằng phần mềm)

− Giá trị 0: Khơng cĩ hoạt dộng đọc viết. bit 6 (ADIF): A/D Converter Interrupt Flag bit

− Giá trị 1: Một hoạt động chuyển đổi A/D hồn tất (cĩ thể xố bởi phần mềm).

− Giá trị 0 : Hoạt động chuyển đổi A/D chưa hồn tất.

bit 5 (RCIF): bit cờ báo ngắt nhận EUSART .

− Giá trị 1:EUSART nhận từ bộ đệm và RCREG là đầy(được xố khi RCREG được đọc)

− Giá trị 0: EUSART nhận từ bộ đệm là rỗng. bit 4 (TXIF): bit cờ báo ngắt việc truyền từ EUSART

− Giá trị 1:EUSART truyền tới bộ đệm và TXREG là đầy(được xố khi TXREG được viết)

− Giá trị 0: EUSART nhận từ bộ đệm là rỗng.

bit 3 ( SSPIF): bit cờ báo ngắt cổng Master Synchronous Serial Port

− Giá trị 1:Hoạt động truyền/nhận hồn tất (cĩ thể xĩa bởi phần mềm)

− Giá trị 0:đang đợi truyền nhận. bit 2 (CCP1IF): bit cờ báo ngắt CCP1

• Lựa chọn kiểu Capture :

− Giá trị 1: thanh ghi TMR1 theo kiểu capture xảy ra (phải xố bởi phần mềm)

− Giá trị 0: Khơng xảy ra kiểu capture trên với thanh ghi TMR1 . • Lựa chọn kiểu Compare :

− Giá trị 1: thanh ghi TMR1 theo kiểu compare xảy ra (phải xố bởi phần mềm)

− Giá trị 0: Khơng xảy ra kiểu compare trên với thanh ghi TMR1 . • Lựa chọn kiểu PWM: khơng sử dụng kiểu lựa chon này.

bit 1 (TMR2IF):bit cờ báo ngắt liên kếtTMR2 tới PR2

− Giá trị 1:Xảy ra liên kết TMR2 tới PR2 (phải được xố bởi phần mềm) − Giá trị 0:Khơng xảy ra liên kết TMR2 tới PR2.

bit 0 (TMR1IF): bit cờ báo ngắt trànTMR1

− Giá trị 1: thanh ghi TMR1 đã tràn (phải được xố bởi phần mềm) − Giá trị 0: Khơng cĩ tràn trên thanh ghiTMR1. PIR 2 Register

− Giá trị 1:thiết bị bộ dao động lỗi, xung đầu vào tác động thay đổi tới INTOSC (phải được xĩa bởi phần mềm).

− Giá trị 0:Xung thiết bị hoạt động. bit 6 (CMIF): Bit cờ báo ngắt bộ so sánh.

− Giá trị 1: Đầu vào bộ so sánh là thay đổi (phải xố bởi phần mềm). − Giá trị 0: Khơng cĩ thay đổi đầu vào bộ so sánh.

bit 5 (Unimplemented): mang giá trị „0‟

bit 4 (EEIF):bit cờ báo ngắt hoạt động viết dữ liệu bộ nhớ EEPROM/Flash

− Giá trị 1: Hoạt động viết hồn tất (phải xố bởi phần mềm).

− Giá trị 0: Hoạt động viết chưa hồn tất hoặc chưa bắt đầu. bit 3 (BCLIF): bit cờ báo ngắt cĩ xung đột Bus

− Giá trị 1: xảy ra xung đột trên Bus (phải xố bởi phần mềm)

− Giá trị 0: Khơng xảy ra xung đột Bus.

bit 2 (HLVDIF): Bit cờ báo ngắt cĩ dị điện áp (High/Low-Voltage)

− Giá trị 1: điều kiện xảy ra điện áp mức cao/thấp (hướng xavs địng bởi VDIRMAG bit, HLVDCON<7>)

− Giá trị 0: Khơng xảy ra với mức điện áp cao/thấp. bit 1 (TMR3IF): bit cờ báo tràn TMR3

− Giá trị 1: Cĩ tràn trên thanh ghi TMR3 (phải xĩa bởi phần mềm)

− Giá trị 0: Khơng cĩ tràn thanh ghi TMR3. bit 0 (CCP2IF): bit cờ báo ngắt trên CCP2

• Lựa chọn kiểu Capture :

− Giá trị 1: thanh ghi TMR1 theo kiểu capture xảy ra (phải xố bởi phần mềm)

− Giá trị 0: Khơng xảy ra kiểu capture trên với thanh ghi TMR1 . • Lựa chọn kiểu Compare :

− Giá trị 1: thanh ghi TMR1 theo kiểu compare xảy ra (phải xố bởi phần mềm)

− Giá trị 0: Khơng xảy ra kiểu compare trên với thanh ghi TMR1 . • Lựa chọn kiểu PWM: khơng sử dụng kiểu lựa chon này.

PIE Registers

Giống như các thanh ghi PIR nhưng thanh ghi PIE dùng cho phép ngắt ở thiết bị ngoại vi và cũng gồm hai thanh ghi PIE1 và PIE2.

bit 7 (PSPIE): bit cho phép ngắt khi đọc/viết qua cổng song song phụ thuộc

− Giá trị 1:cho phép ngắt khi đọc/viết qua cổng sơng song phụ thuộc

− Giá trị 0:khơng cho phép ngắt khi đọc/viết qua cổng sơng song phụ thuộc bit 6 (ADIE): Bit cho phép ngắt khi cĩ chuyển đổi A/D

− Giá trị 1: cho phép ngắt khi cĩ chuyển đổi A/D

− Giá trị 0: Khơng cho phép ngắt khi cĩ chuyển đổi A/D bit 5 (RCIE): Bit cho phép ngắt khi ÊUSART nhận

− Giá trị 1: cho phép ngắt khi EUSART nhận

− Giá trị 0: Khơng cho phép ngắt khi EUSART nhận bit 4 (TXIE):Bit cho phép ngắt khi EUSART truyền

− Giá trị 1: cho phép ngắt khi EUSART truyền

− Giá trị 0: Khơng cho phép ngắt khi EUSART truyền bit 3 (SSPIE): bit cho phép ngắt khi giao tiếp cổng Master Synchronous

− Giá trị 1: cho phép ngắt khi giao tiếp cổng Master Synchronous

− Giá trị 0: Khơng cho phép ngắt khi giao tiếp cổng Master Synchronous.

bit 2 (CCP1IE): Bit cho phép ngắt CCP1

− Giá trị 1: cho phép ngắt CCP1

− Giá trị 0: Khơng cho phép ngắt CCP1 .

bit 1 (TMR2IE): bit cho phép ngắt khi cĩ liên kết TMR2 tới PR2.

− Giá trị 1: cho phép ngắt khi cĩ liên kết TMR2 tới PR2.

− Giá trị 0: Khơng cho phép ngắt khi cĩ liên kết TMR2 tới PR2. bit 0 (TMR1IE): bit cho phép ngắt khi cĩ tràn TMR1

− Giá trị 1: cho phép ngắt khi cĩ tràn TMR1

− Giá trị 0: Khơng cho phép ngắt khi cĩ tràn TMR1

bit 7 (OSCFIE): bit cho phép ngắt khi cĩ lỗi bộ dao động Oscillator − Giá trị 1:cho phép

− Giá trị 0:Khơng cho phép bit 6 (CMIE): Bit cho phép báo ngắt bộ so sánh.

− Giá trị 1: cho phép .

− Giá trị 0: Khơng cho phép . bit 5 (Unimplemented): mang giá trị „0‟

bit 4 (EEIE):bit cho phép báo ngắt hoạt động viết dữ liệu bộ nhớ EEPROM/Flash

− Giá trị 1: cho phép

− Giá trị 0: Khơng cho phép bit 3 (BCLIE): bit cho phép báo ngắt cĩ xung đột Bus

− Giá trị 1: cho phép

− Giá trị 0: Khơng cho phép.

bit 2 (HLVDIE): Bit cho phép báo ngắt cĩ dị điện áp (High/Low-Voltage)

− Giá trị 1: cho phép.

− Giá trị 0: Khơng cho phép.

bit 1 (TMR3IE): bit cho phép báo tràn TMR3

− Giá trị 1: cho phép.

− Giá trị 0: Khơng cho phép.

bit 0 (CCP2IE): bit cho phép báo ngắt trên CCP2

− Giá trị 1: cho phép.

− Giá trị 0: Khơng cho phép.

IPR Registers

Giống như các thanh ghi PIR,PIE để phuc vụ hoạt động ngắt, thanh ghi IPR dùng xác định giá trị ưu tiên cho phép ngắt ở thiết bị ngoại vi và cũng gồm hai thanh ghi IPR1 và IPR2.

bit 7 (PSPIP): bit ưu tiên ngắt khi đọc/viết qua cổng sơng song phụ thuộc − Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 6 (ADIP): Bit ưu tiên ngắt khi cĩ chuyển đổi A/D − Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 5 (RCIE): Bit cho phép ngắt khi ÊUSART nhận − Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 4 (TXIP):Bit ưu tiên ngắt khi EUSART truyền −

Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 3 (SSPIP): bit ưu tiên ngắt khi giao tiếp cổng Master Synchronous − Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 2 (CCP1IP): Bit ưu tiên ngắt CCP1 −

Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 1 (TMR2IP): bit ưu tiên ngắt khi cĩ liên kết TMR2 tới PR2.

− Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 0 (TMR1IP): bit ưu tiên ngắt khi cĩ tràn TMR1 − Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp.

IPR2 Registers

bit 7 (OSCFIP): bit ưu tiên ngắt khi cĩ lỗi bộ dao động Oscillator

− Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 6 (CMIP): Bit ưu tiên báo ngắt bộ so sánh.

− Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 5 (Unimplemented): mang giá trị „0‟

bit 4 (EEIP):bit ưu tiên báo ngắt hoạt động viết dữ liệu bộ nhớ EEPROM/Flash

− Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 3 (BCLIP): bit ưu tiên báo ngắt cĩ xung đột Bus − Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 2 (HLVDIP): Bit ưu tiên báo ngắt cĩ dị điện áp (High/Low-Voltage) − Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 1 (TMR3IP): bit ưu tiên báo tràn TMR3 −

Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. bit 0 (CCP2IP): bit ưu tiên báo ngắt trên CCP2 −

Giá trị 1:mức ưu tiên cao.

− Giá trị 0:mức ưu tiên thấp. • RCON Register

Thanh ghi này cĩ bit cờ (Flag bit) sử dụng để xác định ngưyên nhân Reset và khởi dộng các trạng thái Idle và Sleep. Thanh ghi này chứa bit IPEN cho phép mức ưu tiên ngắt.

bit 7 (IPEN): bit cho phép ưu tiên ngắt

− Giá trị 1:cho phép mức ưu tiên ngắt

− Giá trị 0: khơng cho phép mức ưu tiên ngắt bit 6 (SBOREN): Bit cho phép lập trình phần mềm BOR

• Với BOREN1:BOREN0 = 01:

− Giá trị 1 : Cho phép BOR

• Với BOREN1:BOREN0 = 00,10or11 khơng cho phép và mang giá trị “0” bit 5 (Unimplemented): mang giá trị „0‟ bit 4 (RI): bit cờ của cấu trúc lệnh RESET

− Giá trị 1:Khơng thực hiện cấu trúc lệnh RESET

− Giá trị 0: khơng thực hiện cấu trúc lệnh RESET đẻ RESET thiết bị. bit 3 (TO ):Bit cờ báo bộ định thời Watchdog Time-out

− Giá trị 1:Cấp nguồn điện bởi cấu trúc lệnh CLRWDT hoặc SLEEP.

− Giá trị 0: Xảy ra trên bộ định thời WDT time-out . bit 2 (PD): Bit cờ báo dị mất nguồn

− Giá trị 1:Cấp nguồn điện bởi cấu trúc lệnh CLRWDT .

− Giá trị 0: Thực hiện thiết lập bởi cấu trúc lệnh SLEEP. bit 1 (POR): bit dể RESET trậng thái nguồn khi chạy

− Giá trị 1:Khơng xảy ra RESET nguồn (được thiét lập bởi vi chương trình) .

− Giá trị 0:Xảy ra RESET nguồn(cần phải thiết lập bởi phần mềm sau khi RESET xảy ra)

bit 0 (BOR): Bit cho biết trạng thái RESETyếu nguồn

− Giá trị 1:Khơng xảy ra RESET yếu nguồn (được thiét lập bởi vi chương trình) . − Giá trị 0:Xảy ra RESET yếu nguồn(cần phải thiết lập bởi phần mềm sau khi

RESET xảy ra)

Ngồi ra Pic18 cũng cung cấp cho ta các cơng cụ phục vụ ngắt khác như : • INTx Pin Interrupts

TMR0 Interrupt

PORTB Interrupt-on-Change

Context Saving During Interrupts

Một phần của tài liệu đồ án : Thiết kế bộ điều khiển PID SỐ TRÊN NỀN VI ĐIỀU KHIỂN PIC (Trang 27 - 38)