Code:
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#define BAUD 38400UL // Baudrate
// Berechnungen
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) // clever runden
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler.
#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
#error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch!
#endif
void main()
{
UCSRB = (1<<TXEN); // UART TX einschalten
UCSRC = (1<<URSEL)|(3<<UCSZ0); // Asynchron 8N1
UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;
while (!(UCSRA & (1<<UDRE)))
{
}
UDR = 'X';
}
wie gesagt, das Programm ist zusammen geklaut. Verbinde ich RX TX Richtung uC kommt glaube ich kein Echo. Ich schreibe im Hyperterminal und nach Betätigen der Enter Taste springt der Cursor wieder zurück zum Start und das geschriebene bleibt einfach stehen.
Ich werde jetzt mal RX TX Richtung PC drehen und anschliessend nochmal den Echo Test machen
//EDIT bei gedrehtem RX TX Richtung PC ändert sich nix. Ich kann im Hyperterminal schreiben und bei Enter springt der Cursor einfach zurück.
Lesezeichen