Gast
#497568
Hallo zusammen
Bin gerade dabei des GCC Tut etwas durchzuarbeiten. Also habe ich mir
heute einen Max232 geholt und habe mich mal an die USART Programmierung
gewagt.
wenn ich nun versuche ein 'x' zu schicken, dann kommt ein ganz anderes
Zeichen (copyrightzeichen)... Wenn ich versuche ein 'A' zu schicken
kommt nur ein ü- raus.
Da ich an den Fusebits noch nix rumgestellt habe, läuft der Atmega16 mit
1MHz. Kann es sein, dass der interne Takt zu ungenau ist? Oder muss
etwas bestimmtes am Hyperterminal eingestellt werden?
Meine Einstellungen vom HT sind:
BIT / Sekunde: 9600
Datenbits: 8
Parität: Keine
Stopbit: Keines
Flussteuerung: Kein
und hier mein Code:
#include <avr/io.h>
#include <stdint.h>
#ifndef F_CPU
#define F_CPU 1000000 /* Oszillator-Frequenz in Hz */
#endif
#define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1)
#define UART_BAUD_RATE 9600
int main (void)
{
//-------------Init--------------------------------
UCSRB |= (1<<TXEN); // UART TX einschalten
UCSRC |= (1<<URSEL)|(3<<UCSZ0); // Asynchron 8N1
UBRRH = (uint8_t)( UART_UBRR_CALC( UART_BAUD_RATE, F_CPU ) >> 8
);
UBRRL = (uint8_t)UART_UBRR_CALC( UART_BAUD_RATE, F_CPU );
//-------------Programm-----------------------------
while(!(UCSRA & (1<<UDRE)))
{}
UDR = 'A';
return 0;
}
Vielen Dank schonmal
Gruß
Ich