Gast
#363063
Ich steh gerade mal im Wald
[C]
#include <avr/io.h>
#include <avr/delay.h>
#define SYSCLK 1048576 //intern 1Mhz = 2^20
#define BAUD 9200
#define UBRR_BAUD ((SYSCLK/(16*BAUD))-1)
/* USART initialisieren */
void uart_init(void);
int main(void)
{
unsigned char buffer;
DDRD |= (1 << DDD7); //Ausgang
PORTD |= (1 << PD7); //High
/* USART initialisieren */
uart_init();
while (1)
{
/* Warten bis Daten empfangen wurden */
while ( !(UCSRA & (1<<RXC)) );
PORTD &= ~(1 << PD7);
_delay_ms(300);
/* Empfangsregister auslesen */
buffer = UDR;
/* Warten bis der Sendepuffer frei ist */
while ( !( UCSRA & (1<<UDRE)) );
PORTD |= (1 << PD7);
/* Daten in den Puffer schreiben und damit senden */
UDR = buffer;
}
}
/* USART initialisieren */
void uart_init(void)
{
/* Baudrate einstellen ( Normaler Modus ) */
UBRRH = (unsigned char) (UBRR_BAUD>>8);
UBRRL = (unsigned char) UBRR_BAUD;
/* Aktivieren von receiver und transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
// 8 Datenbits, 1 Stoppbit
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
[\C]
Wenn ich über Bray-Terminal was sende, leuchtet eine LED und das
Empfangene wird wieder zurück gesendet.
Nur ... die LED leuchtet brav so wie es sein soll.
Aber das Empfangene im Terminal ist 0x00 und darauf folgend 0xC0, egal
was ich sende. Auch wenn ich einen String sende.
Was ist falsch ??