Microchip
直播中

郑广荣

7年用户 204经验值
私信 关注
[问答]

如何让pic18lf8490 ausart接收机正确初始化?

我有一些奇怪的问题,AUSART接收机侧接收5伏UART信号使用PIC18LF8490与8MHz内部时钟运行,我认为这个问题与AUSART模块的初始化有关。我使用的是异步模式的AASART接收器和发射机,我将波特率设置为19200。通过AUSART发送数据可以正常工作,只要接收器引脚连接到5伏,但一旦我把AUSART的接收引脚连接到uart信号,我想接收PIC就什么都不做。似乎它总是重置自身。我敢打赌,当我初始化AXART模块时,我做了一些错误的事情。我现在使用下面的C代码来初始化AUSART模块:如果我不启用AUSART接收器,重置问题会立即消失,所以问题与AUSART的接收器端有关。我在pro模式下使用xc8来编译这个模块。发送19200波特完美的作品,但接收是不工作了。我正在使用接收中断把接收到的数据变成一个缓冲区,下面也用C写成XC8:我在这里丢失了什么?我已经阅读了从数据表中可以找到的关于异步模式下的AUSART模块的所有内容,以及关于PORTG的所有内容,并且似乎默认情况下没有其他外围设备试图驱动TX2和RX2引脚。

回帖(6)

杨玲

2019-10-30 13:22:52
UART无法使PIC复位。请确保您已经禁用了RX管脚上的任何模拟特性。请查看RCON寄存器,并尝试确定复位的原因(如果它实际上正在复位,而不是由于软件错误而跳转到地址0)。
举报

王焕树

2019-10-30 13:40:28
您的中断代码从不检查“.”变量中是否有空间。您可以很容易地溢出它,并捣毁RAM的其余部分。噢,没想到您正在进行检查。在删除“strcat()”指令后,我仍然会重复您的测试。
举报

施稚惇

2019-10-30 13:54:18
这个问题与硬件和软件的组合有关。我删除了PORTG=0命令,此后代码开始工作,但是后来在uart的发送端出现了损坏,尤其是在发送小写字母时。我设法通过将波特率降低到9600而不是使用19200波特来解决发送损坏,所以看来我的PCB不适合设计用于更高速的串口通信,这是否可以像9600波特发送通过罚款,但19200不是?
举报

杨玲

2019-10-30 14:14:05
你使用内部振荡器吗?如果是这样的话,UART通信可能不够精确。
举报

更多回帖

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