kleines Problem im Code

Gast #1626665
Lesenswert?

Hallo Leute ich habe einen Fehler in meinem Code. ich will die Variable 
aufloesung mit dem TCNT1 multiplizieren und das ergebnis in die Variable 
winkel schreiben, aber irgendwie funktioniert dies nicht.

Kurz zu meinem Programmaufbau damit ihr euch schneller zurechtfindet:

Switch Case Anfang Menü

--Einstellungen

---Switch Case Auflösung Anfang

----verschiedene Winkel
----verschiedene Winkel
----verschiedene Winkel
----verschiedene Winkel

---Switch Case Auflösung Ende

--Winkelauswertung

---> Problem

Switch Case Ende Menü



Das Menü Funktioniert soweit Prima jedoch bekomme ich bei der ausgabe 
des Winkels nichts raus!

vielen Dank im Vorraus

gruß
Angehängte Dateien:
Gast #1626679
Lesenswert?

Eine etwas detailiertere Fehlerbeschreibung wäre nicht schlecht, "funzt 
nicht" ist immer Problem 42.

Aber lass raten: Es kommt immer 0 raus, oder?

Was fällt dir an folgenden Zeilen auf?

>uint16_t aufloesung;
>...
>aufloesung = 0.72;
>...
>winkel = TCNT1 * aufloesung;


Oliver
Gast #1626769
Lesenswert?

Oliver schrieb:
>>> und was kann ich dagegen machen?  einen anderen Variablentyp nehmen?
>>>
>>> bin neuling im C
>>Festkommaarithmetik
>
> oder den Datentyp float verwenden.
-#include <avr/io.h>
-Drehgeber.c
-TCNT1
klingt alles nach einem µC (ATmega), da sollte man floats umgehen.
Außerdem steht die Problematik ja im Artikel Festkommaarithmetik.
Gast #1628120
Lesenswert?

Hallo habe noch 2 Probleme,

wenn ich mit dem Drehgeber die werte einlese geht das nur bis ca. 640 
dann springt er wieder auf 0 zurück denke dass die Variable dann voll 
ist aber wenn ich die änder ist es immernoch.


Das 2. Problem ist wenn die winkelmessung aktiv ist und in der 2. Zeile 
Grad stehen sollte steht aber Gradche weil vorher schon Striche 
drinstand wie bekomme ich das weg. gruß
#1628126
Lesenswert?

Dein Problem ist in Codezeile 42.
Sagt zumindest meine Glaskugel

> Das 2. Problem ist wenn die winkelmessung aktiv ist und in
> der 2. Zeile Grad stehen sollte steht aber Gradche weil
> vorher schon Striche drinstand wie bekomme ich das weg.

Einfach "Grad   " ausgeben. Was du nicht mit Leerzeichen überschriebst, 
bleibt stehen.
Gast #1628135
Lesenswert?

>wenn ich mit dem Drehgeber die werte einlese geht das nur bis ca. 640
>dann springt er wieder auf 0 zurück denke dass die Variable dann voll
>ist

So ist es. Bei 655 ist bei einem uint16_t in Festkommaarithmetik mit 
zwei Stellen hinterm Komma Schluß. Entweder brauchst du einen uint32_t, 
oder doch einen float.

Oliver
Gast #1628171
Lesenswert?

Hallo danke euch 2 es Funktioniert jedoch bin ich auf ein kleines Rätsel 
gestoßen warum ist das Grad und die Zahl fast in der mitte des Displays 
obwohl ich mit dem befehl set_cursor (0,2) sage in der 2.zeile am anfang 
schreiben...
#1628195
Lesenswert?

Auch hier wieder:
Das Problem liegt in Zeile 42.

(Ist das wirklich so schwer: Wenn du ein Problem in deinem Code hast, 
das du nicht verstehst, dann poste den Code! Hier auf dieser Seite des 
Bildschirms kann keiner wissen, was du programmiert hast. Und nein. Der 
Code von weiter oben gilt nicht mehr. Den hast du schon verändert, Der 
ist nicht mehr ident zu deinem Programm, wie es jetzt ist)

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