Newsgroup: it.hobby.elettronica.digitale
Titolo: servo e asm,posso modificare i valori?

Allora:ho uno specchio
collegato a due servo in modo da muoversi sui due assi cartesiani,
riflette un laser e basta che si muova sia in verticale sia in
orizzontale
in modo casuale,cioè con pause sempre diverse e con angoli sempre
diversi,il
file asm è stato scritto e commentato dall'autore(in italiano,il sito è
:
http://utenti.lycos.it/ulix/index.html
) per muovere anche un terzo servo
di un robot insetto e inoltre ha gli input
relativi ai due baffi,anche questi eliminabili dal listato,in pratica a
me
l'unica parte che mi serve del listato è quella realativa ai movimenti
dei
due servo su RA1 ed RA3,possibilmente con indicate le righe da
modificare
per variare pause e angoli.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Perchè non provi a spiegarti un po' meglio. Non è molto chiaro quello che ti
serve :-)
Ciao
Walter


Ciao
Walter
Allora,Walter per semplificare a me serve solo la parte dell'asm che 
manda gli impulsi ai servo sulle porte RA1 e RA3 del pic16f84 ,che in 
origine erano le zampe destra e sinistra del robot,l'importante è che 
io sappia quali linee variare per modificare le pause(fisse e sempre 
uguali)che l'autore ha dato ai movimenti dei servo.I servo, a 
seconda dell'impulso quadro che gli si manda(da 1,5 o 2,5 ms)vanno a 
un'estremo o all'altro della loro corsa utile,a me interesserebbe
modificare anche questi valori per dare di volta in volta angoli
diversi e non sempre uguali.Credo che siano le subroutines a far questo
o sbaglio?


Allora:
nel programma c'è un sub PULSE che serve a creare un impulso di 0,1 msec.
Questa sub è ripetuta N volte dove N è la durata dell'impulso da mandare al
servo.
Tale impulso deve essere mandato al servo almeno M volte con una pausa tra
gli impulsi per portare il servo nella posizione voluta.
La pausa è gestita tramite la DELAYLOOP.
Ti spiego l'AVANTI così ci capiamo meglio:
--- CONTROLLO DEGLI OSTACOLI---
<!--StartFragment-->AVANTI
	call	SURVE
--- SETTAGGIO DI "M"---
movlw	MOSSA
--- DURATA IMPULSI (0,1 ms) ---
 movwf	TEMPO
--- ESECUZIONE MOVIMENTO ---
 call	CRC
--- CONTROLLO DEGLI OSTACOLI---
 call	SURVE
--- SETTAGGIO DI "M"---
 movlw	MOSSA
--- DURATA IMPULSI (0,1 ms) ---
 movwf	TEMPO
--- ESECUZIONE MOVIMENTO ZAMPE DESTRA---
 call	CRF
--- CONTROLLO DEGLI OSTACOLI---
call	SURVE
--- SETTAGGIO DI "M"---
 movlw	MOSSA
--- DURATA IMPULSI (0,1 ms) ---
 movwf	TEMPO
--- ESECUZIONE MOVIMENTO ZAMPE CENTRALI---
 call	CCF
--- SETTAGGIO DI "M"---
 movlw	MOSSA
--- DURATA IMPULSI (0,1 ms) ---
 movwf	TEMPO
--- ESECUZIONE MOVIMENTO ZAMPE SINISTRA---
 call	CLF
--- SETTAGGIO DI "M"---
 movlw	MOSSA
--- DURATA IMPULSI (0,1 ms) ---
 movwf	TEMPO
--- ESECUZIONE MOVIMENTO ZAMPE SINISTRA---
	call	CLC
--- CONTROLLO DEGLI OSTACOLI---
 call	SURVE
--- SETTAGGIO DI "M"---
 movlw	MOSSA
--- DURATA IMPULSI (0,1 ms) ---
 movwf	TEMPO
--- ESECUZIONE MOVIMENTO ZAMPE SINISTRA---
 call	FLC
--- CONTROLLO DEGLI OSTACOLI---
 call	SURVE
--- SETTAGGIO DI "M"---
 movlw	MOSSA
--- DURATA IMPULSI (0,1 ms) ---
 movwf	TEMPO
--- ESECUZIONE MOVIMENTO ZAMPE CENTRALI---
 call	FCC
--- SETTAGGIO DI "M"---
 movlw	MOSSA
--- DURATA IMPULSI (0,1 ms) ---
 movwf	TEMPO
--- ESECUZIONE MOVIMENTO ZAMPE DESTRA---
 call	FRC
--- CONTINUA IL MOVIMENTO SE IL ROBOT NON HA RAGGIUNTO IL TEMPO DI VITA---
 decfsz	LIFE,f
	goto	AVANTI
	bcf	PORTA,4
	SLEEP
	movlw	SETLIFE	; aggiorna LIFE per prevenire lo SLEEP
	movwf	LIFE
	bsf	PORTA,4
	goto	AVANTI
Non so se sono stato abbastanza chiaro, cmq per studiare bene come mandare
gli impulsi al servo guarda le varie CRC, FRC, etc.
Per mettere il servo nella posizione che vuoi te (non 0°, 90° o 180°) devi
fare delle prove con i valori dell'impulso N.
Ciao Walter