Formel PWM Tabelle für LED-Fading

#3078656
Lesenswert?

Oft hilft es sich die Sache einfach mal graphisch darstellen zu lassen:
http://www.wolframalpha.com/input/?i=plot%2820%5E%28x%2F100%29%2F%2820-1%29*255%2C+x%3D0..100%29

r_y und r_x sind einfach Skalierungsfaktoren
r_y definiert dir somit den Bereich deiner Ausgabe (y-Achse im 
Schaubild)
r_x definiert dir den Bereich in dem deine Eingabe arbeiten wird. 
(x-Achse im Schaubild)

ist r_y=1 und r_x=1, so gibst du der Funktion Werte zwischen 0 und 1 und 
erhälst Werte zwischen 0 und 1
http://www.wolframalpha.com/input/?i=plot%2820%5E%28x%2F1%29%2F%2820-1%29*1%2C+x%3D0..1%29
#3080114
Lesenswert?

m. g. schrieb:


>       float y = ((20^(i/100))/(20-1))*100;

^  ist die XOR Operation und nicht die Potenzoperation.

integer dividiert duch integer ergibt wieder einen integer (also eine 
ganze Zahl).

Eventuell doch mal die Grundlagen der Programmiersprache in der 
Literatur nachlesen? Das alles sind ganz einfache Dinge, die in jedem 
C-Buch ausreichend beschrieben sind.

Wenn es eine Programmiersprache gibt, für die gilt, dass man sie nicht 
so einfach einfach so aus dem Bauch heraus oder durch Betrachten von 
anderem Code 'lernen' kann, dann ist das wohl C. Wer denkt, er kommt 
ohne das Durcharbeiten eines C-Buchs oder zumindest eines erstklassigen 
Tutorials über die Runden, der hat mit Zitronen gehandelt.
Moderator #3080231
Lesenswert?

m. g. schrieb:
> Was kann hier der Fehler sein?

Den Grund hast du doch schon als Screenshot gepostet: "result: Optimized
way". Du musst mit dem Ergebis schon etwas Sinnvolles anstellen (oder
zumindest so tun, als ob), sonst denkt der Compiler, die gesamte
Berechnung sei für die Katz und lässt sie einfach weg.

Du kannst das Ergebnis bspw. einer volatile-Variablen oder einem
Port-Register zuweisen, um das Wegoptimieren zu verhindern.
#3080418
Lesenswert?

m. g. schrieb:
> Kannst du mir das bitte näher erläutern?
Naja, warum soll der µC lange Speicheroperationen machen, wenn von den 
vielen Registern kaum eins belegt ist?

> Wie kann ich es machen, dass ich das Ergebnis im watch-Fenster sehe?
Ausnahmsweise die zu überwachende Variable mal 'volatile' deklarieren:
Yalu X. schrieb:
> Du kannst das Ergebnis bspw. einer volatile-Variablen oder einem
> Port-Register zuweisen, um das Wegoptimieren zu verhindern.

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