attiny uart传输失败

时间:2014-04-12 12:11:26

标签: c uart attiny

我试图在attiny2313的uart上传输一个字节,但是传输在循环中挂起,等待UDR可用。

我正在使用内部8MHz时钟。 Uart配置为9600baud 8bit 1stopbit

我的初始化代码如下:

#define F_CPU 8000000UL 
#define USART_BAUDRATE 9600UL
#define USART_UBBR_VALUE ((F_CPU / (USART_BAUDRATE << 4)) - 1) 

UBRRL = (uint8_t)USART_UBBR_VALUE;
UBRRH = (uint8_t)(USART_UBBR_VALUE >> 8); 
UCSRB = ((1 << TXEN) | (1<<RXEN));
UCSRC = ((1 << UCSZ1) | (1 << UCSZ0));

初始化后,我使用sei()启用全局中断。

传输:

while (!(UCSRA & (1<<UDRE)));
UDR = 'B';

它挂在while循环上,当我从设备上移除电源时,它最后在最后时刻循环中断并且发出B。

我尝试在init之后添加200ms的延迟但是没有工作。

我对atmega88使用类似的代码,这很好用。 有人知道为什么它会停留在while循环中吗?

0 个答案:

没有答案