- Messaggi: 59
- Ringraziamenti ricevuti 0
come impostare il programma
10 Anni 4 Mesi fa #1
da sharky
come impostare il programma è stato creato da sharky
Ciao a tutti!
ho la seguente situazione e non ho idea di come impostare il programma per renderlo più veloce e ottimizzato possibile...
allora:
- ho un pic 12F683
- uso 2 ingressi analogici con tre differenti potenziometri
- uso 1 ingresso digitale
- uso 1 uscita digitale
- se l' ingresso digitale = 1, devo leggere il valore dell ingresso analogico 3, in base a qeuseto valore fare un calcolo e aggiornare il pwm in uscita sull uscita digitale.
- se l' ingresso digitale = 0, devo leggere sia il valore dell ingresso analogico 1 che quello dell ingresso analogico 2, e fare nuovamente un calcolo e aggiornare il pwm in uscita.
i blocchi base come il PWM e la lettura dell ingresso analogico 3 sono gia fatti. la difficoltÁ ce'l ho nella parte in grassetto sopra, cioè come imposto il programma per leggere entrambi i valori e appena ho entrambi i valori faccio il calcolo? (tutto cio si deve aggiornare di continuo)
vi spiego di cosa si tratta: stiamo parlando di un robot spara palline da ping pong. questo robot ha due ruote che girano a velocità regolabile (ingresso analogico 1 e 2) in base a come osno regolate questi due motori devo alzare o abbassare la testa di lancio per non mancare il tavolo. della serie, un tiro più forte dovra mirare più in basso, un tiro ad affetto dovrà mirare più in alto e cosi via.. questo controllo automatico puo essere spento tramite un interruttore (ingresso digitale) in tal caso si puo regolare l altezza del tiro manualmente tramite un ulteriore potenziomentro (ingresso analogico 3) l uscita del pic va a controllare direttamente il servo che regola l angolazione. Il robot spara palline a intevalli di 0.5 secondi quando va al massimo. il servo ci mette 0.4 secondi per muoversi da un estremo all altro, perciò mi restano circa 0.1 secondi per leggere entrambi gli ingressi fare il calcolo e aggiornare il pwm. secondo il datasheet quando si cambia ingresso analogico si deve aspettare (ww1.microchip.com/downloads/en/DeviceDoc/41211D_.pdf pagina 63, capitolo 9.1.2) ma non riesco a capire quanto sia questa pausa.
che mi consigliate?
grazie!!
ho la seguente situazione e non ho idea di come impostare il programma per renderlo più veloce e ottimizzato possibile...
allora:
- ho un pic 12F683
- uso 2 ingressi analogici con tre differenti potenziometri
- uso 1 ingresso digitale
- uso 1 uscita digitale
- se l' ingresso digitale = 1, devo leggere il valore dell ingresso analogico 3, in base a qeuseto valore fare un calcolo e aggiornare il pwm in uscita sull uscita digitale.
- se l' ingresso digitale = 0, devo leggere sia il valore dell ingresso analogico 1 che quello dell ingresso analogico 2, e fare nuovamente un calcolo e aggiornare il pwm in uscita.
i blocchi base come il PWM e la lettura dell ingresso analogico 3 sono gia fatti. la difficoltÁ ce'l ho nella parte in grassetto sopra, cioè come imposto il programma per leggere entrambi i valori e appena ho entrambi i valori faccio il calcolo? (tutto cio si deve aggiornare di continuo)
vi spiego di cosa si tratta: stiamo parlando di un robot spara palline da ping pong. questo robot ha due ruote che girano a velocità regolabile (ingresso analogico 1 e 2) in base a come osno regolate questi due motori devo alzare o abbassare la testa di lancio per non mancare il tavolo. della serie, un tiro più forte dovra mirare più in basso, un tiro ad affetto dovrà mirare più in alto e cosi via.. questo controllo automatico puo essere spento tramite un interruttore (ingresso digitale) in tal caso si puo regolare l altezza del tiro manualmente tramite un ulteriore potenziomentro (ingresso analogico 3) l uscita del pic va a controllare direttamente il servo che regola l angolazione. Il robot spara palline a intevalli di 0.5 secondi quando va al massimo. il servo ci mette 0.4 secondi per muoversi da un estremo all altro, perciò mi restano circa 0.1 secondi per leggere entrambi gli ingressi fare il calcolo e aggiornare il pwm. secondo il datasheet quando si cambia ingresso analogico si deve aspettare (ww1.microchip.com/downloads/en/DeviceDoc/41211D_.pdf pagina 63, capitolo 9.1.2) ma non riesco a capire quanto sia questa pausa.
che mi consigliate?
grazie!!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- sharky
- Autore della discussione
- Senior Member
Riduci
Di più
10 Anni 4 Mesi fa #2
da StefA
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Risposta da StefA al topic come impostare il programma
da uno sguardo rapido mi sembra di capire che bisogna attendere 2TAD prima di ricominciare con un'altra conversione (pag 63, 9.2.3). Per una conversione completa da 10bit bisogna aspettare 11TAD (pag 62, 9.1.4 e figura 9.2). E TAD mi sembra si ricavi dalla tabella 9.1 (ad es. se hai una frequenza del quarzo da 8 MHz e FOSC/16, hai un TAD: 2us).
Quindi nel tuo caso, se possibile, dovresti metterti nelle condizioni "migliori" 20MHz - Fosc/2 così da avere un TAD di 100ns; in questo modo due conversioni più un tempo di attesa nel mezzo ti occuperebbero 11Tad + 2Tad + 11Tad = 24Tad -> 24 * 100ns = 2400ns = 2.4us.
Questo tempo sarebbe molto inferiore ai 100ms che hai disponibili, però devi vedere quanto impieghi a fare il calcolo e impostare il pwm.
Spero di aver fatto bene i conti..
Ste
Quindi nel tuo caso, se possibile, dovresti metterti nelle condizioni "migliori" 20MHz - Fosc/2 così da avere un TAD di 100ns; in questo modo due conversioni più un tempo di attesa nel mezzo ti occuperebbero 11Tad + 2Tad + 11Tad = 24Tad -> 24 * 100ns = 2400ns = 2.4us.
Questo tempo sarebbe molto inferiore ai 100ms che hai disponibili, però devi vedere quanto impieghi a fare il calcolo e impostare il pwm.
Spero di aver fatto bene i conti..
Ste
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Ringraziano per il messaggio: sharky
Si prega Accedi o Crea un account a partecipare alla conversazione.
- StefA
- Moderator
Riduci
Di più
- Messaggi: 1222
- Ringraziamenti ricevuti 104
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.