Gute Nacht allerseits! Bin seit kurzer Zeit dabei mit AVRs rumzuprobieren. Habe hier einen 8515 und mir ist vor einiger Zeit die nette Eigenschaft aufgefallen, daß durch die hohen Frequenzen LEDs, die abwechselnd an und abgeschaltet werden halt dunkler erscheinen! Nun beabsichtige ich im Ramen eines kleinen Projektes eine Ansteuerung, bei der der eine bestimmte LED-Kombination, die z.B. in rxx gespeichert ist und an PortX ausgegeben werden soll, langsam ausfaded (also langsam dunkler wird). Eigentlich wollte ich dies erst mit Hilfe von Kondensatoren machen, aber irgendwie erscheint mir die programmier (assembler) Methode sinniger. Hab auch schon die ganze Zeit diverse Schleifen probiert, hab aber immer wieder Probleme. Nun habe ich dazu einige Fragen: 1. Hat jemand zufällig schon so eine Routine? 2. Ich 'Schleife' mich hier langsam aber sicher tod, gibt es eine Funktion die einfach ein simples warten für x Taktzyklen ermöglicht, oder liege ich richtig in der Annahme, daß ich sowas am besten mit verschachtelten Schleifen erreiche? Out of this Topic: 3.Nichts hiermit zu tun, aber gibt es sinnvolle Möglichkeiten eine 8bit Zufallszahl zu bekommen? 4. Gibt es bei den Mikrocontroller eine Taktgrenze nach unten? 5. Was passiert wenn man ein zu schnelles Quartz dranhängt? MFG Danielk
Hi! Das Prinzip ist folgendermaßen: Ein Register kennzeichnet die Helligkeit der LEDs (0-255). Die LED wird eingeschaltet, ein Register zählt hoch und bei Erreichen des Wertes des "Helligkeits-Registers" wird die LED ausgeschaltet und weitergezählt bis 255 und das ganze wieder von vorn. Ein weiterer Zähler zählt diese Zyklen und bei einer bestimmten Anzahl (je nach gewünschter Geschwindigkeit des Ausfadens) wird das "Helligkeits-Register" dekrementiert. Wird es Null, ist das Programm zu Ende. Gruß Jürgen Lang
So isses. Man nennt das "Pulsbreitenmodulation". Der Trick ist, dass die steuernde Frequenz konstant gelassen und nur das Verhältnis zwischen An- und Ausschaltdauer variiert wird. Die Summe von beiden bleibt immer konstant. So etwas lässt sich sehr elegant mit der PWM (=puls width modulation, s.o.)-Funktion von Counter/Timer 1 realiseren. Grüße: Holger
2. Für schleifen (auch in anderem zusammenhang) gibz tools. auf diemer.it-pc.de ist mein linux programm und ein link zu einem anderen windows programm. 3. In der Codesammlung steht ein pseudozufallszahlengenerator 4. Theoretisch nicht. (oder irre ich mich da?) 5. Wenn du die vom hersteller angegebene frequenz (zu weit) überschreitet, ist das verhalten des mikrocontrollers undefiniert. evtl wir er heiß und brennt durch, verrechnet sich, springt im programm usw. gruß Jonas
4. Nein, du irrst dich nicht. Du kannst den Takt auch mit einem (entprellten!) Taster erzeugen. 5. Als erstes fällt das EEPROM aus habe ich gehört, aber wenn du das nicht verwendest kannst du schon 1 MHz oder so drüber gehen denke ich. Natürlich nicht bei Serienproduktion, da wäre das viel zu riskant. MfG Andreas
Hallo, ich hab ein asm-file hier das ich mal für ne Ladedruckregelung gemacht habe. Erzeugt 30 Hz und lässt sich über 5 Taster in verschiedene Pulsweiten umschalten. Also ca 20,40,60,80 und 100 schalten. Wenns dus brauchst kann ich es dir mailen. Basiert aber auf Schleifen und nicht auf Timer/Counter/PWM. Springt halt je nach gedrucktem Taster in die entsprechende Schleife. Kannste auch mit einen Drehschalter kombinieren damit du nicht immer die Taste gedrückt halten musst. Aber eingentlich ganz einfach selber zu schreiben. 1. Led an 2. Schleife1 für Verweildauer 3. Led aus 4. Schleife2 für Verweildauer 5. Schleife1 reduzieren 6. Gehe zu 1
> Funktioniert das wohl auch mit 3 LED`s (rot, grün, blau) um Farben zu mischen? Nein, dann bräuchtest Du 3 Counter. Aber Du kannst Dir die PWM ja auch selber schreiben, bei einer LED-Ansteuerung kommt es ja auch nicht so sehr auf die Genauigkeit an.
"3 Counter" ist schon klar. Ich habe es jetzt, nach einigem Probieren, auch ans laufen bekommen. Trotzdem habe ich noch ein Problem. Wenn ich die 3 LED`s "schalte", funktionierts wunderbar. Also die erste ein, dann die zweite dazu, u.s.w. Nur bei PWM habe ich mein Problem. Wenn die erste "hochfährt" und ich eine zweite dazu "einblenden" möchte, zack, schaltet sich die erste ab. Wenn ich die LED`s einzeln, der Reihe nach "fade" funktionierts, nur wenn die eine gerade runter gefadet wird und die andere gerade hoch fadet, habe ich mein Problem. Als ob die LED, die dazu kommt, der anderen den "Saft" nehmen würde. Woran kann das liegen? Reicht die mir zur verfügung stehende Ausgangsleistung der I/O Pins des Microcontrollers nicht aus? Oder gibt es vielleicht einen Trick? Oder mache ich, ganz einfach, etwas verkehrt? Ich habe es auch schon mit nachgeschalteten BC546 versucht (externe Spannungsversorgung der LED`s). Das gleiche Problem. Mit freundlichem Gruss aus Paderborn, Kai
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.