问题描述
我正在使用 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 (将#修改为@)