全部学习汇总: https://github.com/GreyZhang/PIC18F
最近在PICF18的平台上熟悉J1939的协议,第一个例子算是调试完了,使用的最简单的polling模式来实现的。但是如果想要让J1939的协议栈处理的能力更好,实时性更好且设计更加简单一些,需要使用中断。
这样,我需要的中断是CAN通信的收发功能。
看一下相关的文档:
正好,我用到的两个MCU兼容性上基本上是一致的,中断的用法看上去没有太大的差异。
状态的判断寄存器如下:
而中断使能的寄存器如下:
以上只是部分。
中断优先级的配置部分如上,只有高低两个优先级。
相应BUFFER的中断使能也有一个专门的寄存器,这一系列的配置跟我接触的比较多的PPC平台其实也是差不多的。
接下来,看看这个例子中相关代码:
这里是中断的使能处理。
看起来,这里是有5个BUFFER的中断处理。
这是中断的处理,上面是汇编的处理向量定义,调用下面的中断ISR程序。之后,处理1939的中断ISR服务。
处理的类别分别是收发和错误。
为什么接收只有一个中断呢?
其实,这里的代码说得清楚,开启了FIFO模式。
上面差不多是ECAN的使用方式,差不多的驱动基础已经了解了。后面,可以深入了解一下协议栈本身的功能。