Oh, entschuldigung, dass ich hdas alles gart nicht mitgeteilt habe.
bin hier noch anfänger in dem Forum, deswegen.
STK 500 mit Atmega 8515 Chip
AVR Studio4.18
hier mal der ganze code, bin gespannt, woran der Fehler liegen soll
#include <avr/io.h>
#include <stdlib.h>
#include "string.h"
// #include <util/delay.h> // wenn das aktiviert, dann sendet er gar
nichts, wißt ihr warum? brauche ich doch für delay funktionen, nicht
wahr?
#ifndef F_CPU
#warning "F_CPU war noch nicht definiert, wird nun nachgeholt"
#define F_CPU 8000000UL
#endif
#define BAUD 4800UL // 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 uart_init(void)
{
UCSRB |= (1<<TXEN); // UART TX einschalten
UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N1
UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;
}
int uart_putchar(unsigned char c) //diese Funktion bekommt ein
einzelnes Zeichen zugeschickt und gibt dieses aus
{
while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */
{
}
UDR = c; /* sende Zeichen */
return 0;
}
int main(void)
{
uart_init();
fdevopen (uart_putchar, NULL,0);
int a= 5,b =8;
double i=5.0/8.0 ;
printf ("%d x %d = %d",a,b,a*b );
printf ( "\r\n" );
printf ("%d durch %d = %d",a,b,a/b );
printf ( "\r\n" );
printf ("%d durch %d = %4.2f",a,b,i ); // funktioniert so noch
nicht, nur Fragezeichen
printf ( "\r\n" );
while (1)
{
;
}
return 0;
}