446_PIC18F系列MCU的中斷實現

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

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

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

         看一下相關的文檔:

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

         狀態的判斷寄存器如下:

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

         以上只是部分。

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

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

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

         這裏是中斷的使能處理。

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

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

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

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

         其實,這裏的代碼說得清楚,開啓了FIFO模式。

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