Al ejecutar el siguiente código en mi Arduino Micro, solo se imprime la primera línea:
void crash(void) {
abort();
}
void setup(void) {
Serial.begin(9600);
while(!Serial.available()) {
Serial.println("Please input something to begin");
delay(500);
}
Serial.println("First"); // Gets printed
delay(500); // Make sure Arduino is done writing to the serial connection
Serial.println("Second"); // Doesn't get printed
crash(); // Makes the Arduino device crash
}
void loop(void) {
}
Me gustaría hacer algo como esto para que se imprima la segunda línea, antes de que el dispositivo se bloquee:
void setup(void) {
Serial.begin(9600);
while(!Serial.available()) {
Serial.println("Please input something to begin");
delay(500);
}
Serial.println("First"); // Gets printed
delay(500); // Make sure Arduino is done writing to the serial connection
Serial.println("Second"); // Doesn't get printed
wait_for_serial_write(); // Not really a function
crash(); // Makes the Arduino device crash
}
void loop(void) {
}
¿Qué función puedo usar en lugar de wait_for_serial_write
?
La razón por la que quiero hacer esto es porque mi Arduino falla "aleatoriamente", por lo que puse algunas Serial.println
declaraciones de depuración que me gustaría ver antes de que el dispositivo falle.
Tampoco puedo usarlo delay
en mi código real ya que el bloqueo ocurre durante una interrupción del temporizador, donde delay
no funciona.
Serial.flush()
es exactamente lo que estás buscando.
kevin marca
crash
exactamente?Tiilo
abort
la función que "Anula el proceso actual, produciendo una terminación anormal del programa". No sé cómo se implementa, pero no se ejecuta ningún código ni en el temporizador ni en la función de bucle. El Arduino tampoco se reinicia.