Hallo Gemeinde,
trotz suche in diesem Forum und mit Hilfe einer bekannten Suchmaschine
konnte ich keine Lösung finden. Sollte ich diese jedoch übersehen haben
verweist mich hin und gebt mir einen mit dem Zaunpfahl. Aber nicht so
fest, bin Mädchen. ^^
Folgendes Problem beschäftigt mich:
Eine Fließkommazahl soll mittels UART an einen PC übergeben werden,
beispielsweise 125,62. Mein Programm tut auch das, was ich programmiert
habe, aber nicht das, was ich will.
Hier der (gekürzte) Code:
1 | void Ausgeben(char data)
|
2 | {
|
3 | UCSRB |= (1<<3);
|
4 | while (!(UCSRA & (1<<UDRE))); // warten bis Puffer bereit
|
5 | UDR=data;
|
6 | _delay_ms(10);
|
7 | UCSRB &= ~(1<<3);
|
8 | }
|
9 |
|
10 | void schreibe_uart(char *str)
|
11 | {
|
12 | while (*str)
|
13 | {
|
14 | Ausgeben(*str); str++;
|
15 | }
|
16 | }
|
17 |
|
18 | // Im Hauptprogramm finden sich folgende Zeilen:
|
19 | float zahl = 125,62;
|
20 | sprintf(buffer,"%f",zahl);
|
21 | schreibe_uart(buffer);
|
Als Ausgabe erhalte ich ein ? auf dem Bildschirm.
Kann ich irgendwie die einzelnen Zahlenkomponenten als Char übergeben,
sprich jedes Zeichen inklusive Punkt einzeln in UDR einlesen und
übermitteln?
Vielen Dank im Voraus für eure Hilfe oder den Zaunpfahl.
Micha