Probleme mit UART-Ausgabe

Hallo,
ich bin gerade dabei, mich etwas tiefer in den UART einzuarbeiten und wollte eine serielle Ausgabe ohne Zuhilfenahme von Arduino-Bibliotheken realisieren. Den Code unten hab ich aus dem Atmega328p-Datasheet entnommen.
Leider funktioniert er nicht wie erwartet, d.h. er liefert beim seriellen Monitor gar nichts, und bei HTerm kommt nur Müll raus. Desweiteren kommt es ab und an zu Problemen beim Hochladen des Sketches.
Die Baudrate habe ich auf 9600 eingestellt und in HTerm die 2 Stop-Bits auch ausgewählt.

Könnt ihr mir bitte sagen, wo der Fehler liegt ?

#define FDSC 16000000UL
#define BAUD 9600
#define MYUBRR FDSC/16/BAUD-1


void USART_Init(unsigned int ubrr)
{
  /* Set baud rate */
  UBRR0H = (unsigned char)(ubrr>>8);
  UBRR0L = (unsigned char)ubrr;
  /* Enable receiver and transmitter */
  UCSR0B = (1<<RXEN0)|(1<<TXEN0);
  /* Set frame format: 8 data, 2 stop bits */
  UCSR0C = (1<<USBS0)|(3<<UCSZ00);
}

void USART_Transmit(unsigned char data)
{
  /* wait for empty transmit buffer */
  while (!(UCSR0A & (1<<UDRE0)))
  {
  /* Put data into buffer, sends the data */
    UDR0 = data;
  }
}

void setup() {
  // put your setup code here, to run once:
  USART_Init(MYUBRR);

}

void loop() {
  // put your main code here, to run repeatedly:
  USART_Transmit("Hallo Freunde");
}

Hab den Fehler gefunden. Muss ein Zeichen statt einem String übergeben :slight_smile:
Thema somit gelöst

Hi

Danke für die Lösung dieses Fuß-Weg :slight_smile:

MfG

UnoRookie:
Hab den Fehler gefunden. Muss ein Zeichen statt einem String übergeben :slight_smile:
Thema somit gelöst

Ein kompletter Sketch mit der Lösung fürs Forum wäre trotzdem schön.
Was hindert Dich übrigens eine Funktion, die ein Chararray und die Länge übernimmt und das dann sendet, zu implementieren?

Gruß Tommy

Tommy56:
Was hindert Dich übrigens eine Funktion, die ein Chararray und die Länge übernimmt und das dann sendet, zu implementieren?

...oder Hardware Serial.write zu verwenden. Das gibt es schon in beiden Varianten: 1 Zeichen, oder einen Text gegebener Länge.