Moin,
kennt sich einer mit der UART programmierung von µC aus?
Ich habe folgenden Programmcode aus Beispielen kopiert, soweit ohne Fehler, nur leider weiß ich nicht ob er funktioniert oder nicht. Mein PC gibt mir beim RS232 Anschluss keine Signale raus. Ich habe aber leider keine Ahnung zu dem Thema, nur benötige bald ein Programm womit ich Signale über Funk (RS232) verschicken kann. Als µC habe ich den Atmega 8515-PU genutzt. Falls mir noch so einer Tipps geben kann wäre ich sehr dankbar.
Mein Programm:
Code:
#include "uart.h"

#define BAUDRATE 38400UL//Definition als unsigned long, sonst gibt es Fehler in der Berechnung
#define F_CPU 8000000
void uart_init (void)
{
    uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(16*BAUDRATE) - 1);
	UBRRL = ubrr;      //Baudrate 38400
	UCSRA|=2;      //Doppelte Baudrate
	UCSRB=0x18;      //RX und TX erlaubt


    // Flush Receive-Buffer (entfernen evtl. vorhandener ungültiger Werte) 
    do
    {
        UDR;
    }
    while (UCSRA & (1 << RXC));
}
 
int main(void)
{
	 uart_init ();
	while(1)
	{
		int a;
		uart_putc(1001);	
	}
	
}

Die dazu benötigte UART.h:
Code:
#ifndef UART_H
#define UART_H

#include <avr/io.h>

extern void uart_init (void);

static inline int
uart_putc (const uint8_t c)
{
    // Warten, bis UDR bereit ist für einen neuen Wert 
    while (!(UCSRA & (1 << UDRE)))
        ;

    // UDR Schreiben startet die Übertragung 
    UDR = c;

    return 1;
}

static inline uint8_t
uart_getc_wait (void)
{
    // Warten, bis etwas empfangen wird 
    while (!(UCSRA & (1 << RXC)))
        ;

    // Das empfangene Zeichen zurückliefern 
    return UDR;
}

static inline int
uart_getc_nowait (void)
{
    // Liefer das empfangene Zeichen, falls etwas empfangen wurde; -1 sonst 
    return (UCSRA & (1 << RXC)) ? (int) UDR : -1;
}

#endif /* UART_H  */