Hallo,

das folgende Skript soll auf dem Terminal "Hallo" schreiben. Leider kommen keine Signale zum Terminal. Es ist definitiv kein Hardwarefehler.
Skript:
main.c:
Code:
#include <avr/io.h>
#include <util/delay.h>
#include "usart.h"


void delay_ms(uint16_t ms)
{
	for(uint16_t t= 0; t <=ms; t++)
		_delay_ms(1);
}

int main()
{
	//USART konfigurieren
	init_usart();
	while(1){//USART-Ausgabe
		usart_sendchar('H');
		usart_sendchar('a');
		usart_sendchar('l');
		usart_sendchar('l');
		usart_sendchar('o');
	}
	return(0);
}
usart.h:
Code:
#define USART_RECEIVE_COMPLETE() (UCSR0A & RXC0)
#define UART_BAUD_RATE 38400L
#define UART_BAUD_CALC(UART_BAUD_RATE,F_CPU) ((F_CPU)/((UART_BAUD_RATE)*16L)-1)


void init_usart();
void usart_sendchar(char c);
usart.c:
Code:
#include <avr/io.h>
#include <util/delay.h>
#include "usart.h"

void init_usart(){
	//Eingabeparameter einstellen - Aktivierung
	UBRR0H = (uint8_t) (UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);
	UBRR0L = (uint8_t) UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);

	UCSR0A = 0x00;
	UCSR0B = 0;
	//Senden aktivieren
	UCSR0B |= TXEN0;
	//Empfangen aktivieren
	UCSR0B |= RXEN0;
	//Konfiguration der Bitlaenge
	UCSR0C = UCSZ01 | UCSZ00; // 8-Bit character length
}

void usart_sendchar(char c){
	while(!(UCSR0A & UDRE0));//Warten bis UDR bereit ist
	UDR0 = c;	
}
Es wäre nett, wenn jemand mal drüber gucken könnte, wo der Fehler liegt.


MfG Sebastian