Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
weno estoy aprendiendo a programar en ensamblador, y mas o mens m defiendo pero se q tengo lagunas gigantes.. 😕
no se como debo calcular para hacer q el servo mueva 90º, m refiero al numero q tengo q multiplicar por los ciclos, uso un 16f84 con 4mhz lo q equivale a 1 ciclo un 1microsegund.
no se si m explico pero aver si m entendeis 🙂
seria algo asi? si para 180º --->2.2ms
90º---->x =1.1ms
1.1ms = 1100ciclos
y despues el resto hasta llegar a los 20ms n?
weno solocionado el problema, los tiempos se puden calcular con el programa caldelay, q no sabia q estubiera ese programa.
seria asi:
para 90º son 1100ciclos
;-------------------------------------------------------------
PDelay movlw .219 ; 1 set number of repetitions
movwf PDel0 ; 1 |
PLoop0 clrwdt ; 1 clear watchdog
clrwdt ; 1 cycle delay
decfsz PDel0, 1 ; 1 + (1) is the time over?
goto PLoop0 ; 2 no, loop
return ; 2+2 Done
;-------------------------------------------------------------
y hasta los 20ms (18.9)
;-------------------------------------------------------------
PDelay movlw .141 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop1 movlw .26 ; 1 set number of repetitions (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
clrwdt ; 1 cycle delay
decfsz PDel1, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
clrwdt ; 1 cycle delay
return ; 2+2 Done
;-------------------------------------------------------------
gracias a mekanoide
me alegro de que lo hayas solucionado, asi tambien le servirá a alguien por si le pasa lo mismo, un saludo.
x eso lo puesto, por si alguien se encontraba con el mismo problema, voi hacer una libreria para incluirla en el programa con todos los angulos ya calculados con el caldelay para el servo s3003, así el programa se keda mas curioso, si alguien utiliza esos servos y no kiere tener q calcular eso q me la pida.
Hombre, el problema del caldelay, es que te tiene el pic ocupado perdiendo tiempo, yo te aconsejaria que miraras el funcionamiento del TMR0 y las interrupcioes que este genera.