PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit UART - falsche Ausgabe



homedom
19.01.2008, 13:14
Hallo,
Ich bin gerade dabei ein kleines Programm zu schreiben welches einfach nur das über UART empfangene Byte wieder zurückschickt. Das ist mein erstes C Projekt, hab davor aber schon in ASM programmiert und versteh eig alles. Das Problem ist jetzt, wenn ich eine "1" sende, bekomm ich eine "1" zurück, hintendran aber noch 5-10 andere Zeichen, die immer anders sind und keinen Sinn ergeben. Z.B. sende ich "1" und bekomme "1MÞÞß" zurück.. was läuft da falsch?

#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>
#include <string.h>

#define F_CPU 16000000L
#define BAUD 9600L
#define UBRR_VAL ((F_CPU/(BAUD*16))-1)

void UART_init()
{
UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;
UCSRB = (1<<TXEN)|(1<<RXEN)|(1<<RXCIE);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}

int main (void) {

DDRC = 0xFF;

UART_init();

sei();

bytecount=1;


while(1)
;
}

SIGNAL(SIG_UART_RECV)
{
unsigned char buffer;

buffer = UDR;

while ( !( UCSRA & (1<<UDRE)) )
;
UDR = buffer;
}



Danke, homedom

McJenso
19.01.2008, 19:26
Hallo,

habe beim Überfliegen keinen Fehler gefunden.*
Ich nehme mal an, die ander Seite ist ein PC. Welche Einstellungen hast du im Terminalprogramm. Kannst du die RS232-Leitung vom Controller (MAX) trennen und RXD und TXD an der Leitung kurzschließen und ein Zeichen senden? Wie sieht das Echo im Terminal aus?

* Abgesehen davon, dass bytecount nicht definiert ist und dies auf weitern Code schließen läßt.

Gruß

Jens