Forum: Mikrocontroller und Digitale Elektronik Atmega16 Rechnet falsch


von heiko_h (Gast)


Lesenswert?

Habe folgendes Proglem. Ich habe folgende Formel im Programm:

Sollein_zeit = Sollein_winkel*Periode1/360

Lese die beiden Variablen über die Uartschnittstelle aus und sehe daruch 
was in den Variablen steht.

In Solleinwinkel steht 10, das ist auch richtig

also müsste das Ergebnis 277,77777..... lauten

Aber wenn ich den Wert in UART auslese steht -86 drin. Wie kommt dieser 
Wert zustande? Hat jemand von euch ne Idee?

Habe wie folgt global deklariert:

int16_t Sollein_zeit=0;
int16_t Sollein_winkel=0;
int16_t Periode1 = 10000;

von Jan (Gast)


Lesenswert?

Schon mal überlegt, wie groß der Wertebereich für ein int16_t ist?
Tip: 100000 passt nicht rein...

von Unsigned (Gast)


Lesenswert?

Ganzzahlige Variablen und Fliesskommazahlen beissen sich zwar nicht 
unbedingt aber ohne besondere Maßnahmen geht das nicht.

von U.R. Schmitt (Gast)


Lesenswert?

Grundlagen über Rechnung mit integer und Wertebereiche von signed und 
unsigned Integer anschauen.

von heiko_h (Gast)


Lesenswert?

Jan schrieb:
> Schon mal überlegt, wie groß der Wertebereich für ein int16_t ist?
> Tip: 100000 passt nicht rein...

Danke dür den Tip, habe Sollein_zeit als int32_t deklariert, jetzt 
gehts.

Danke dir

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.