Microchip
直播中

王静

8年用户 159经验值
私信 关注
[问答]

MCC Lin Driver 2.2从站的问题

我有一个关于MCC Lin Driver 2.2从机的问题:目标系统:PIC18F14K22(作为Lin从机)开发工具:MAPLAB X 4.05XC8 1.45MCC 3.45.1问题:无法检测到中断字段(.)成功跟踪程序,我在处理函数“LIN_breakCheck()”中的“RCSTAbits.FERR”之前发现。在中断函数“void EUSART_Receive_ISR(void)”中已经读取了RCREG”,这将导致比特“RCSTAbit.FERR”被重置,无法检测到中断字段(使用帧错误判断Lin总线中的中断字段)(注意:启用了EUART中断),因此我想知道它是否是b。MCC Lin驱动程序中的UG还是我在MCC中设置错误?下面是相关的三个函数:._Handler()、//**************************************//lin_rx_state_t LIN_handler(void){.lin_rx_state_t LIN_rxState=LIN_RX_IDLE;.uint8_t rxDataIndex=0;if(LIN_rxIn.==true){if(LIN_timerRunning==false){//Timeout LIN_rxState=L}开关(LIN_rxState){LIN_rx状态}开关(LIN_rxState){情况LIN_RX_IDLE:如果(LIN_EUSART_DataDataRead_DataDataRead(LIN_ELIN_EUSART_EUSART_DataDataReady>0){{{//开始计时器LIN_启动LIN_LIN_启动LIN_启动LIN_启动LIN_启动LIN_启动LIN_启动LIN_启动LIN_启动计时器LIN_启动LIN_StarLIN_StarLIN_启动计时器(READ_TIMEMEOU){){(REREAD);{(READ);{);}LIN_LICheck() ==true){//Read Break LIN_rxSt{LIN_RX_SYNC; }}否则{LIN_rxState=LIN_RX_RX_ERROR}}_断开{LIN_RX_RX_ERROR}}}___否则{LIN_RX_SYNC LIN_RX_SYNC; }}否则{LIN_LIN_rxState = LIN_RX_ERROR}}}断开}{{{{{{{LIN.{LIN.{LIN_LIN_RN_RX_RX_RX_RX_RX_RX_RX_ERR_ERR_SYNC SYNC}}}}}}}}}否则{{ffer[eusartRxHead++]=RCREG;if(sizeof(eusartRxBuffer)<=eusartRxHead){eusartRxHead=0;}eusartRxCount+;}//******************************//bool LIN_breakCheck(void){if(LIN_FERR 1){LIN_EUSART_Read return true;}返回false;}

回帖(2)

步雅芸

2020-3-17 10:43:42
同样的问题也让我头昏脑胀。所以如果你在MCC犯了错误,我也做了同样的事…(PIC18f45k80是我正在使用的。)我用手表浏览了代码,并验证我至少有来自母版的LIN奴隶中的东西,但是没有处理任何东西,因为正如您所发现的,中断从未被识别。在论坛上的一些搜索通过以下方式显示出来ead:http://www..hip.com/for./m986425.aspx.线程的末尾,dapo提出了相同的问题,然后说他们修复了……但不说如何。
举报

冯敬宇

2020-3-17 11:14:16
仍然存在问题,LIN_EUSART_DataReady-->PIR1bits.RCIF由于读取RCREG而只能保持3~4us的EUSART_Receive_ISR(void),这意味着函数LIN_handler()中的变量“LIN_EUSART_DataReady”的判断条件不稳定。RCIF是可能的(延迟和重置新变量),它能够检测大部分中断情况,并能够正确检测PID,但是根据AN2059,EUSART的接收设置应该是MCC中的“连续接收”,但是在MCC V3.45i中看不到i。我希望能得到MCC开发团队的支持,也有经验丰富的开发人员,谢谢!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分