PIC 接收 UART 被覆盖,读取速度不够快?

问题描述

我正在尝试从 MODBus 主站读取一些串行数据,到目前为止已经设法让我的 PIC 使用从 MCC 创建的函数接收数据,但是当主站发送太多数据时我无法读取它以足够快的速度从 UART 中输出,以便为传入的新数据腾出空间。

我对此很陌生,并且相当确定我正在研究那些有明显答案的事情,但我不知所措。

目前我的测试程序看起来像:

printf("Initalised\r\n\n");

int Counter = 0;
 
// Set RS485 to receive.
RXMode();
    
while(1)
{
    if(EUSART1_is_rx_ready()){
        Counter++;           

        printf("Triggered: %i \r\n\n",Counter);

        while(EUSART1_is_rx_ready()){
                // While there's something to read out
                rxData = EUSART1_Read();
                printf("eusart1RxCount: %d \r\nData: 0x%02x \r\n\n",eusart1RxCount,rxData);                
        }

    }

}

发送:0x11 0x10 0x00 0x01 0x00 0x02 0x04 0x00 0x0A 0x01 0x02 0xC6 0xF0 产生以下输出:

Initalised

Triggered: 1

eusart1RxCount: 5
Data: 0x11

eusart1RxCount: 11
Data: 0x01

eusart1RxCount: 10
Data: 0x02

eusart1RxCount: 9
Data: 0xc6

eusart1RxCount: 8
Data: 0xf0

eusart1RxCount: 7
Data: 0x02

eusart1RxCount: 6
Data: 0x04

eusart1RxCount: 5
Data: 0x00

eusart1RxCount: 4
Data: 0x0a

eusart1RxCount: 3
Data: 0x01

eusart1RxCount: 2
Data: 0x02

eusart1RxCount: 1
Data: 0xc6

eusart1RxCount: 0
Data: 0xf0

第一个字节是正确的,但是当它读取第二个字节时,它实际上是在读取发送的第 10 个字节,而第 3 个字节正在读取发送的第 11 个字节......等

希望有人能帮忙!我已经花了一整天的时间。非常感谢任何建议,我觉得我在这里的学习曲线很陡峭。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)