Re: 使用MCC產生的callback問題
|
||||
---|---|---|---|---|
版主
|
使用 MCC 的中斷處理最佳方式是是使用 MCC 所產生的 CallBack 方式。當然 CallBack 方式的處理方式是比較複雜一點,底下有一說明是如何宣告及使用 Callback 的函數指標宣告及用法。
有一份 "使用MCC mTouch 的設定,快速完成觸控按鍵實作指導手冊" 裡面有許多的範例就是使用 Callback 的方式來處理中斷功能的。摘錄書中一小段和使用 Timer 的 Callback 函數的方式:
B. 使用 Timer1 callback 函數方式
發表於: 2020/12/9 13:03
|
|||
|
Re: 使用MCC產生的callback問題
|
||||
---|---|---|---|---|
版主
|
剛剛已將中文使用手冊及範例傳到你的 e-mail 了。
發表於: 2020/12/9 13:15
|
|||
|
Re: 使用MCC產生的callback問題
|
||||
---|---|---|---|---|
資深會員
|
感謝版大還去找了範例來發給我...
不過callback的操作是沒什麼問題啦,我主要的問題是, 在callback裡的操作,限制至少是和在ISR內操作是一樣的 即不應轉跳,不應執行秏時的工作 以前的建議甚至是,進中斷後,做完必要的接收、狀態設定後就儘快離開,以免影響中斷的觸發 但在MCC裡一點這種提示都沒有,MCC中幾乎所有的範例都直接在callback裡執行動作,但做的都是些簡單的點LED功能(版大給的範例看起來也是改個IO狀態就離開了) ,如果這樣,那也不值得用callback做兩次轉跳,只為了不修改到MCC產生的code 以uart為例,要是在接收的callback中,直接把parser加在後面, 或是在Timer中,把一些定時執行的routine放進去,可能就會因秏時過長而影響中斷? XC8是會把isr的callback轉成inline嗎,不然怎麼敢做這麼多jump...?
發表於: 2020/12/9 16:05
|
|||
|
Re: 使用MCC產生的callback問題
|
||||
---|---|---|---|---|
版主
|
callback 方式是為了程式的完整性且容易修改,如果直接修改 MCC 所產生的中斷涵數那重新做 code generated 後,原先的中斷程式又會被改回。
使用 callback 當然會影響中斷的響應時間,當然你也可以直接在中斷涵數裡直接攔截中斷,寫你的處理程式,而不用理會 callback.
發表於: 2020/12/10 10:17
|
|||
|