Forum: Mikrocontroller und Digitale Elektronik Controller / Pc / Usart


von StewieGriffin (Gast)


Lesenswert?

Hallo,

ich habe diesen Code auf meinem ATmega8 ausprobiert und nutze dabei das 
"Debug Terminal" unter Windows 7.
Das Terminal zeigt mir auch im Abstand von 1 Sekunde immer neue Zeichen 
an, allerdings nur in Hex, Binär, Dec und etwas nicht lesbares in ASCII.
Meine Baudrate habe ich auf 9600 gesetzt, mein Quarz hat 8MHz. Ich 
erwarte eigentlich den Text "Das ist ein Test" in meinem Terminal.
Liege ich damit falsch oder ist noch etwas mehr dabei zu beachten?

#include <avr/io.h>
#include <stdio.h>
#define F_CPU 8000000UL
#include <util/delay.h>
#define Baud 9600


void uart_init(void)
{
UCSRB = (1 << TXEN);
UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);
UBRRL=0x05; // Baudrate festlegen
UBRRH=0x00; // Baudrate festlegen
}

int uart_send(unsigned char c)
{
while (!(UCSRA & (1<<UDRE)))
{
// mach nichts
}
//senden
UDR=c;
return 0;
}


void uart_write(char *s)
{
while(*s)
{
uart_send(*s);
s++;
}
}

int main(void)
{
uart_init();
while(1==1)
{
uart_write("Das ist ein Test\r\n");
_delay_ms(1000);
}
}

Mit freundlichen Grüßen,
SG

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

StewieGriffin schrieb:
> UBRRL=0x05; // Baudrate festlegen
> UBRRH=0x00; // Baudrate festlegen

 Damit bist du irgendwo zwischen 76.8KB und 80KB.
 Richtig ist 0x33.

von StewieGriffin (Gast)


Lesenswert?

Jetzt funktionierts, danke! :D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.