www.mikrocontroller.net

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


Autor: Jan H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hat wer ne Idee, wodran das liegen mag?

An deinem Programm das keiner von uns kennt ?

Autor: Jan H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Header kann ich euch mal als Anhang geben.

int sprintf (char *buffer, const char *format,...);    

int main ()
{
  DDRD = 0xff;
  float x;
  x = 0.23;
  lcd_init ();
  sprintf (Ergebnis, "%6.2f",x);      
  lcd_position (4,13);                      
  lcd_text(Ergebnis);    
}


  

Autor: Jan H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

lcd_position (4,13); 
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

Autor: Jan H. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier der Header

Autor: Jan H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... ist das Problem zu komplex oder ungenau gestellt?

Autor: holger (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jan H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jan H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An holger:

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

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

mfg

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das array ergebiss ist mit 6 eingestellt...

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

Autor: Jan H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ holger ...
es ergibt sich immer noch das "?" ... :(

Autor: Jan H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Holger ...

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

aber freue mich ..

Autor: Jan H. (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.