Visualizza messaggio singolo
Vecchio 28 ottobre 10, 01:43   #1 (permalink)  Top
faustog_2
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
aumentare l'estensione dei servi

salve volevo aprire una discussione che si è parlato in altri ambiti però qui volevo farlo in materia di microcontrollori.
Premetto che con il 16F628 riesco a leggere i dati (impulsi) che arrivano dalla ricevete e posso quindi manipolarli come voglio.. .quello che però vorrei un attimo condivere con voi è il problema che se arriva un inpulso più di 1,5 mS ok ..basta solo allungarlo creando un ulteriore ritardo... ma se dovesse arrivare un inpulso inferiore a 1,5 mS come faccio ad andare indietro nel tempo????? !!!!!!

be per questo la prima cosa che mi viene in mente è posticipare tutto inviando nuovamente lo stesso inpulso al servo poi però bufferizzando il segnale precedente ne creo uno con un tempo inferiore in modo da scendere fino per esempio a 0.5 mS per cui alla fine potrei aumentare la corsa di un servo da 0.5 mS a 2,5 mS... anzichè da 1 a 2 mS ...

Che ne pensate di questa soluzione?
si accettano consigli..
Di seguito una piccola routine fatta stamani per catturare l'impulso proveniente dalla RX (la ricenvente è un' Hitec AFHSS 2,4 Ghz )




BSF STATUS,RP0 ; ** BANK1 **

MOVLW b'00000000'
MOVWF TRISB ; portB all pins output

MOVLW b'11110001'
MOVWF TRISA ; RB7-RB4 and RB1(RX)=input, others output

BCF STATUS,RP0 ; ** BANK0 **

CLRF COUNT
CLRF PORTB
MAIN BTFSS PORTA,0 ; IF (bit 0 di PORTA è = 1)
GOTO MAIN

MOVLW 178 ;
MOVWF CL ;
GOTO $+1 ;
GOTO $+1 ;
DECFSZ CL,F ;
GOTO $-2 ;

XX BTFSS PORTA,0
GOTO SHOW

INCF COUNT,F ; attesa di 2uS
GOTO XX ; attesa di 2uS
SHOW MOVF COUNT,W
MOVWF PORTB
CLRF COUNT
GOTO MAIN

END
faustog_2 non è collegato   Rispondi citando