Het blijkt toch wat lastiger. Ik wilde het motortje in stappen 180 graden laten draaien.
(en in een later stdium weer terug).
Ik heb al getest dat 1000 us = 0Gr, 2000us = 90Gr en 3000us = 180Gr.
Maar doe ik het in een loop met de ASM statements:
(800 ms vaste delay, dan 200 tot 2200 erbij zou dus 1000 - 3000 worden).
Het motortje slaat echter op hol en blijft ronddraaien.
(Omdat je geen variabele in de delay mag stoppen, gaat de laatste delay van 19000 us, die je eigenlijk steeds wilt aanpassen aan de andere delay om in totaal op 20ms te komen sowieso niet helemaal correct. Ik blijf het lastig vinden dat je geen variabele in de delay mag opgeven)
Maar wat gaat hier nu niet goed?
pic basic code:
For Timerval = 20 to 220 step 10
For z1 = 0 to 99
PORTB.6 = 1
PORTB.3 = 1
Delay_us(800)
Asm
loop1: goto loop21
loop21: goto loop31
loop31: goto loop41
loop41: goto loop51
loop51: goto loop61
loop61: goto loop71
loop71: goto loop81
loop81: goto loop91
loop91: nop
decfsz _Timerval, f
goto loop1
nop
End Asm
PORTB.3 = 0
Delay_us(19000)
Next z1
Next Timerval