微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AVR - 带有 UART MSPI 的复合视频 - 在 main 和中断中的工作方式不同

如何解决AVR - 带有 UART MSPI 的复合视频 - 在 main 和中断中的工作方式不同

我正在使用 UART MSPI 在 Atmega1284 上生成 PAL 信号。我已经完成了 main 函数中的所有代码,但是当我将代码移动到中断中时,UART 的行为有所不同。

这里是渲染线的代码

UCSR0B = (1<<TXEN0);
while (--iter) {
    while ((UCSR0A & (1<<UDRE0)) == 0) ;

    UDR0 = framebuf[videoPtr];
    //UDR0 = 0;
    videoPtr++;
}
UCSR0B = (0<<TXEN0);

在结果中,我得到了与正确显示的字节交错的垂直白条。但是,当我直接为 UDR0 赋值时,而不是通过 framebuf 数组,我得到了像素宽和两个像素宽的条。从中断运行时,UART 似乎具有不同的帧格式,但我无法在数据表中找到其行为不同的原因。

这是 UART 初始化代码

UBRR0 = 0;

// output pins
DDRD |= (SYNC_PIN)|(PIXEL_PIN);
DDRB |= (MSPIM_SCK_PIN);
     
UCSR0A = (1<<TXC0); // Transmitter enable
UCSR0C |= (1<<UMSEL00)|(1<<UMSEL01)|(0<<UCPOL0);  // Master SPI mode

UBRR0 = 0;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。