請教關於中斷問題
|
||||
---|---|---|---|---|
新會員
|
void _ISR _T2Interrupt(void) <--------程式碼
{ IS=(ISAD*81380-41666667); if (state==1) error=Imax*sinx-IS; else error=-Imax*sinx-IS; if (error>error_com) { if (LATEbits.LATE1==1) { LATEbits.LATE0=0; LATEbits.LATE1=1; } else { LATEbits.LATE0=0; LATEbits.LATE1=0; for( i=0; i<Delaycount; i++ ); LATEbits.LATE0=0; LATEbits.LATE1=1; } } else if(error<-error_com) { if (LATEbits.LATE0==1) { LATEbits.LATE0=1; LATEbits.LATE1=0; } else { LATEbits.LATE0=0; LATEbits.LATE1=0; for( i=0; i<Delaycount; i++ ); LATEbits.LATE0=1; LATEbits.LATE1=0; } } IFS0bits.T2IF=0; } <--------------------(問題2) 問題: 1.正常的中斷副程式,應該是在中斷旗標清為0之後,當中斷副程 式結束後應該是會跳回中斷副程式之前執行的程式,可是上面 的程式在run完中斷副程式後,並不會跳出而是重新再run中斷 副程式(之前試過可能說是因為中斷時間太短導致在中斷程式 執行的過程中又再度觸發中斷旗標,所以後萊才將中斷旗標清 為0,寫在最後一行,發現結果還是不行). 2.當用單步執行模擬時,當run到程式中箭號的地方時,並不會馬 上跳回,而是會delay大概4usec(Fcy=29.4912MHz)的時間. 請各位先進前輩指導一下,謝謝.
發表於: 2007/2/28 15:48
|
|||
|