| |
| | #1 (permalink) Top | |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.070
| Citazione:
facendo una simulazione su una scala dei tempi: T=0 Misuro l'impulso, supponiamo sia 1800uS T=1800 Genero l'impulso 2000 T=3800 Mi metto a riaspettare il nuovo input T=20000 Arriva il nuovo impulso... Non capisco dove serva l'interrupt, ma anche andando all'indietro T=0 Misuro l'impulso 1200 T=1200 Genero l'impulso 1000 T=2200 Mi metto a riaspettare il nuovo impulso T=20000 Arriva il nuovo... I due impulsi non vanno a velocità diverse hanno solo lunghezza diversa ma, se si vuole stare nello standard, la ripetizione è 50 hz. Scomodare la gestione degli interrupt in questo caso non serve, la base dei tempi dei 50hz te la da la ricevente, non è necessario gestire anche la durata della pausa dell'impulso generato. | |
| | |
| | #2 (permalink) Top | |
| User Data registr.: 06-08-2007 Residenza: Empoli
Messaggi: 1.813
| Citazione:
L'interrupt non è necessario, basta leggere il timer per calcolare la durata dell'impulso. Forse l'interrupt può tornare utile se il firmware fa anche altre cose, ma se fa solo quello direi che si può evitare. Allora, sarà l'ora tarda, ma continuo a non capire la domanda iniziale. ![]() Che vuol dire tornare indietro nel tempo? Forse appena arriva alto l'impulso in ingresso lo porti alto anche in uscita e quindi non puoi farlo più breve di quanto ricevi (a meno di predire il futuro)? Se questa era la domanda, direi che il flusso è sbagliato. Misuri impulso, generi di conseguenza l'impulso in out, più breve o più lungo.
__________________ ....... | |
| | |
| | #3 (permalink) Top |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.070
|
Credo che la domanda iniziale fosse generata dalla voglia di far partire l'impulso in uscita in contemporanea con quello in entrata, ma la cosa è assolutamente inutile ed totalmente infattibile..
|
| | |
| | #4 (permalink) Top |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| ok
il problema è che se fosse solo leggere un impulso e poi come risposta sommare un ritardo opportuno.. il discorso era già risolto... ma in caso di impulsi al di sotto dei 1500 uS occorre avere un ritardo ancora più breve... quindi come intuito qui da tutti IMPOSSIBILE.. per questo si può optare nel rielaborare il ritardo durante la pausa dei 20 - 30 millisecondo e quindi dare risposta opportuna diminuendo il ritardo. tutto qui |
| | |
| | #5 (permalink) Top | |
| Adv Moderator Data registr.: 15-08-2007 Residenza: sto a Massa ma sono molto Positivo
Messaggi: 12.070
| Citazione:
Tu devi generare un impulso PWM con frequenza totale di 50Hz in base ad un impulso che ti arriva. Che i due impulsi inizino asseme non ti importa nulla, ne tantomeno importa al servo. Pertanto l'unica cosa che devi fare è: leggere l'impulso, calcolare la durata di quello da generare in base alla tua funzione di trasformazione e generare l'impulso in uscita. Non centrano nulla i ritardi o gli anticipi (credo sia la corretta definizione di "ritardo ancora più breve") In picbasic il tuo problema lo si risolve con ben 8 righe di codice. Esempio per aumentare del 20% le corse: while 1=1 a=pulsin(gpio.portain,1); if (a!=0) then b=((a-150)*1.2)+150; low gpio.portaout; pulsout(gpio.portaout, b,1); endif wend Alla fine non mi sembra così complesso... | |
| | |
| | #6 (permalink) Top | |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| ok
scusami se uso terminologia marziana! appena ho tempo cerco di tradurre tutt oin termini di assembler ..comunque mi la tua osservazione coincide con la mia .. però detta meglio da te ovviamente.. a dopo Citazione:
| |
| | |
| | #7 (permalink) Top |
| User Data registr.: 19-07-2008 Residenza: catania
Messaggi: 978
| Problema !!!
ALLORA.. STUDIANDO E LEGGENDO DATASHEET COMPRESO.. APPRENDO CHE IL PWM NON SERVE E' SUFFICIENTE USARE IL MODULO TMR0 PERO PERO PERO.. C'E UN PROBLEMA CHE MI STA FACENDO GIRARE LE BAL.. OVVERO PRIMA DI OGNI COSA OCCORRE LEGGERE IL SEGNALE DALLA RICEVENTE... ECCO E MI SPIEGO, HO FATTO UNA SEPLICE ROUTINE CHE FUNZIONA SOLO SE USO UN TEST PER SERVER OVVERO QUEI DISPOSITIVI CHE GENERANO DEGLI IMPULSI UGUALI A QUELLI PROVENIENTI DA UNA RICEVENTE, CON IL POTENZIOMETRO SI PUO VARIARE LA POSISZIONE DEL SERVO FIN QUI SPETTACOLARE TUTTO OK... PERO SE USO LO STESSO CON UNA QUALUNQUE RICEVENTE.. KO!!! NIENTE DA FARE ELETTROENCEFALOGRAMMA PIATTO!!! CHE NE PENSATE? ECCO LA ROUTINE: ;----------------------------------------------------- ; This software read data fron Hitech receiver. ; For each pulse it's show value by led in binary mode ; the value 40 < COUNT < 207 ; ; software by Fausto Giudice ;----------------------------------------------------- PROCESSOR 16F628 RADIX DEC INCLUDE "P16F628.INC" __CONFIG 11110100010000B ;----------------------------------------------------- COUNT EQU 32 CL EQU 33 ;----------------------------------------------------- ORG 0 ; ; -------------------------------- ; SET ANALOG/DIGITAL INPUTS PORT A ; -------------------------------- ; MOVLW 7 ;QUESTA OPZIONE E' NECESSARIA SE SI VUOLE USARE PORTA COME INPUT MOVWF CMCON ;CMCON=7 set comperators off ; ; ---------------- ; INITIALIZE PORTS ; ---------------- ; BSF STATUS,RP0 ; ** BANK1 ** MOVLW b'00000000' MOVWF TRISB ; portB all pins output MOVLW b'11110100' MOVWF TRISA ; RB7-RB4 and RB1(RX)=input, others output BCF STATUS,RP0 ; ** BANK0 ** CLRF COUNT CLRF PORTB MAIN BTFSS PORTA,2 ; IF (bit 0 di PORTA è = 1) GOTO $-1 MOVLW 178 ; 1uS | MOVWF CL ; 1uS | 4uS GOTO $+1 ; 2uS | ****** ATTESA DI 0.9 mS ****** GOTO $+1 ; 2uS | DECFSZ CL,F ; 1uS | 5uS * (178 - 1) = 885uS + 4 + 2 = 891 uS circa GOTO $-2 ; 2uS | XX BTFSS PORTA,2 ; 2uS GOTO SHOW INCF COUNT,F ; attesa di 1uS GOTO XX ; attesa di 2uS totale 5uS SHOW MOVF COUNT,W MOVWF PORTB CLRF COUNT GOTO MAIN END |
| | |
![]() |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Messaggio |
| Aumentare Range TX-RX | Katana13 | Radiocomandi | 12 | 18 marzo 10 17:00 |
| Aumentare la velocità | imperatore82. | Aeromodellismo Volo Elettrico | 1 | 04 novembre 09 13:10 |
| Aumentare la spinta | twentynine | Aeromodellismo Ventole Intubate | 18 | 18 gennaio 09 19:19 |
| Aumentare % miscela | truffolo | Automodellismo Mot. Scoppio On-Road | 10 | 02 ottobre 07 10:24 |
| eco 8 - aumentare il passo | xfile69 | Elimodellismo Principianti | 0 | 19 agosto 06 22:51 |