Hallo zusammen,

mein Ziel ist es, ein beliebigen String über UART zu senden. Meine ersten C Gehversuche sahen aus wie unten im Code. Jedoch erreicht mich am PC immer nur ein "Ha". Sieht also aus, als passt das was mit dem Speicher nicht? Aber müsste der Pointer nicht einfach immer hochgezählt werden? Den ganzen String durch?

Vielleicht könnt ihr mir helfen.

Code:
#include <avr/io.h>
#include <avr/interrupt.h>

#define BAUD        19200UL
#define UBRR_BAUD   ((F_CPU/(16UL*BAUD))-1)

/*************************************************************************
 Initialisierung vom UART Interface
*************************************************************************/
void uart_init(void)
{
    // Baudrate einstellen (Normaler Modus)
    UBRRH = (unsigned char) (UBRR_BAUD>>8);
    UBRRL = (unsigned char) (UBRR_BAUD & 0x0ff);

    // Aktivieren des Empfängers, des Senders und des "Daten empfangen"-Interrupts
    UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);

    // Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit
    UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);

	// Flush Receive-Buffer (entfernen evtl. vorhandener ungültiger Werte) 
    do
    {
        // UDR auslesen (Wert wird nicht verwendet) 
        UDR;
    }
    while (UCSRA & (1<<RXC));

	// Rücksetzen von Receive Complete Flag 
    UCSRA = (1<<RXC);
}

/*************************************************************************
 String senden
*************************************************************************/
void uart_send(const char *string)
{		
	do
    {
		// ... warten bis der Sendepuffer leer ist ...
    	while (!( UCSRA & (1<<UDRE)))
			;

        UDR = (const unsigned char)*string;
    }
    while (*string++);
}

/*************************************************************************
 UART Empfangs Interrupt ISR
*************************************************************************/
ISR(SIG_UART_RECV)
{
    unsigned char buffer;

    // Daten aus dem Puffer lesen ...
    buffer = UDR;
}
Code:
void uart_init(void);

void uart_send(const char *string);
Code:
uart_send("Hallo!" "\r\n");
Das ist uart.c, uart.h und der Aufruf der Methode in main.c


Danke schonmal für eure Hilfe

Grüße,
hacker