Atmega8 UART TX Fehlersuche

#2166465
Lesenswert?

Hi,

ich habe zur Zeit nen Prob. mit dem UART von meinem Board.
Es werden keine korrekten Signale geschickt bzw. nicht richtig 
Empfangen. Habe das Standart Terminal Programm von Win Xp genutzt.
Wenn ich Dezimal 255 schicke kommen 8 high bits an, aber sobald ich was 
anderes schicke kommen diese nicht richtig an.

BSP.:
TX am Board:
X=88
X=01011000

RX am PC:
248
11111000

Habe zu Erst vermutet das es an der Baudrate liegt, ABER
habe dann den Codewizzard CVAVR benutzt und da wird es wie bei mir 
Init..

Es ist ein Atmega8 16PU mit einem 4mhz Quarz verbaut(Übungsboard von der 
Schule).

Vielleicht findet einer von euch den Fehler. Habe den Überflüssigen Code 
rausgelassen(Display Init, EXT_Int).


#include <mega8.h>
#include <delay.h>
#include <stdlib.h>

void transmitUART(unsigned char send);
void uartInit(unsigned int baud);

void main (void)
{
uartInit(25);

#asm("sei");
do
{
transmitUART('X');
PORTC.2=!PORTC.2;
delay_ms(100);
}
while(1);
}
void uartInit(unsigned int baud)
{
UCSRB=0x18; //0b00011000;
UCSRC=0xA6; //0b10100110;
UCSRC&=0xEF; //0b01111111;
UBRRH=(baud>>8);
UBRRL=baud & 0xFF; //0b11111111
UCSRC|=0x80;
}

void transmitUART(unsigned char send)
{
        while(!UCSRA & (1<<5));
        UDR=send;
        while(!UCSRA & (1<<6));
}
#2166620
Lesenswert?

Wo stelle ich das denn ein? Bin mich gerade am durchlesen.
Darauf war ich auch schon am rum Rätseln. Habe schon auf paar Seiten 
gelesen das man einen Externen verwenden soll. Kannst du mir eventuell 
sagen, wo ich das Einstellen muss?

Sind das die Fuse Bits???

Hab im Datenblatt was drüber gefunden.
CKSEL1-3 müssen 1
CKSEL0 muss 0
SUT1-0 müssen 00

habe ich da recht?

Muss ich irgend Etwas bei den Fuse Bits beachten?

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