mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Prozentrechnung


Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Autor: Stefan (Gast)
Datum:

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

Autor: 1234 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bestimmt

Autor: ka-long (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

Bye

Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.

es geht um .asm


Mfg
René

Autor: Unbekannter (Gast)
Datum:

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

Autor: Niels Hüsken (monarch2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Definiere "Prozentrechnung"...

Was soll die maschine Rechnen können?

Autor: Niels Hüsken (monarch2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ignoriere Posting von "Unbekannter". Das war unsinn...

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, ich habe gelogen. Man kann in .asm auch Prozentrechnen. Z.B.:

  1% + 1% = 2%

Das geht. Und:

  34% - 30% = 4%

geht auch.

Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dennis Kleine-Beck (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

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

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Unbekannter: Und wie macht man das in ASM?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Niels Hüsken (monarch2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Chris V (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Magnus

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

Autor: Niels Hüsken (monarch2)
Datum:

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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Niels Hüsken (monarch2)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: rebs (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.....

Autor: René (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: ... (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.