Forum: Mikrocontroller und Digitale Elektronik Prozentrechnung


von René (Gast)


Lesenswert?

Hallo,

Wie kann man Prozentrechnung mit einem atmega 8515 "machen"?
könnt Ihr helfen?

von Stefan (Gast)


Lesenswert?

mit den angaben aus deiner frage kann wohl niemand was anfangen.
geht es um asm/c/basic und was ist genau dein problem!?

von 1234 (Gast)


Lesenswert?

bestimmt

von ka-long (Gast)


Lesenswert?

Hi,

Einfach nur den Zähler speichern ?
Evt. Fließkommazahl ?

Bye

von René (Gast)


Lesenswert?

Hallo.

es geht um .asm


Mfg
René

von Unbekannter (Gast)


Lesenswert?

In .asm kann man nicht Prozentrechnen, sondern nur in .hex.

von Niels H. (monarch2)


Lesenswert?

Definiere "Prozentrechnung"...

Was soll die maschine Rechnen können?

von Niels H. (monarch2)


Lesenswert?

Ignoriere Posting von "Unbekannter". Das war unsinn...

von Unbekannter (Gast)


Lesenswert?

Also, ich habe gelogen. Man kann in .asm auch Prozentrechnen. Z.B.:

  1% + 1% = 2%

Das geht. Und:

  34% - 30% = 4%

geht auch.

von René (Gast)


Lesenswert?

@unbekannt
Hier bekommt man einfach keine vernünftigen antworten.
@all
Die "maschine" soll Werte Auswerten und ausgeben.
Ich habe einen Fader der steht z.B auf dem Wert 80 und einen Weiteren
Fader ( masterfader) der steht z.B auf 125 ausgegeben soll dann der
wert
40. Wie rechne ich das?

von Dennis Kleine-Beck (Gast)


Lesenswert?

Wenn Du uns sagst, warum bei dem Bsp. "40" ausgegeben werden soll,
dann dürfte die Antwort zu deiner Frage nicht mehr weit sein ;-)

Dennis

von Rahul (Gast)


Lesenswert?

Welchen Zusammenhang haben die 80, die 125 und die 40?
80 sind 64% von 125. Was soll die 40 da bedeuten?

von Michael Wilhelm (Gast)


Lesenswert?

Ich gehe mal davon aus, dass du einen 8-bit AD/Wandler hast und den
Fader in Abhängigkeit des Mastere errechnen willst.  Das wäre dann
Faderwert * Masterwert >> 8.

Oder hab ich's doch nicht verstanden?

MW

von Unbekannter (Gast)


Lesenswert?

> Ich habe einen Fader der steht z.B auf dem Wert 80 und einen
> Weiteren Fader ( masterfader) der steht z.B auf 125 ausgegeben
> soll dann der wert 40. Wie rechne ich das?

Na, das ist doch einfach:

  wert = masterfader - fader - 5

Also für Dein Beispiel:

  wert = 125 - 80 - 5 = 40

Da braucht's nicht mal Prozentrechnung.


> Hier bekommt man einfach keine vernünftigen antworten.

Doch, bekommt man! Jede Frage bekommt genau die Antwort, die sie
verdient!

von Rahul (Gast)


Lesenswert?

@Unbekannter: Und wie macht man das in ASM?

von Rolf Magnus (Gast)


Lesenswert?

> Hier bekommt man einfach keine vernünftigen antworten.

Wer vernünftige Fragen stellt, bekommt auch vernünftige Antworten.
Deine Frage ist ungefähr so präzise, wie "was muß ich tun, wenn ich
beim Autofahren an einem Schild vorbeikomme?"
Also, bevor du dich über die Antworten aufregst, lern bitte erstmal,
Fragen so zu stellen, daß man was damit anfangen kann.

> Die "maschine" soll Werte Auswerten und ausgeben.
> Ich habe einen Fader der steht z.B auf dem Wert 80 und einen
>  Weiteren Fader ( masterfader) der steht z.B auf 125 ausgegeben
> soll dann der wert 40.

Und warum soll dieser Wert rauskommen?

von Niels H. (monarch2)


Lesenswert?

Also bitte, das ist ja mal wirklich das kleine 1 mal 1.

Wenn ich einen Wertebereich von 0-255 auf 0-100 runterechnen will, dann
teilt man den Wert einfach durch 2,55. Wenn man die Verwendung von
fliesskommazahlen scheut, weil man gerade in Asm unterwegs ist,
erweitert man beide Seiten mal 100 (bsp: 25500/255=100). Dadurch ist
man natürlich dann gezwungen, 16bit Rechnungen zu verwenden. Der kleine
Hobbyprogrammierer von nebenan sollte das aber locker hinbekommen.

von Chris V (Gast)


Lesenswert?

Also 80 sind 40% von 200. Unter der Annahme, dass ein Fader einen
Wertebereich von 0...200 hat würde das Sinn machen. Was das alles mit
dem Masterfader zu tun hat... Tja da wäre etwas mehr Info hilfreich.

Beschreib doch mal genau was du vorhast, sofern du es den weisst.
Es wäre z.B. interessant zu wissen, wie du die Werte der Fader
überhaupt in den µC bekommst und was dann hinten wieder rauskommen
soll.

Wenn du etwas genauer wirst, bekommst du evtl. sogar von
"Unbekannter" ne sinnvolle Antwort

von Unbekannter (Gast)


Lesenswert?

@Rahul:

> Und wie macht man das in ASM?

Na, das ist noch einfacher:

  ld   a, (hl)       # Fader
  ld   b, a
  inc  hl
  ld   a, (hl)       # Masterfader
  sub  a, b
  sub  a, 5

von René (Gast)


Lesenswert?

@Magnus

weil in dem Beispiel 80=100% sind und 40 50%(125)

von Niels H. (monarch2)


Lesenswert?

Die Information, das der Wert 80 100% sein soll, kommt verdammt spät.

von Rahul (Gast)


Lesenswert?

Wir schmeissen HEX-Darstellung und dezimale Darstellung durcheinander.
Wer rechnen kann ist klar im Vorteil:
40h = 64d
80h = *128*d

Wie gross ist dein Maximalwert? Der ist vermutlich nicht konstant. Dann
wird es schwer...

von Sebastian (Gast)


Lesenswert?

Ich versteh immernoch nicht wirklich welcher Zusammenhang da besteht.
Vor allem mit der 125.
Schreib halt mal ganze Erklärungen, und nicht immer nur Satzfragmente.
Im Interpretieren von Texten war ich noch nie gut, und ich denke, das
geht der Mehrheit hier so.

@Unbekannter
Bist du sicher, dass es so geht? Ich glaub nämlich nicht...
Aber einfach ist es allemal.

von Niels H. (monarch2)


Lesenswert?

@Sebastian:

Bisher ist die Beschreibung des Problems von "René" immernoch so
uneindeutig, das derzeit keine vernüftiger Lösungsweg vorgeschlagen
werden kann. Deshalb schliesse ich mich diesem Lösungsweg von
"unbekannter" einfach mal an.

von René (Gast)


Lesenswert?

Der wertebereich sollte von 0-255 dezimal gehen.
wertebereich fader1 auch von 0-255


fader 1 = z.B Dez 40  Master 50% (128 im wertebereich 0-255) es sollte
herrauskommen 20

Fader 1 = Dez 255 master 100% ergebniss 255 usw.

von Rahul (Gast)


Lesenswert?

hast du dir mal die Multiplikations- und Divisions-Application Notes auf
atmel.com angeguckt?
Bernhard Schulz hat die auch in der Codesammlung zu "papier"
gebracht.
Allerdings für 32Bit.

von Michael Wilhelm (Gast)


Lesenswert?

Nun, dann hab ich dir den Weg doch gezeigt. Ersetze das ">>8" durch
eine Division durch 255. Ist etwas genauer, aber langsamer. Musst halt
sehen, ob du die Genauigkeit brauchst. Aber, Assembler lernen musst du
schon selber.

MW

von Rahul (Gast)


Lesenswert?

Lösungsvorschlag:

Fader-Wert mit 100 Multiplizieren und dann solange den Masterfader-Wert
davon abziehen, bis <=0.
Sieht vermutlich fast genauso aus, wie die Lösung des Unbekannten...

von rebs (Gast)


Lesenswert?

Ich würde mal sagen die Lösung scheint trivial, allerdings stellt sich
mir die Frage was Rene für ein Problem hat.
Das wird wieder ein ewiglangen Thread bis sich der Ersteller
entschließt sein Problem zu definieren!

Viel Spaß noch dabei.....

von René (Gast)


Lesenswert?

Hallo,

es geht darum einen RGB Dimmer zu steuern
Fader 1 = Rot
Fader 2 = Grun
Fader 3 = Blau

Gerät funktioniert ganz gut soweit.

jetzt soll der master hinzukommen und ich suche nach ansätzen wie man
das am besten macht.
Es kamen immer wieder Vorschläge von Leuten wir sollten noch einen
weiteren Fader zur verfügung stellen der sozusagen als master fungiert
um z.B. eine Eigestellte RGB Farbe in der Helligkeit verändern zu
können ohne alle Drei fader bewegen zu müssen sonderen mit einem  Fader
dem "Masterfader".

Ich hoffe das leuchtet ein.
Bitte jetzt nicht mit das kannst Du dir doch kaufen bla bla..

von Karl H. (kbuchegg)


Lesenswert?

Ist doch simpel:

Annahme:
  Fader hat einen Wertebereich von 0 bis 255
  Master hat einen Wertebereich von 0 bis 255

dann ist der zu setzende Wert
  Wert = Fader * Master / 255;

Prozentrechnung halt, nur entspricht ein Wert von 255
den 100%. Wo liegt das Problem? Schreib dir oder besorg dir
eine 16 Bit Arithmetik und los gehts.

von Unbekannter (Gast)


Lesenswert?

Aha. Also mit den neuen Information würde ich folgenden Algorithmus
vorschlagen:

  a.) Den Fader und den Master in Prozent umrechnen.
      Beispiel: Fader 20 = 7,843%  Master 128 = 50,196%

  b.) Die Prozentwerte in Binäre-Brüche umwandeln. Beispiel:
      7,843% = 0b111,110101...  50,196% = 0b11010,001...

  c.) Die beiden Binärebrüche miteinander multiplizieren.

  d.) Das Ergebnis mit 0b0,00000110100001... multiplizieren.

Fertig! Das war schon alles!

Das alles natürlich mit mindestens 32 Bit Genauigkeit rechnen, sonst
gibt's Fehler!

von ... (Gast)


Lesenswert?

70% aller erwachsenen Deutschen können mit Prozentrechnung rechnen, die
anderen 40% nicht.

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.