Probleme mit USART im ATmega48

Gast #283794
Lesenswert?

Hallo,

ich habe einen ATmega48 gekauft. Ich habe einen IC angeschlossen, der
dann mit 19200bps Daten an den Atmel schickt. Diese leite ich dann zum
PC weiter. Nun kommen aber immer nur Hex Zahlen mit den Werten 80 oder
00 an. Wenn ich z.B. einen ATtiny2313 einbaue, funktioniert es
einwandfrei.

Kann mir mal jemand ein kleines Testprogramm für die serielle
Schnittstelle schicken das mit dem ATmega48 funktioniert.

Danke

MfG Alex
Gast #283796
Lesenswert?

Hallo,
das ist mein Code
der PC empfängt Hex: 80 00 80
F_CPU steht im Makefile und hat den Wert 8000000


#include <stdlib.h>
#include <avr/io.h>

#define UART_BAUD_RATE      19200

void uart_init(unsigned int baudrate)
{
    UBRR0H = ((unsigned char)(baudrate>>8))&0x80;
    UBRR0L = (unsigned char) baudrate;
    UCSR0B = _BV(RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
    UCSR0C = (3<<UCSZ00);
}

void uart_putc(unsigned char data)
{
    while ( !(UCSR0A & (1<<UDRE0)))
    {
        asm("nop");
    }
    UDR0=data;
}

int main(void)
{
    uart_init(F_CPU/UART_BAUD_RATE/16-1);
    uart_putc('A');
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren