Pages2

Tuesday, March 8, 2011

External Interrupt in PIC


Gangguan berlaku dalam kehidupan berlaku dengan izin Tuhan, anda kena redha. Sebabnya anda hamba ciptaan, yang mencipta adalah Tuhan. Contohnya, anda sedang makan roti canai, panggilan telefon adalah gangguan, namun anda layan, berhenti makan seketika dan selepas bercakap2, dan sambung balik kerja anda memakan roti canai.

Dan tidak ketinggalan ganguan luaran (external interrupt) boleh anda lakukan ketika pemprograman dalam PIC microcontroller. Anda pencipta kepada software dan anda tidak mahu hardware ciptaan anda sengal semacam je. Tidak kira ganguan berlaku pada bahagian masa yang mana, program anda masih boleh memastikan PC(Program Counter) program menangkapnya.

Misalnya, anda ada main program loop yang berjalan berterusan dan kemudian push button ditekan oleh pengguna dan anda ingin main program loop melayannya.
Ada dua pilihan,

1. Anda membuat loop yang secara berterusan menyemak port input sama ada terdapat perubahan high to low atau low to high, TETAPI tidak akan ada JAMINAN main program loop anda cukup pantas untuk melihat suis terjadi tepat pada masa yang sama main program loop sedang menjejaki port input tersebut.
contoh:

if(PORTA.F0)c++;
//kod yang panjang.
.
.
.
.
.

2.Guna kaedah external interrupt.
Mereka bergerak di belakang main program, dan mereka berkuasa untuk menghentikan sementara main loop dan melayan kehendak rutin interrupt(ISR) yang telah anda sediakan secara berasingan di dalam kod anda. Setelah selesai, mereka menyerahkan PC kepada main loop, dan mereka bergerak di belakang main loop sentiasa. Ia sangat setia. Anda tidak bakal akan dipermainkan oleh interrupt.
contoh:
.
.
.
.
.
void interrupt_INT0(){
LED = 1;
Delay_ms(200);//To prevent switch bounce
Delay_ms(1000);//LED on
INTCON.INT0IF = 0;//Clear flag
}


void main(){
init_sys_pic();
while(1)
.
.
.
.
.
.


PIC 16 series ada 1 external interrupt. INT0.
PIC 18 series ada 3 external interrupt. INT0, INT1 dan INT2.

Document External Interrupt PIC18F
Contoh C programming, guna 3 external interrupt, dan melibatkan priority.

No comments:

Post a Comment