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
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