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.
>Hat wer ne Idee, wodran das liegen mag?
An deinem Programm das keiner von uns kennt ?
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 | }
|
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
... ist das Problem zu komplex oder ungenau gestellt?
Wie ist "Ergebnis" deklariert ? Passt der Output von sprintf() da auch rein ?
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.
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
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
>Das array ergebiss ist mit 6 eingestellt...
Dann mach es doch einfach mal um
10 Zeichen größer.
@ holger ... es ergibt sich immer noch das "?" ... :(
@ Holger ... Habe nichts geändert ... es geht ... frag mich nicht wieso ... habe wirklich nichts gemacht ... ahhh ... aber freue mich ..
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.