Anzeige:

PWM-Problem (RGB)

Hier finden sie die archivierten Beiträge des alten PHPBB Forums von www.loetstelle.net

PWM-Problem (RGB)

Von pcprofi am 13.02.2010 18:20

Hallo Jungs,

ich hab da ein Problem wo ich vergeblich nach dem Fehler suche...

Hardware:

ATMEGA8

3x Hardware PWM
4x Poti auf ADC.

Problem:

Drei von den Potis sollen für die Farbanteil-Einstellung sein. Jetzt geht der AD-Wandler ja von 0-1024. Die PWM aber nur von 0-255...

Ich scheitere gerade an der Umsetzung in BASCOM. Weiß der Geier woran es schon wieder hängt, es klappt net, habe verschiedenes versucht, aber alles wieder verworfen, weils net funktioniert.

Hat da mal einer nen Code-Schnippsel? Wäre echt super...


Und wer dann noch Lust hat - das vierte Poti soll sien, um die Helligkeit zu verändern, ohne möglichst ohne die Farbanteile zu verändern. Dass das nicht ganz geht weiß ich auch, weil die LEDs unterschiedlich sind, das soll aber hier erstmal außer acht gelassen werden...
Ich hab mir das so gedacht:
Mit den Potis habe ich ja einen PWM-Wert eingestellt... Diesen PWM-Wert nehme ich jetzt mit dem Prozentsatz des Helligkeits-Potis - möglich oder Quatsch?

Gruß Rainer

Von BellaD am 13.02.2010 19:09

moin


Einfacher Weg - links justieren - und die 2 LOW Bits wegwerfen -
Das Ergebnis steht dann in ADCH

• Bit 5 – ADLAR: ADC Left Adjust Result
The ADLAR bit affects the presentation of the ADC conversion result in the ADC Data Register.
Write one to ADLAR to left adjust the result. Otherwise, the result is right adjusted. Changing the
ADLAR bit will affect the ADC Data Register immediately, regardless of any ongoing conversions.
For a complete description of this bit, see “The ADC Data Register – ADCL and ADCH” on
page 208.

Datenblatt !!

Für die Helligkeit würde da evtl. doch lieber auf 3 Tabellen mit 64 Werten zurückgreifen . 64 Werte sollten ausreichen.

mfg

Von pcprofi am 13.02.2010 19:56

Danke für die Antwort BellaD - aber genau das wollte ich nicht tun, denn irgendwie hab ich die Kommasch**** mit BASCOM immernoch nicht gerafft - von daher sollte das dann nur die Notlösung werden...


Wie meinst du das mit den Tabellen?

Gruß Rainer

Von BellaD am 13.02.2010 20:06

ICh bin voll der Bascom NOOB Smile
aber teil doch einfach alles durch 4 dann hätteste doch die werte von 0 bis 255, obwohl ich das links justieren bevorzuge da die unteren Bits sowieso nur flippeln und es bei der Anwendung eigentlich egal ist ob da nun 255 oder 252 im register steht.


Tabelle = Die Kennlinie des Menschlichen Auges

siehe netten Artikel :
http://www.mikrocontroller.net/articles/LED-Fading

mfg

Von pcprofi am 13.02.2010 20:49

Okay - das ist klar für später, wenn das Grundprinzip erstmal funktioniert... Also für Fortgeschrittene - noch nicht für mich...

Erstmal muss ich folgendes hinbekommen:

Wert für jeweilige Farbe aus ADC auslesen per GetADC(x)
Umrechnnen von 0-1024 auf 0-255


Dann bin ich eigentlich schon happy...

Gruß Rainer

Von Sam am 13.02.2010 21:30

Teile einfach den Wert den du aus dem ADC bekommst durch 4.

Von Elektron am 13.02.2010 21:33

Ich verstehe die Frage nicht ganz? Kann man in BASCOM nicht bei einem Integer zwei Bits nach rechts shiften? Kannst ein wenig Code posten?

Von pcprofi am 13.02.2010 21:37

Manchmal sieht man doch echt den Wald vor lauter Bäumen nicht mehr...



Danke erstmal Jungs

Edith sagt:

Elektron war zeitgleich: Doch - das geht natürlich auch, aber auch nicht drauf gekommen... Aber auf das durch 4 teilen hätte ich echt selber kommen können...

Gruß Rainer

Von BellaD am 13.02.2010 22:16

left adjust ist doch nix anderes als 10 bit linksbündig in 8 bit reg. plazieren
=
10 bit - 2 mal rechts schieben --> 8bit im ergebnis.

die niederwertigsten bits sind dann wech Smile
also = durch 4 geteilt ( Binaer)

oder seh ich das jetzt falsch Very Happy

Von pcprofi am 13.02.2010 22:24

Ja! Nein! Doch! Natürlich...

du hast recht - ich habs aber irgendwie überlesen... Verdammt - heute ist irgendwie nicht mein Tag...

Hab Grad noch zu allem Überfluss meinen Programmer geschrottet...

Jumper falsch Stecken...
Ist schon dumm, wenn man die Spannungsversorgung des Programmers nicht abschaltet, aber trotzdem extern versorgt (macht dem Programmer aber nix aus -> Diode), und dann nen Kurzschluss baut.. Die Schmelze von der externen is durch - und dann hats die Proggi versorgung zerlegt...

Trotzdem danke an alle...

Anzeige: