Hallo
Ich bin zurzeit dabei eine PWM für LED's mit einem Atmega32 und einem
16.000MHz takt zu basteln. Die PWM Rutine funktioniert auch ohne
Probleme, nun will ich mittels einer Schleife alle 255 werte hochlaufen
lassen und die LED so Dimmen, bis sie schließlich aus ist. Hierzu habe
ich eine Schleife eingebaut und lasse mittels inc mein Register (r17)
nach oben zählen. Die delay Funktion habe ich mit dem AVR Warteschleifen
Generator erstellt. Jedoch genau hier liegt das Problem scheinbar wird
die Warte schleife nicht ausgeführt und somit ist kein dimm Effekt an
den LEDs zu sehen.
So sieht mein bisheriger Code aus:
Hi
>.def temp = r17> loop:> inc temp ;zählen>write:> out OCR0, temp ;werte an pwm ausgänge schicken> out OCR2, temp> out OCR1AH, temp> dec R17> brne WGLOOP0
Fällt dir etwas auf?
Du must dich entscheiden. Entweder dieses .def-Gedödel oder
Registernamen. Alles andere ist tödlich.
mfG Spess
Warteschleifen in Asembler zu programmieren ist ne verdamt coole Sache,
pfeilschnell. So kann man viel schneller warten, als wenn man ne
Warteschleife in blödem C programmiert, was ja viel langsamer ist.
chris schrieb:> ie PWM Rutine funktioniert auch ohne> Probleme, nun will ich mittels einer Schleife alle 255 werte hochlaufen> lassen und die LED so Dimmen, bis sie schließlich aus ist.
Damit wird die Helligkeit der LED erst gaaanz langsam abnehmen und zu
den letzten Stufen immer schneller werden.
http://de.wikipedia.org/wiki/Fechnersches_Gesetz