我正在尝试在ATMEGA8515和 Arduino Uno之间建立基本的串行通信链路。我是与正确 com 端口的 Putty 连接,我可以看到 Arudino 打印“got:got:”,有两个延迟。所以问题是 Arduino 正在识别正在传输的东西但没有得到任何字符。
我一直在尝试在我的主循环中使用数据表第 143 页上的传输代码:
int main(void)
{
//Baud is 9600
USART_Init(USART_BAUDRATE);
//init interrupt
sei();
DDRA |= _BV(DDA6);
while(1)
{
USART_Transmit("a\n");
_delay_ms(5000);
}
}
并尝试使用从此处获取的此代码接收序列:
char val; // variable to receive data from the serial port
void setup() {
Serial.begin(9600); // start serial communication at 9600bps
}
void loop() {
if( Serial.available() ) // if data is available to read
{
val = Serial.read(); // read it and store it in 'val'
Serial.print("got:"+val);
}
delay(100); // wait 100ms for next reading
}
这导致“got:”每 5 秒打印两次:
我将一个 LED 连接到 AVR 的 TX 线上,可以看到它何时发射。AVR 的 TX 线连接到 arduino 的 RX 线和 AVR RX 的相同方式。
有什么想法为什么我看不到我要传输的字符?
一件奇怪的事情是 Arduino 上的 RX 灯从不闪烁,这使它看起来什么都没有,但 TX 在打印到 com 端口时总是闪烁。
编辑:这是我用于传输的代码:
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}
并将我的主要代码更改为USART_Transmit("a");
我还尝试 Serial.print(val, HEX);
了打印 0 的 arduino。