Ich habe folgenden Code für eine 5Kanal 8bit Software-PWM an PortB0 bis B4 auf dem atmega8 geschrieben. Nun bin ich noch am feilen, ob man den Code nicht noch etwas optimieren kann (bzgl. Laufzeit). Ich würde mich freuen, wenn noch jemand einen Tipp für mich hätte. Mich "stört" im Moment vor allem noch das ständige neuladen von temp in der 4. Zeile. lum0-lum4 enthalten die jeweiligen pwm-Werte. Der Rest müsste eigentlich selbsterklärend sein. ################### loop: dec counter breq neu ldi temp,0x1F cpse counter,lum0 cbr temp,1 cpse counter,lum1 cbr temp,2 cpse counter,lum2 cbr temp,4 cpse counter,lum3 cbr temp,8 cpse counter,lum4 cbr temp,16 or temp2,temp out PORTB,temp2 rjmp loop neu: clr temp2 rjmp loop ################### (Ich hoffe, ihr verzeiht mir diesen Code direkt in der Nachricht. Aber für diese paar Zeilen einen Anhang zu machen, halte ich dann doch für übertrieben) Danke!
cp counter,lum4 rol temp cp counter,lum3 rol temp cp counter,lum2 rol temp cp counter,lum1 rol temp cp counter,lum0 rol temp out PORTB, temp
Das spart nochmal 0b10.0000001 Takte pro Durchlauf. Auf die Idee, einfach mit rol den Carry ins Register zu schieben, bin ich nun wirklich nicht gekommen. Danke Benedikt!
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.