我使用UART将ESP8266与ATmega8连接。我将一些值从ESP8266发送到ATmega8,在此基础上,ATmega8向ESP8266发送了一些值,并且工作正常,但是几个小时后,ATmega8确实在将ATmega8重置为正常后发送了数据,但几小时后又再次发送数据停止发送数据。
//ESP8266 CODE
Serial.write(post_data);
delay(2000);
String port_status = "";
if (Serial.available()) {
incomingByte = Serial.read();
delay(2000);
if(incomingByte == 70) {
pin_status = '0';
}
if(incomingByte == 79) {
pin_status = '1';
}
}
//ATMEGA8 CODE
int main() {
unsigned char reccive;
unsigned char ch;
while(1) {
while(! (UCSRA & (1<<RXC)));
{
reccive = UDR;
ch = ' ';
if(reccive == 'A') {
reccive = ' ';
_delay_ms(500);
ch = 'O';
while(! (UCSRA & (1<<TXC)));
{
UDR = 'O';
_delay_ms(500);
}
}
else {
ch = 'F';
while(! (UCSRA & (1<<TXC)));
{
UDR = 'F';
_delay_ms(500);
}
}
}
}
}
可能是您的串行缓冲区已满。实现串行刷新功能或看门狗功能,以软复位(非常肮脏的方式)Arduino。如果您可以将此日志记录到某个地方,请尝试查看它是否在一定时间后总是停止,或者是否是随机的。这样,您可能会在问题上产生更多的见解。