Forum: Compiler & IDEs kleines Problem im Code


von Christian (Gast)


Angehängte Dateien:

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ß

von Oliver (Gast)


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

von Christian (Gast)


Lesenswert?

ich sehs nicht ;(

von Christian (Gast)


Lesenswert?

ah evtl da es eine komma Zahl ist?

von Oliver (Gast)


Lesenswert?

>ah evtl da es eine komma Zahl ist?

;-)

Oliver

von Christian (Gast)


Lesenswert?

und was kann ich dagegen machen?  einen anderen Variablentyp nehmen?

bin neuling im C

von Link zu (Gast)


Lesenswert?

Christian schrieb:
> und was kann ich dagegen machen?  einen anderen Variablentyp nehmen?
>
> bin neuling im C
Festkommaarithmetik

von Oliver (Gast)


Lesenswert?

>> und was kann ich dagegen machen?  einen anderen Variablentyp nehmen?
>>
>> bin neuling im C
>Festkommaarithmetik

oder den Datentyp float verwenden.

Oliver

von Link zu (Gast)


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.

von Christian (Gast)


Lesenswert?

Vielen Dank euch beiden... habs mit dem Festkomma... gelöst und es 
Funktioniert.


Dankeschön

von Christian (Gast)


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ß

von Karl H. (kbuchegg)


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.

von Oliver (Gast)


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

von Christian (Gast)


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...

von Karl H. (kbuchegg)


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)

von Christian (Gast)


Angehängte Dateien:

Lesenswert?

bitte sehr was meint ihr eigentlich mit Zeile 42...

von Joachim (Gast)


Lesenswert?

Hallo

Googel mal nach
per anhalter durch die galaxis 42

Gruß
Joachim

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.