446_PIC18F系列MCU的中斷實現

grey_csdn發表於2020-11-05

         全部學習彙總: https://github.com/GreyZhang/PIC18F

         最近在PICF18的平臺上熟悉J1939的協議,第一個例子算是除錯完了,使用的最簡單的polling模式來實現的。但是如果想要讓J1939的協議棧處理的能力更好,實時性更好且設計更加簡單一些,需要使用中斷。

         這樣,我需要的中斷是CAN通訊的收發功能。

         看一下相關的文件:

         正好,我用到的兩個MCU相容性上基本上是一致的,中斷的用法看上去沒有太大的差異。

         狀態的判斷暫存器如下:

                  而中斷使能的暫存器如下:

         以上只是部分。

         中斷優先順序的配置部分如上,只有高低兩個優先順序。

         相應BUFFER的中斷使能也有一個專門的暫存器,這一系列的配置跟我接觸的比較多的PPC平臺其實也是差不多的。

         接下來,看看這個例子中相關程式碼:

         這裡是中斷的使能處理。

         看起來,這裡是有5個BUFFER的中斷處理。

         這是中斷的處理,上面是彙編的處理向量定義,呼叫下面的中斷ISR程式。之後,處理1939的中斷ISR服務。

         處理的類別分別是收發和錯誤。

         為什麼接收只有一箇中斷呢?

         其實,這裡的程式碼說得清楚,開啟了FIFO模式。

         上面差不多是ECAN的使用方式,差不多的驅動基礎已經瞭解了。後面,可以深入瞭解一下協議棧本身的功能。

相關文章