打印
[AVR单片机]

请教一下ATmega128串口0 的问题

[复制链接]
2493|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
是这样的,我的串口0和串口1都在用,但是串口0的接受中断总有问题,发数据时进入中断了但是没有接收到数据而且UCSR0A寄存器的值为70,帧错误标志位一直是1,
while(!(UCSR0A & (1<<RXC0)));
RX0_data[1]=UDR0;
TX_data(RX0_data[1]);这段程序返回的数据一直是00,并且在for循环中
for(i=0;i<11;i++)
        {},第二次进入循环就在while循环里卡死了,
串口初始化是这样的;
void usart0_init(void)
{   //UCSR0A=0x00;
    UBRR0L = ((F_CPU0/ 16) / (BAUDRATE0) - 1) % 256; //设置波特率寄存器低位字节
    UBRR0H = ((F_CPU0/ 16) / (BAUDRATE0) - 1) / 256; //设置波特率寄存器高位字节
    UCSR0B = (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0); //允许发送接收  
    UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); //8位数据
}和串口1的初始化程序一样,UCSR0A=0x00;
这一句写进去寄存器值也没什么变化所以注释了。
开机UCSR0A=60,UCSR1A=20
然后分别给串口0,1发送数据,UCSR0A=70,UCSR1A=60
串口1发的数据返回正常,串口0返回00;

看了很多资料,用的isp下载器,但是把下载器拔下在重新上电还是这样

使用特权

评论回复

相关帖子

沙发
我有一只小可爱|  楼主 | 2019-7-12 09:33 | 只看该作者
两串口都改为把接受的字节返回,串口1正常工作,串口0还是返回00,串口因为在主函数里发寄存器的值所以本身寄存器为60,接收一次数据后变成70

Bit       7        6        5      4       3          2             1        0
         RXCn TXCn UDREn   FEn   DORn   UPEn   U2Xn   MPCMn
读 / 写  R     R/W      R        R       R        R         R/W     R/W
初始值 0 0 1 0 0 0 0 0
这里把寄存器附上

使用特权

评论回复
板凳
我有一只小可爱|  楼主 | 2019-7-12 09:34 | 只看该作者
熔丝位配置BF C9 FF

使用特权

评论回复
地板
我有一只小可爱|  楼主 | 2019-7-12 10:09 | 只看该作者
又试了下,问题就是FE0这一位一直提示帧错误,但是波特率也没问题,发送OK,串口1收发都OK

使用特权

评论回复
5
我有一只小可爱|  楼主 | 2019-7-12 13:59 | 只看该作者
没有大神指点一下吗,测了一下无数据时的串口,R和T一个高电平一个低电平

使用特权

评论回复
6
我有一只小可爱|  楼主 | 2019-7-12 14:24 | 只看该作者
串口0的r一直是低电平,按说没有起始位的,但是还是可以进入中断,越来越懵逼了

使用特权

评论回复
7
叶春勇| | 2019-7-12 16:36 | 只看该作者
检查硬件电路呀,帧错误,都这么明显了。
还有引脚配置都正确吧?
串口正常不发送都是高电平。一直低电平要查电路,或者烧了。

使用特权

评论回复
8
我有一只小可爱|  楼主 | 2019-7-12 23:07 | 只看该作者
叶春勇 发表于 2019-7-12 16:36
检查硬件电路呀,帧错误,都这么明显了。
还有引脚配置都正确吧?
串口正常不发送都是高电平。一直低电平要 ...

因为串口0和ISP下载复用,所以就想着是不是下载器的关系,但是板子没有留jtag口,没法禁止spi,有几次ISP下载器插着板子上,把线揉了揉自己就好了,再试又不行了,拔了也不行,在考虑是不是是能spi的时候rxd内部拉低了

使用特权

评论回复
9
叶春勇| | 2019-7-13 08:19 | 只看该作者
我有一只小可爱 发表于 2019-7-12 23:07
因为串口0和ISP下载复用,所以就想着是不是下载器的关系,但是板子没有留jtag口,没法禁止spi,有几次ISP ...

我用过mega128,isp下载不影响的。
要不下载后,拔掉isp,然后重启。应该不影响。另外串口设计的时候串电阻,单片机很脆弱的。

使用特权

评论回复
10
我有一只小可爱|  楼主 | 2019-7-13 09:58 | 只看该作者
叶春勇 发表于 2019-7-13 08:19
我用过mega128,isp下载不影响的。
要不下载后,拔掉isp,然后重启。应该不影响。另外串口设计的时候串电 ...

拔掉再上电还是一样,不知道哪里的原因rxd一直低电平,下载器下载的时候就OK,示波器看正常接收,然后就一直是低电平,配置和串口1用的一样的函数,串口1就OK。中间碰过不知道哪,rxd正常高电平了就好了,重新上电又变成低电平

使用特权

评论回复
11
我有一只小可爱|  楼主 | 2019-7-13 10:46 | 只看该作者
解决了,配置问题

使用特权

评论回复
评论
funny_2016 2021-3-23 21:55 回复TA
请问是配置了什么?什么原因导致的呀?能详细说一下嘛?谢谢? 
12
zwsam| | 2022-6-1 09:09 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

27

帖子

1

粉丝