Discussione: oscillazione servo
Visualizza messaggio singolo
Vecchio 28 gennaio 12, 01:45   #3 (permalink)  Top
faustog_2
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
ok perfetto sistemato

ho sistemato, adesso il servo oscilla con una rapidità che può essere modificata facilmente, adesso ho messo di 10 punti a passo.
piuttosto che l'istruzione di incremento meglio l'istruzione ADDLW, posso utilizzare anche il fattore uno come se fosse un incremento, oppure un numero oltre tutto questa istruzione modifica se è il caso il bit Z, quindi

LOOP
btfss INTCON,T0IF ; Controlla che non siano scaduti i 20 mS
GOTO $-1 ; se TMR0 < 20 mS allora vai INDIETRO

CALL SERVO ; altrimenti vai in MOVE_ALL
BTFSC DL,0 ; controlla se direz=0
GOTO MAIN2

MOVF ANGOLO ; SENSO ORARIO
ADDLW 10

BTFSC STATUS,Z
BSF DL,0 ; se si cambia direzione
MOVWF ANGOLO

bcf INTCON,T0IF ; reset T0IF bit

GOTO LOOP ; e torna a mainloop

MAIN2
MOVF ANGOLO ; SENSO ANTIORARIO
SUBLW 10

BTFSS STATUS,Z
BCF DL,0 ; se si cambia direzione

MOVWF ANGOLO

bcf INTCON,T0IF ; reset T0IF bit
GOTO LOOP ; e torna a mainloop
faustog_2 non è collegato   Rispondi citando