Hallo, normalerweiße schreibe ich beim faden von LEDs, Lampen, Motoren immer die ganzen befehle für das Tastverhältnis in den code. Allerdings dauert das lange, man hat wenig PWM Schritte, man muss viel schreiben und es verbraucht viel flash. Gibt es irgendeinen Befehl um den Duty cycle des PWM Signals linear regeln zu lassen. z.B. dass das Signal in 1000ms von 0-100% ansteigt (bei 500ms das Signal 50% hat)? Oder das ganze gar mit einem ADC zu steuern. Also mit dem befehl, dass bei value 0 das Signal 0%, also komplett low ist, bei value 500 es 50% duty cycle hat und bei value 1000 das Signal 100%, also High ist. MfG Thomas
Dafür gibts doch die Timer. Solltest du für AVR programmieren schau dir mal das Tutorial an. Dann musst du nur noch einen Wert in ein Register schreiben und das Tastverhältnis zu ändern. Aus welchen Daten du das Verhältnis berechnest ob ADC oder Timer in 1s Abständen ist eine andere Sachen. Spezielle Befehle dafür gibt es nicht in C.
Schon mal eine Schleife Programmiert "for x to y" oder "while ... do"? Oder einen Wert inkrementiert "a++"?
noAVRuser schrieb: > Schon mal eine Schleife Programmiert "for x to y" oder "while ... do"? Ne, bis jetzt ist mir nur die Schleife am Ende des Programms bekannt. Wäre es zu viel verlangt, wenn Du es etwas genauer erklären könntest? MfG Thomas
Thomas S. schrieb: > Oder das ganze gar mit einem ADC zu steuern. Also mit dem befehl, dass > bei value 0 das Signal 0%, also komplett low ist, bei value 500 es 50% > duty cycle hat und bei value 1000 das Signal 100%, also High ist. MCs rechnen immer binär. Ein 10Bit ADC hat also 1024 Schritte und eine 10Bit-PWM auch. Dein Programm würde auf einem ATtiny24 etwa so aussehen:
1 | for(;;) |
2 | OCR1A = ADCW; |
Davor noch den ADC free running und den T1 in Mode 3 (PWM, Phase Correct, 10-bit) setzen, fertig. Peter
Kleiner Tipp: Lerne definitiv die Sprache, in der du programmierst, erstmal so gut kennen, dass du dich danach nur noch um die Plattform sorgen machen musst. Heißt: Ein C-Buch anschaffen (gibt gute für 10€), lernen und danach wirst du sehen, dass dir alles ein wenig leichter fallen wird, da dann nur noch das Datenblatt brauchst, falls du etwas spezielles wissen musst.
Christian H. schrieb: > Ein C-Buch anschaffen Die Idee hört sich gut an. Kann irgend Jemand ein gutes empfehlen? Preislich würde ich aber nicht über 30€ gehen wollen.
> Kann irgend Jemand ein gutes empfehlen? Preislich würde ich aber nicht > über 30€ gehen wollen. http://openbook.galileocomputing.de/c_von_a_bis_z/index.htm#_top Die 30€ bitte ich auf ein Konto einer karitativen Organisation Deiner Wahl zu überweisen und die Spendenquittung (ggf. mit unkenntlich gemachtem Daten des Einzahlenden) hier zu posten.
Thomas S. schrieb: > Gibt es irgendeinen Befehl um den Duty cycle des PWM Signals linear > regeln zu lassen. Ein linearer PWM Anstieg ist normalerweise sehr ungünstig, wenn es um die Helligkeit geht. Beim linearen Faden steigt die Helligkeit zu Anfang stark an und ändert sich bei höheren Werten nur noch relativ wenig. Bist du sicher, dass du das möchtest.
Martin schrieb: > Ein linearer PWM Anstieg ist normalerweise sehr ungünstig, wenn es um > die Helligkeit geht. Beim linearen Faden steigt die Helligkeit zu Anfang > stark an und ändert sich bei höheren Werten nur noch relativ wenig. Bist > du sicher, dass du das möchtest. Also müsste das ganze, wenns intern geregelt wird logarithmisch ansteigen. Und wenn das per Wert im ADC (z.B. als Motorregler oder Signalgenerator) gesteuert wird, linear ansteigen?
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.