pilotare 2 servo con tre timer del pic18f4550

6 Anni 10 Mesi fa - 6 Anni 10 Mesi fa #1 da mpeino

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • mpeino
  • Elite Member
  • Elite Member
Di più
6 Anni 10 Mesi fa #2 da Pinna
Caio Massimo, solo ora ho potuto dare un'occhiata al tuo programma (sto correggendo qualche cosa non corretta sull'articolo
riguardante il modulo nrf24l01)..... senti, la prima cosa che ho visto, non conosco mikroC, è che nei define hai scritto PORTD.B0 e PORTD.B1.. mi chiedo, è giusto ciò che hai scritto oppure si tratta di un errore di battitura dove invece va scritto PORTD.D0 e PORTD.D1? se vuoi chiamami e ne parliamo tra noi al telefono :)

Marcello

Chi vola vale, chi vale vola, chi non vola è un vile

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
6 Anni 10 Mesi fa #3 da mpeino
Risposta da mpeino al topic pilotare 2 servo con tre timer del pic18f4550
PORTD.B0 e PORTD.B1 significa pin0 e pin1 della PORTD per il resto non cambia molto con il compilatore della microchip.

ciao e grazie Marcello

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • mpeino
  • Elite Member
  • Elite Member
Di più
6 Anni 10 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic pilotare 2 servo con tre timer del pic18f4550
Salve Massimo,

potresti specificare il quarzo di cui fai uso?
Dal momento che parli di tempi degli impulsi presumo che tu abbia fatto delle misure con un oscilloscopio.
Hai modo di postare degli screen shot?

Da uno sguardo veloce, per ora ti posso dire che in generale il timer lo devi attivare dopo che viene impostato altrimenti perdi dei "colpi".

Formalmente se imposti tutti i timer ogni 20ms vuol dire che il tuo periodo totale è 20ms + il tempo che impieghi per le impostazioni.

Dovendo gestire più servi e tempi ridotti organizzerei il programma in maniera diversa, in particolare facendo uso delle state machine, ovvero eseguo il codice nel main e negli interrupt (ISR) cambio solo il valore di stato.
A seconda dello stato della state machine nel main eseguo un codice diverso.

Personalmente userei un timer per una base dei tempi che mi permetta di ottenere 20ms.
Magari con tempi da 10ms, e un secondo timer per orchestrare i servo.

Potrebbe tornare utile un tempo di 10ms * 2 in maniera da fare le impostazioni durante i tempi morti e non dopo i 20ms.

Quali sono le specifiche del tuo sistema?
Quanti servi?
Quanti potenziometri? (mi aspetto 1:1 con servi.)


Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
6 Anni 10 Mesi fa - 6 Anni 10 Mesi fa #5 da Pinna
Massimo, io non so più come dirtelo...... quello che leggi nell'oscilloscopio è una somma dei tempi totali di tutti i servi, non il tempo per ogni singolo servo.... se nel programma imposti un timer qualunque per darti 20 ms, sempre 20 ms ti darà, perchè il calcolo del tempo, dopo l''azzeramento dello stesso, prevede quello; il timer è impostato così e non fa ciò che vuole lui..... scusa, ma se tu dovessi usare 16 servi useresti un pic che ha 17 timers? a parte che non esistono, ma ti pare logico? io, come tutti, uso due timer, uno per i 20 ms e l'altro per regolare l'ampiezza del segnale pwm tramite adc... ogni canale adc lo scansiono uno per volta effettuando uno shift.... insomma, te lo ha detto Gianni, te lo detto io, forse in modo velato te lo ha detto anche Mauro e tu ancora ti ostini? vuoi per caso riscoprire l'aqcua calda????? Detto questo, ti abbraccio perchè sei veramente una bellissima persona, a cui mi sono affezionato, nonostante ti abbia conosciuto in una sola occasione, quella del MF2014.... ma dai, prenditi un giorno, vieni a roma a trovarmi e ti dimostreò che ti sbagli..... e dopo andiamo a mangiare un'ottima pinsa (non pizza) a 100 metri da casa mia, chiaramente ospite mio :) :) :)

dimenticavo..... tua famiglia compresa :) :) :)

Chi vola vale, chi vale vola, chi non vola è un vile
Ultima Modifica 6 Anni 10 Mesi fa da Pinna.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login