Forum: Mikrocontroller und Digitale Elektronik UART Einstellungen im AVR Studio 4


von transcend (Gast)


Lesenswert?

Liebe Forumuser,


Ich muss mich schon wieder an euch wenden.
Ich programmiere gerade einen Atmega128, aber ich bekomme einfach die 
Baudrate nicht hin.

Der µC benutzt einen externen Oszillator mit 20 MHz => UBRR=129

Wenn ich aber ein USART_Transmit(0xFF) mache, bekomme ich:
0x5B und 0xFF im hterm zurück.
1
#include "hardware.h"
2
int main(void)
3
{
4
    init();
5
    USART0_Transmit(0x55);
6
    ...
7
    
8
    return 0;
9
}
1
hardware.c
2
3
int init(void)
4
{
5
    DDRB=0xFF;
6
    PORTB=0xFF;
7
8
    USART0_Init(129);
9
    
10
    return 0;
11
}
12
13
void USART0_Init(unsigned int ubrr)
14
{
15
    /* Set baud rate */
16
    UBRR0H = (unsigned char)(ubrr>>8);
17
    UBRR0L = (unsigned char)ubrr;
18
    /* Enable receiver and transmitter */
19
    UCSR0B = (1<<RXEN0)|(1<<TXEN0);
20
    /* Set frame format: 8data, 2stop bit */
21
    UCSR0C = (1<<USBS0)|(3<<UCSZ00);
22
}
23
24
void USART0_Transmit(unsigned char data)
25
{
26
    /* Wait for empty transmit buffer */
27
    while (!( UCSR0A & (1<<UDRE0)))
28
        ;
29
    /* Put data into buffer, sends the data */
30
    UDR0 = data;
31
}


Vielleicht sind auch die Einstellungen im AVR Studio falsch?
Was müsste ich bei den Fuses ZB einstellen?
Ich kenne mich da nicht so genau aus und erbitte Hilfe.

Danke.

lg transcend

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.