如何解决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 举报,一经查实,本站将立刻删除。