sprintf funktioniert nicht

OP #2836047
Lesenswert?

Hallo erst mal, und im Voraus danke für jegliche Hilfe.

Ich hab nen Problem beim eine float zahl in einen String reinschreiben.

Das ist das Programm, das ich zum Testen geschrieben hab.
1
#include "p18f452.h"
2
#include "delays.h"
3
#include "stdlib.h"
4
#include "math.h"
5

6
void main (void)
7
{
8

9
float AD2_result;
10
char AD2[5];
11

12
LATD=0x00;
13
TRISD=0x00;
14

15
AD2_result=123.4;
16

17
Delay1KTCYx(1);
18

19
sprintf(AD2,"%3.1f",AD2_result);
20

21
LATD=AD2[0];
22

23
Delay1KTCYx(1);
24

25
while(1);
26

27
}

An PORTD sind LED's angeschlossen welche dann den Inhalt der 
Kommponennte [0] vom char AD2 anzeigen sollen.

Es tut sich leider gar nichts, hab auch alle Komponennten durchgetested 
(AD2[0] bis AD2[4])
Die Hardware hab ich getestet und sie funktioniert, also es ligt sicher 
an der Software.


es wäre super wenn mir jemand weiterhelfen könnte

mgf

alex
#2836157
Lesenswert?

Wenn im Array "123.4" stehen soll muss der format-string "%5.1f" oder 
einfach nur "%.1f" (anzeige mit einer nachkommastelle) sein. Lies den 
o.g. FAQ-Link, da steht die Formatierung bei float-Ausgabe beschrieben.

Ist der Stack groß genug? Die printf-Funktionen sind sehr 
speicherhungrig.
#2836208
Lesenswert?

printf unterstützt standardmäßig keine Fließkomma-Operationen. Schau in 
die Doku der avr-libc, da steht drin, mit welcher Option Du dieses 
Feature aktivierst.

bis zu 3 Ziffern for dem Komma
+ Komma (bzw. Punkt)
+ eine Ziffer nach den Komma
+ eventuell das "-" Vorzeichen
+ String-Ende Markierung

macht zusammen bis zu 7 Bytes. So groß muss das Array mindestens sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren