Einfachste Methode wäre einfach die 8Bit * 16 zu nehmen, so bekommt man maximal 4080 raus, also nicht ganz ausgefüllte 12 Bit.
8bit sind 256 verschiedene Werte, inklusive der 0. *16 ergibt sich natürlich genau 4096, also volle 12bit.
Multiplizieren ist tatsächlich nicht so schlimm. Da du aber mit einer 2er-Potenz multiplizierst, könntest du den Wert auch shiften. In Bascom wäre das
Shift dein_wert, Left, 4
Bei meinen Anwendungen war aber ein 8-bit Farbwert immer RRRGGGBB, ein 12-bit Wert RRRRGGGGBBBB.
Den kannst du ja so nicht als Ganzes multiplizieren, sondern müsstest immer nur den entsprechenden Farbteil nehmen.
Zitat
Eine andere Methode wäre eine Lookuptabelle mit 256 Werten zu nehmen die dann einen 12 Bit Wert raus gibt.
Hier könnte man dann auch gleich eine LED Korrekturkurve einbringen.
Dies sehe ich auch so. Aber hier müsstest du 16 bit (Word) nehmen. Dies würde also insgesamt 512 Byte belegen.
BEye
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Stefan_Z« (20. Januar 2010, 22:22)
Ich sage nur TLC5947, ich brauche also 12 Bit, habe aber nur 8 Input......kannst Du Dir die 12 Bit gleich sparen...
die Tabelle ist mit exponentiell ansteigenden Werten gefüllt, um die logarithmische Empfindlichkeit des Auges auszugleichen - damit ein Anstieg von z.B. 10 auf 20 als ebenso großer Schritt wie der von 200 auf 210 empfunden wird - ohne Korrektur verläuft das nicht linear, wäre doch schade, 12 Bit zu nehmen und dann hast Du von (Eingangswert) 230 bis 255 so gut wie keine Helligkeitsänderung mehr - dafür findest Du 5 doppelt so hell wie 4...
LedStyles Azubi
, er hat ja auch schon selbst oft genug darauf hingewiesen. Ich nehme mal an, dass er es hier in diesem Thread (und auch in deinem bezüglich BCM) schlicht vergessen (bzw. gar nicht daran gedacht) hat, darauf hinzuweisen.LedStyles Azubi
. Hier sieht man, dass man den Grauwert eigentlich gar nicht benötigt. Er folgt automatisch der auferlegten Kennlinie, wenn man es eben richtig macht
. Manchmal ist es eben doch von Vorteil, nach einem längeren Zeitintervall wieder das gleiche Problem vor die Nase gestossen zu bekommen
.ich weißIch sage nur TLC5947, ich brauche also 12 Bit, habe aber nur 8 Input...
- ich wollte nur darauf hinaus: wenn Du es so machst:dann verschenkst Du die kleinsten 4 Bit (die sind dann immer "0000") und hast dann im Endeffekt ne 8-Bit-PWM - und dafür ist der TLC doch zu schade, wir (also ich zumindest) haben den doch extra wegen den 12 Bit genommen...Okay so wie es aussieht, werde ich es einfach shiften.
der Atmega kann auch HW-Multiplikation, zwei 8-Bit-Zahlen multiplizieren macht genau 2 Takte...3 Taktzyklen hört sich gut an, sehr gut sogar =)

Doch , ich habe dran gedacht...Die Problematik kennt Pesi übrigens auch, er hat ja auch schon selbst oft genug darauf hingewiesen. Ich nehme mal an, dass er es hier in diesem Thread (und auch in deinem bezüglich BCM) schlicht vergessen (bzw. gar nicht daran gedacht) hat, darauf hinzuweisen.
- ich habe nur gelesen, dass hier Daten aus nem .bmp ausgegeben werden sollen, also wohl Bilder - und da kommt dann im Prinzip die selbe Korrektur in Frage wie bei nem Monitor, und die geht anders (habe mich zwischenzeitlich informiert).
(ich muss nicht jedesmal den Ergebniswert durch den Ursprungswert teilen (das geht nicht in HW), sondern habe eben *diese* 255 möglichen Faktoren schon *vorberechnet* in ner Tabelle drin..)Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Pesi« (21. Januar 2010, 17:31)

