全部學習彙總: https://github.com/GreyZhang/PIC18F
最近在PICF18的平臺上熟悉J1939的協議,第一個例子算是調試完了,使用的最簡單的polling模式來實現的。但是如果想要讓J1939的協議棧處理的能力更好,實時性更好且設計更加簡單一些,需要使用中斷。
這樣,我需要的中斷是CAN通信的收發功能。
看一下相關的文檔:
正好,我用到的兩個MCU兼容性上基本上是一致的,中斷的用法看上去沒有太大的差異。
狀態的判斷寄存器如下:
而中斷使能的寄存器如下:
以上只是部分。
中斷優先級的配置部分如上,只有高低兩個優先級。
相應BUFFER的中斷使能也有一個專門的寄存器,這一系列的配置跟我接觸的比較多的PPC平臺其實也是差不多的。
接下來,看看這個例子中相關代碼:
這裏是中斷的使能處理。
看起來,這裏是有5個BUFFER的中斷處理。
這是中斷的處理,上面是彙編的處理向量定義,調用下面的中斷ISR程序。之後,處理1939的中斷ISR服務。
處理的類別分別是收發和錯誤。
爲什麼接收只有一箇中斷呢?
其實,這裏的代碼說得清楚,開啓了FIFO模式。
上面差不多是ECAN的使用方式,差不多的驅動基礎已經瞭解了。後面,可以深入瞭解一下協議棧本身的功能。