บทที่ 5 interrupt

33
บบบบบ 5 Interrupt บบบบบบบบบบ บบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบ

Upload: ebony

Post on 22-Feb-2016

75 views

Category:

Documents


1 download

DESCRIPTION

บทที่ 5 Interrupt. เทอดศักดิ์ ลิ่วหาทอง สาขาวิชาอิเล็กทรอนิกส์ สถาบันเทคโนโลยีพระจอมเกล้าเจ้าคุณทหารลาดกระบัง. Interrupt. ปัญหาของการเขียนโปรแกรมติดต่อกับอุปกรณ์ต่อพ่วงจำนวนมากคือ ไม่ทราบเวลาที่แน่นอนที่อุปกรณ์ต่อพ่วงเหล่านั้นต้องการติดต่อกับ PIC - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: บทที่  5 Interrupt

บทท 5Interrupt

เทอดศกด ลวหาทองสาขาวชาอเลกทรอนกส

สถาบนเทคโนโลยพระจอมเกลาเจาคณทหารลาดกระบง

Page 2: บทที่  5 Interrupt
Page 3: บทที่  5 Interrupt

Interrupt

• ปญหาของการเขยนโปรแกรมตดตอกบอปกรณตอพวงจำานวนมากคอ– ไมทราบเวลาทแนนอนทอปกรณตอพวงเหลานน

ตองการตดตอกบ PIC– ทำาให PIC ตองทำาการวนตรวจสอบตลอดเวลาวาเมอไหรอปกรณตอพวงตองการทจะตดตอดวย

– เทคนคทใชในการตรวจสอบมอย 2 เทคนคคอ• Polling• Interrupt

Page 4: บทที่  5 Interrupt

Polling

• Polling เปนการเขยนโปรแกรมเพอตรวจสอบโลจกทไดรบจากอปกรณตอพวงตลอดเวลาวาเมอไหรทอปกรณตอพวงตองการทจะตดตอดวย

• ตวอยางเชนการตรวจสอบการกดสวทช โปรแกรมจะตองตรวจสอบตลอดเวลาวาเมอไหรทผใชกดสวทช

• ขอดของ Polling คอเขยนโปรแกรมงาย และตรวจสอบการทำางานของโปรแกรมไดงาย

• ขอเสยคอ PIC จะตองเสยเวลาในการตรวจสอบการกดสวทชตลอดเวลาทำาใหไมสามารถทำางานอยางอนได

while(1){ if(PORTBbits.RB0==0) { i++; if(i==8) i=7; PORTD = LED[i]; Delay10KTCYx(100); } if(PORTAbits.RA5==0) { i--; if(i<0) i=0; PORTD = LED[i]; Delay10KTCYx(100); }}

RB0

Vcc

Page 5: บทที่  5 Interrupt

Interrupt

• Interrupt เปนวงจรดจตอลทอยใน PIC ทำาการตรวจสอบโลจกทไดรบจากอปกรณตอพวง

• เมอวงจรตรวจพบวาอปกรณตอพวงตองการ ตดตอดวยกจะไปเรยกโปรแกรมทเหมาะสมตอไป

(Interrupt Service Routine ISR)Interrupt Service Routinei++;if(i==8) i=7;PORTD = LED[i];Delay10KTCYx(100);

INT0

Vcc

Page 6: บทที่  5 Interrupt

Interrupt Source

• สญญาณ Interrupt ของ PIC18F8722 มดงน• TMR0, TMR1, TMR2, TMR3, TMR4 เปน

สญญาณ Interrupt ทเกดจากวงจร Timer ทอย ภายใน PIC

• RB เปนสญญาณ Interrupt ทเกดจากการตรวจ สอบวามบทใดบทหนงของ RB<0:7> มการเปลยน

สถานะ• INT0, INT1, INT2, INT3 เปนสญญาณ Interrupt ทเกดจากอปกรณตอพวงภายนอกสงสญญาณ

มาบอก PIC วาตองการตดตอดวย

Page 7: บทที่  5 Interrupt

Interrupt Priority

• เนองจาก PIC สามารถรบสญญาณ Interrupt ไดหลายสญญาณ

• ดงนนจงมโอกาสทจะมสญญาณ Interrupt หลาย สญญาณสงไปให PIC พรอมๆกน หรอในเวลาท

ใกลเคยงกน• ตวอยางเชนผใชกดสวทชเพอสงสญญาณ INT0

ไปบอก PIC วาตองการตดตอดวย พรอมกบTMR0 สงสญญาณ Interrupt ไปบอก PIC ใหอาน

คาอณหภมจาก Thermal Sensor• ดงนนจะตองมวธการเพอตดสนใจวาจะให PIC

ทำาการตดตอกบผใชกอน หรอจะใหอานคาจากThermal Sensor กอน

Page 8: บทที่  5 Interrupt

Interrupt Priority

• ถา PIC ตดสนใจตดตอกบผใชกอนทจะไปอานคาจากThermal Sensor แสดงวา INT0 ม Priority สงกวาTMR0

• แตถา PIC อานคาจาก Thermal Sensor กอนตดตอกบผ ใช แสดงวา TMR0 ม Priority สงกวา INT0

• ถามสญญาณ Interrupt ทม Priority สง (High Priority) PIC จะไปเรยกโปรแกรมทเกบไวใน Address ท 0008H

• แตถามสญญาณ Interrupt ทม Priority ตำา (Low Priority) PIC จะไปเรยกโปรแกรทเกบไวใน Address ท0018H

Page 9: บทที่  5 Interrupt

Interruptvoid main (void){

กำาหนดคณสมบตของI/O Port, ADC, Timer

และ Interrupt กำาหนดคาเรมตนของ

I/O Port

while (1){

คำาสงท 1; คำาสงท 2;

: คำาสงท N

}}

0018HTimer Interrupt (Low Priority Interrupt)

อานคาจาก Thermal Sensor{

คำาสงท 1; คำาสงท 2; คำาสงท 3;

: คำาสงท N

}

0008HINT0 Interrupt (High Priority Interrupt)

ตดตอกบผใช{

คำาสงท 1; คำาสงท 2;

: คำาสงท N

}

Page 10: บทที่  5 Interrupt
Page 11: บทที่  5 Interrupt
Page 12: บทที่  5 Interrupt

Interrupt Bit

• สญญาณ Interrupt แตละสญญาณม Flag, Enable และ Priority Bit เพอใชควบคมการทำางานดงน

• Flag Bit (TMR0IF, TMR1IF, TMR2IF, TMR3IF, TMR4IF, RBIF, INT0IF, INT1IF, INT2IF, INT3IF) ถา

เปน 1 คอตรวจสอบพบสญญาณ Interrupt ถาเปน0 คอไมพบสญญาณ Interrupt

• Enable Bit (TMR0IE, TMR1IE, TMR2IE, TMR3IE, TMR4IE, RBIE, INT0IE, INT1IE, INT2IE, INT3IE) ถา

เปน 1 คอ Enable ถาเปน 0 คอ Disable

Page 13: บทที่  5 Interrupt

Interrupt Bit

• Priority Bit (TMR0IP, TMR1IP, TMR2IP, TMR3IP, TMR4IP, RBIP, INT0IP, INT1IP, INT2IP, INT3IP) ถา

เปน 1 คอตงใหเปน High Priority ถาเปน 0 ตงให เปน Low Priority

Page 14: บทที่  5 Interrupt

Interrupt Bit

• นอกจาก Flag, Enable, และ Priority ทสญญาณInterrupt แตละตวตองมแลว ยงมบททใชควบคม

การทำางานทงหมดของสญญาณ Interrupt คอ• IPEN (Interrupt Priority Enable) ถาเปน 1

เปนการ Enable การทำางานแบบ Priority ถาเปน 0 คอไมมการทำางานแบบ Priority

Page 15: บทที่  5 Interrupt

IPEN=1

• GIEH (Global Interrupt Enable High) ถาเปน 1 จะ Enable สญญาณ Interrupt ทกตวทม Priority

Bit = 1 ถาเปน 0 จะ Disable สญญาณ Interrupt ทกตวทม Priority Bit = 1

• GIEL (Global Interrupt Enable Low) ถาเปน 1 จะEnable สญญาณ Interrupt ทกตวทม Priority Bit = 0 ถาเปน 0 จะ Disable สญญาณ Interrupt

ทกตวทม Priority Bit = 0

Page 16: บทที่  5 Interrupt

IPEN=1

• ถา Flag Bit ของสญญาณ Interrupt แบบ High Priority เทากบ 1 PIC จะไปเรยกโปรแกรมทAddress 0008H

• ถา Flag Bit ของสญญาณ Interrupt แบบ Low Priority เทากบ 1 PIC จะไปเรยกโปรแกรมทAddress 0018H

Page 17: บทที่  5 Interrupt

IPEN=0

• PEIE (Peripheral Interrupt Enable) ถาเปน 1 จะEnable สญญาณ Interrupt จากอปกรณตอพวง

ทกตว ถาเปน 0 จะ Disable สญญาณ Interrupt จากอปกรณตอพวงทกตว

• GIE (Global Interrupt Enable) ถาเปน 1 จะ Enable สญญาณ Interrupt ทกตว ถาเปน 0 จะ Disable สญญาณ Interrupt ทกตว

• เมอ Flag Bit ของสญญาณ Interrupt ตวใดตวหนง เปน 1 PIC จะไปเรยกโปรแกรมท Address 0008H

Page 18: บทที่  5 Interrupt

Interrupt Respond

• เมอ Flag Bit = 1 และ PIC เรยกใชโปรแกรม Interrupt Service Routine (ISR) แลว จะทำาให GIEH = 0, GIEL = 0 ( ถา IPEN = 1) หรอ GIE = 0 ( ถา IPEN = 0)

• เพอปองกนไมให PIC รบสญญาณ Interrupt อนอก• สญญาณ Interrupt แบบ High Priority สามารถ

แทรกการทำางานของ Interrupt แบบ Low Priority แต สญญาณ Interrupt แบบ Low Priority ไมสามารถ

แทรกการทำางานของ Interrupt แบบ High Priority

Page 19: บทที่  5 Interrupt

Interrupt Respond

• เนองจาก PIC มสญญาณ Interrupt อยหลาย สญญาณ ดงนนเมอ ISR ถกเรยกใชแลว โปรแกรม

จะตองทำาการตรวจสอบวา เปนสญญาณ Interrupt ชนดใด โดยการตรวจสอบวา Flag Bit ของ

Interrupt ตวใดเปน 1• เพอปองกนไมให PIC รบสญญาณ Interrupt อนอก• เมอออกจาก ISR แลว GIE = 1 ( หรอ GIEH=1,

GIEL=1) โดยอตโนมตเพอให PIC สามารถรบ สญญาณ Interrupt ตวใหมได

Page 20: บทที่  5 Interrupt
Page 21: บทที่  5 Interrupt
Page 22: บทที่  5 Interrupt
Page 23: บทที่  5 Interrupt
Page 24: บทที่  5 Interrupt
Page 25: บทที่  5 Interrupt
Page 26: บทที่  5 Interrupt
Page 27: บทที่  5 Interrupt
Page 28: บทที่  5 Interrupt
Page 29: บทที่  5 Interrupt
Page 30: บทที่  5 Interrupt
Page 31: บทที่  5 Interrupt
Page 32: บทที่  5 Interrupt
Page 33: บทที่  5 Interrupt