Hallo Leute,
folgende Aufgabenstellung:
4 Eingangssignale --> 1 Output
A B C sind % Werte von 0..100, gereiht von High nach Low
das Activ Flag hat einen wertebereich von 0..1
A B C Activ(0) --> A
B A C Activ(0) --> B
....
Kann man das vernünftig in einer LookUp darstellen, obwohl sich
natürlich
A B C ständig ändern?
das ganze natürlich in ANSI C.
LG
Danke für die schnellen Antworten,
die Tabelle hat 12 Reihen, mit 4 Inputs und 1nem Output.
Am µC würde die LookUp implementiert werden.
Leider ist es nicht immer der größte Wert.
Das Activ Flag greift in Spezial Fällen
Lg
Spielt denn nur die Größenreihenfolge von A, B, C eine Rolle oder die
genauen %-Werte? Im ersten Fall kann man eine LUT über die Reihenfolge
machen, dann sinds nämlich nur noch 3*2*1=6 Möglichkeiten und nicht
100*100*100=1000000
Gamo schrieb:> 4 Eingangssignale --> 1 Output>> A B C sind % Werte von 0..100, gereiht von High nach Low> das Activ Flag hat einen wertebereich von 0..1>> A B C Activ(0) --> A> B A C Activ(0) --> B
wenn es nur darum geht, den größten der 3 oder das Active Flag zu
nutzen, wozu dann die Tabelle? Oder muss der größte Werte dann
umgerechnet werden?
Schreib doch mal Pseudo Code, vielleicht wird es dann klarer (wenigstens
für mich...)
Grüße
Du vergleichst die Werte um die Reihenfolge zu ermitteln. Du nimmst ein
Byte, speicherst in Bits 2-3 welches von A,B,C das größte ist (als Zahl
von 0-2), in Bit 1 welches der beiden übrig gebliebenen das zweitgrößte
ist, und in Bit 0 das "Active Flag". Das Byte nimmst du dann als Index
für eine LUT mit 12 Einträgen (0-11), in der du pro Eintrag den Index
des Eingabewerts speicherst, der durchgeleitet werden soll.
Das Problem ist das Activ Flag, somit ist es nicht immer der Fall, dass
der größte Wert auch der Output ist.
Für mich ist die Frage, ob es möglich ist, dass in einer LUT
darzustellen.
Gibt es vielleich eine andere Möglichkeit, eventuell mit einem input
vector und einem Output vector zu arbeiten....
Kannst du den Zusammenhang etwas besser bzw. genauer beschreiben?
Deine 'Beschreibung' im Eröffnungsposting ist reichlich schwammig.
Falls die Zusammenhänge nicht völlig willkürlich sind, dann ist es auch
möglich sie vernünftig auszudrücken. Und dann kann man auch Code dafür
schreiben, ohne eine LUT bemühen zu müssen.
> die Tabelle hat 12 Reihen, mit 4 Inputs und 1nem Output.
Das ist jetzt noch nicht allzuviel. Problematisch wird es genau dann,
wenn eine Wertekombination als Input kommt, die nicht in der LUT
enthalten ist.
Danke,dass habe ich bereits in Verwendung.
Ich wollte jedoch zur Übung das ganze etwas schwieriger gestalten und in
einer LUT mit Referenzen verpacken.
Gamo schrieb:> Danke,dass habe ich bereits in Verwendung.>> Ich wollte jedoch zur Übung das ganze etwas schwieriger gestalten und in> einer LUT mit Referenzen verpacken.
Für eine LUT brauchst du Zahlenwerte. Du hast keine Zahlenwerte. Du hast
irgendwas schwammiges mit A, B und C.
Eine Lookup Table macht dir den Zusammenhang:
Wenn der Messwert 867 ist, dann ist das Ergebnis 23. Wenn der Messwert
868 ist, dann ist das Ergebnis 25. Wenn der Messwert x ist, dann ist das
Ergebnis davon y.
Und man benutzt sie wenn es keine einfache Formel oder Formalismus gibt,
so dass man y aus x errechnen kann.
Das geht natürlich auch 2-dimensional, bzw. n-dimensional. Aber der
Speicherverbrauch steigt extrem mit jeder weiteren Dimension.
Bei dir
1
A B C active Result
2
0 0 0 0 0
3
1 0 0 0 1
4
2 0 0 0 2
5
3 ....
6
99 0 0 0 99
7
8
0 1 0 0 1
9
1 1 0 0 1
10
2 1 0 0 2
11
3 ....
12
99 1 0 0 99
13
14
0 2 0 0 2
15
1 2 0 0 2
16
2 2 0 0 2
17
3 2 0 0 3
18
...
19
99 2 0 0 99
20
21
0 3 0 0 3
22
1 3 0 0 3
23
....
24
99 99 0 0 99
25
...
26
0 0 1 0 0
27
...
alle Kombinationen, jeder mit jedem. mit allen möglichen Zahlenwerten.