Forum: Compiler & IDEs float nach int / OCR2A


von µC (Gast)


Lesenswert?

Hallo,

ich möchte gerne eine PWM OCR2A anhand einer simplen Formel berechnen 
lassen.
Allerdings führt das Ergebnis zu 0 wenn ich z.b. ~33% PWM mit dieser 
Formel erzeigen möchte:

OCR2A = (10/30)*256;   ergibt 0

OCR2A = 0.3333*256; ergibt 33% also 85 auf OCR2A


Kann mir jemand sagen wieso Variante 1 nicht funktioniert?


Danke & Gruß
µC

von Philipp W. (johnnyflash)


Lesenswert?

Weil als integer dividiert wird, alles nach dem Komma wird also 
"abgeschnitten". Übrigens: multipliziere mit 255, sonst verlässt du den 
8-Bit wertebereich!

von Fabian O. (xfr)


Lesenswert?

µC schrieb:
> Kann mir jemand sagen wieso Variante 1 nicht funktioniert?

Weil (10/30) als Ganzzahl gerechnet 0 ergibt. 0 * 256 = 0.

Du musst die Formel umstellen:
1
OCR2A = 256 * 10 / 30;
Dann kommt wie erwartet 85 raus.

von µC (Gast)


Lesenswert?

Hallo Jungs ;O),

danke für Eure Antworten!

Wird gleich umgesetzt!



MfG
µC

von Uwe (de0508)


Lesenswert?

µC Gast,

weist Du nun auch warum das funktioniert ?

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.