Escribí una función para conectarme a través de UART e imprimir una cadena con fines de depuración. Pero mi lógica no se suma de alguna manera ... Veo la línea "Número aleatorio" impresa en la consola pero increíblemente rápida ... no importa lo que agregué para un valor de _delay_ms, no es utilizable. ¿Me perdí algo?
¿Por qué mi función de demora no influye en la salida del terminal serie?
void initUSART(void) {
#define BAUDRATE ((F_CPU) / (BAUD * 8UL)-1) // Set Baud Rate Value for UBRR
// Set register
UBRR0H = (BAUDRATE >> 8);
UBRR0L = BAUDRATE;
UCSR0A |= (1 << U2X0);
// Enable USART transmitter and receiver
UCSR0B = (1 << TXEN0) | (1 << RXEN0);
// Set 8 data bits and 1 stop bit
UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
}
void transmitByte(uint8_t data) {
// Wait for empty transmit buffer
loop_until_bit_is_set(UCSR0A, UDRE0);
UDR0 = data;
}
void printString(const char myString[]) {
uint8_t i = 0;
while (myString[i]) {
transmitByte(myString[i]);
i++;
}
}
int main(void)
{
setup();
randomSeed(adcRead(0));
while (1)
{
printString("Random Number:\n");
_delay_ms(100000);
}
return (0);
}
Cuando uso \r\n
al final de la cadena, la salida se vuelve realmente extraña: