Hallo, im Anhang etwas Spagetticode ;)
es ist eine softanlauf für einen dc motor,
durchforsten und vieleicht hilft es ja, geschrieben für einen 4433
PWMHA:
;PWM Routine zum Anfahren des Motors (enable Pin)
;enable pin ist noch aus
LDI mp,$00 ;lade 0 in mp
OUT OCR1H,mp ;mp in register PWM Value HighByte
LDI mp,$FF ;lade 255 in mp
OUT OCR1L,mp ;mp in register PWM Value LowByte
ldi mp, $01 ; Timer Start CK (höchste frequenz)
out TCCR1B, mp ;
ldi zaehler,$FF ;lade 255 in Zähler (zur sicherheit)
ldi zaehler2,$08 ;lade 16 in Zähler( zeitdauerregulierung)achtung
unten nochmal!
ldi mp,0b11000001 ;Einschalten des PWM Modus(non invert, 8 bit)
out TCCR1A,mp ;mp in register
LDI Step,$96 ;fülle step mit 150
PWMLoopHA:
DEC Zaehler ;Verringere Zähler um eins
BRNE PWMLoopHA ; Springe zu Delay wenn Z = 0 (oder gehe weiter wenn
überlauf!
DEC Zaehler2 ;Verringere Zähler um eins
BRNE PWMLoopHA ;Springe nach PWMLoop wenn Z = 0
DEC Step ;verringere step um 1
OUT OCR1L,Step ;schreibe step in OCR1AL Register
BREQ PWMLoopOutHA ;Springe zu Stepset wenn Z=1 also Überlauf
ldi zaehler2,$08 ;lade den 2. Zähler,muss sein weil sonst von 0 auf
255 wechselt
SBIS Pind,2 ;springe wenn Verrauf schalter an ist
RJMP PWMLoopHA ;springe zu PWMLoop
RJMP PWMAbbruchbeiEndsAUF