![]() |
oscillazione servo salve volevo sottoporvi un piccolo problema, stavo cercando di smanettare su questo codice PIC appunti di utilizzo per ottenere un oscillazione più rapida.. a prima vista pensavo che aumentando l'incremento e il decremento potesse oscillare più velocemente da un lato e poi l'altro invece no! continua ad oscillare allo stesso modo! è strano avete qualche idea? |
ok per essere piu preciso anzichè scrivere INCF AL,W ;se si incrementa angolo MOVWF AL allora modifico l'incremento MOVF AL,W ; metto in W il valore di AL ADDLW 5 ; W = W + 5 MOVWF AL ; assegno il valore di W ad AL in sostanza incremento il valore AL di 5 alla volta anzichè di uno, in questa maniera in teoria dovrebbe oscillare con una velocità maggiore perè di volta in volta aggiunge 5 gradi in pu raggiungendo prima il fondo scala.. ma purtroppo si blocca nn va dove sbaglio? Citazione:
|
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 |
Tutti gli orari sono GMT +2. Adesso sono le 16:24. |
Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002