Gast
#421813
allo Zusammen,
ich habe vor kurzem angefangen mein Atmel in C zu programmieren (vorher
immer in Basic). Nun habe ich ein Problem und weiß nicht wo mein
Denkfehler oder Leichtsinnsfehler liegt. Ich möchte eine Kommazahl über
ein Uart senden. Ich verwende die dtostrf- Funktion. Leider geht das
aber nicht. Mein Terminalprogramm empfängt jediglich nur ein "H".
Wär echt klasse, wenn ihr mir helfen könntet.
Mein Code:
#include <avr/io.h>
#include <stdint.h>
#include <avr/delay.h>
#include <stdio.h>
#include <stdlib.h>
#define SYSCLK 8000000L
#define BAUD 9600L
#define UBRR_BAUD ((SYSCLK/(16*BAUD))-1)
/* INT Deklarationen */
int init(void);
int uart_out(char sende_daten[8]);
int main()
{
char s[8];
float f = -12.345;
init();
dtostrf( f, 6, 3, s );
while (1)
{
_delay_ms(1000);
uart_out(s);
}
}
int uart_out(char sende_daten[8])
{
while (!(UCSRA & (1<<UDRE)));
UDR = sende_daten;
return(0);
}
int init(void)
{
/* Baudrate einstellen ( Normaler Modus ) */
UBRRH = (unsigned char)(UBRR_BAUD>>8);
UBRRL = (unsigned char)UBRR_BAUD;
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
/* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
return(0);
}