Forum: Mikrocontroller und Digitale Elektronik sprintf - float - Wert (trotz Einstellung "?")


von Jan H. (Gast)


Lesenswert?

Hallo,
Ich habe ein programm in C, welches einen Float - Wert auf einem 
zweizeiligen Display ausgibt.

Nach dem ich die Einstellungen in AVR - Studio vorgenommen habe klappte 
dieses auch. Ich erhielt kein "?" sondern den Float - Wert.

Nun haben wir ein vierzeilen Display in betrieb genommen. Der Controller 
ist ebenfalls kompatibel zum zwei zeilen Display.

Die Routine funktioniert auch soweit ganz gut. Doch mit dem selben 
Programm, dass auf dem zwei zeiligen Display geht, bekomme ich auf dem 
vier zeilen Display wieder ein "?" statt dem Wert.

Hat wer ne Idee, wodran das liegen mag?

Mfg Jan H.

von holger (Gast)


Lesenswert?

>Hat wer ne Idee, wodran das liegen mag?

An deinem Programm das keiner von uns kennt ?

von Jan H. (Gast)


Lesenswert?

Den Header kann ich euch mal als Anhang geben.
1
int sprintf (char *buffer, const char *format,...);    
2
3
int main ()
4
{
5
  DDRD = 0xff;
6
  float x;
7
  x = 0.23;
8
  lcd_init ();
9
  sprintf (Ergebnis, "%6.2f",x);      
10
  lcd_position (4,13);                      
11
  lcd_text(Ergebnis);    
12
}

  

von Jan H. (Gast)


Lesenswert?

Zudem ist im Header noch ein Fehler. Und zwar funktioniert die 
Positionsangabe in der ersten Displayhälfte (1 und zweite zeile) 
wunderbar. in der 3 und 4 zeile spinnt diese.

Wenn man nun
1
lcd_position (4,13); 
2
lcd_position (4,13);

schreibt, dann geht es..dann setzt er den cursor auf position 4,13 ... 
jedoch NUR, wenn man es doppelt schreibt ...

Seltsam

von Jan H. (Gast)


Angehängte Dateien:

Lesenswert?

Hier der Header

von Jan H. (Gast)


Lesenswert?

... ist das Problem zu komplex oder ungenau gestellt?

von holger (Gast)


Lesenswert?

Wie ist "Ergebnis" deklariert ?
Passt der Output von sprintf() da auch rein ?

von Karl H. (kbuchegg)


Lesenswert?

Jan H. wrote:
> ... ist das Problem zu komplex oder ungenau gestellt?

Nicht wirklich.
Nur sehr mysteriös.

Normalerweise würde ich sagen, dass die beiden
Problemkreise
* sprintf erzeugt bei einem float ein ?
* Deine LCD Ansteuerung funktioniert nicht richtig
absolut nichts miteinander zu tun haben.

von Jan H. (Gast)


Lesenswert?

Das habe ich auch schon gedacht ... findest du/ oder Ihr denn vielleicht 
nen Fehler, Denkfehler oder so ...nenn Ansatz wo man mal weiter 
nachfoschen könnte ...

Ich sehe im Hauptprogramm nämlich KEINEN Fehler ..oder ihr? Das 
Hauptprogramm ist das was oben im Forum angedeutet ist.

Mfg

von Jan H. (Gast)


Lesenswert?

An holger:

Das array ergebiss ist mit 6 eingestellt...
1
 
2
char Ergebnis [6];

Also 3 Stellen vor dem Komma + das Komma selbst + 2 Nachkommastellen ... 
das passt denke ich

mfg

von holger (Gast)


Lesenswert?

>Das array ergebiss ist mit 6 eingestellt...

Dann mach es doch einfach mal um
10 Zeichen größer.

von Jan H. (Gast)


Lesenswert?

@ holger ...
es ergibt sich immer noch das "?" ... :(

von Jan H. (Gast)


Lesenswert?

@ Holger ...

Habe nichts geändert ... es geht ... frag mich nicht wieso ... habe 
wirklich nichts gemacht ... ahhh ...

aber freue mich ..

von Jan H. (Gast)


Lesenswert?

Jetzt bleibt also nur noch die Frage, was mit der Position los ist 
..wieso die nicht richtig klappt in der zweiten Displayhälfte ..

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.