Posso chiedere cosa mi consigliereste usare come modulo hardware del Pierin per generare i segnali del servo?
Avevo pensato al compare CCP, ma di fatto mi ritrovo a fare le stesse cose con il timer0, come controllo dello stato, impostazione del limite ecc. Quindi questa domanda potrebbe anche essersi risposta da sola. Il PWM no, perché l'idea è di usare la frequenza del PLL a 48MHz e quindi come periodo minimo non ci siamo.
Imprecisione su Timer0 (PIC18)
Moderatore:
Paolino
31 messaggi
• Pagina 2 di 4 • 1, 2, 3, 4
1
voti
Di risorse, il micro di cui stiamo parlando, ne ha diverse.
Puoi ricorrere a quelle che hai indicato ma la loro scelta e, sopratutto, la modalità d'impiego, dal mio punto di vista, dovrebbe considerare la "applicazione" nel suo insieme.
Ovvero, valutare tutte le esigenze inerenti il progetto e poi trovare la soluzione più adeguata; può anche significare, magari, per certe funzioni, ricorrere ad un compromesso.
Sono risposte che puoi trovare una volta definiti tutti gli elementi del caso.
Lungi dall'essere evasivo ma, senza andare lontano, riprendendo come esempio il codice che avevi inizialmente inserito nel post, se invece di calcolare il valore per la variabile timer tu avessi inserito un numero predefinito non avresti, senza volerlo, protratto il tempo d'azzeramento.
Allora, in un caso del genere, se ritenessi di poter soddisfare la parametrizzazione ricorrendo a valori prestabiliti, invece dell'equazione, potresti inserire le "costanti" in una tabella dalla quale andare a recuperare il contenuto in funzione della richiesta di spostamento (in un verso, o nell'altro) del servo; il Timer0 farebbe il suo "lavoro", la routine non verrebbe sovraccaricata e le tempistiche garantite.
Ma, appunto, è tutto relativo.
Questa è solo una modesta indicazione solo a titolo di esempio: che possa essere compatibile o meno col "punto d'arrivo" del tuo progetto, come tante altre eventuali, solo tu puoi saperlo.
Saluti
Puoi ricorrere a quelle che hai indicato ma la loro scelta e, sopratutto, la modalità d'impiego, dal mio punto di vista, dovrebbe considerare la "applicazione" nel suo insieme.
Ovvero, valutare tutte le esigenze inerenti il progetto e poi trovare la soluzione più adeguata; può anche significare, magari, per certe funzioni, ricorrere ad un compromesso.
Sono risposte che puoi trovare una volta definiti tutti gli elementi del caso.
Lungi dall'essere evasivo ma, senza andare lontano, riprendendo come esempio il codice che avevi inizialmente inserito nel post, se invece di calcolare il valore per la variabile timer tu avessi inserito un numero predefinito non avresti, senza volerlo, protratto il tempo d'azzeramento.
Allora, in un caso del genere, se ritenessi di poter soddisfare la parametrizzazione ricorrendo a valori prestabiliti, invece dell'equazione, potresti inserire le "costanti" in una tabella dalla quale andare a recuperare il contenuto in funzione della richiesta di spostamento (in un verso, o nell'altro) del servo; il Timer0 farebbe il suo "lavoro", la routine non verrebbe sovraccaricata e le tempistiche garantite.
Ma, appunto, è tutto relativo.
Questa è solo una modesta indicazione solo a titolo di esempio: che possa essere compatibile o meno col "punto d'arrivo" del tuo progetto, come tante altre eventuali, solo tu puoi saperlo.
Saluti
W - U.H.F.
-

WALTERmwp
30,2k 4 8 13 - G.Master EY

- Messaggi: 8981
- Iscritto il: 17 lug 2010, 18:42
- Località: le 4 del mattino
0
voti
Ovviamente stavo parlando per una applicazione "che fa solo quello" quindi non implementata in un progetto più ampio: volevo valutare le opzioni hw, soltanto. Stavo infatti cercando funzioni "campione" per i servo, ma ognuno ha una versione diversa.
Il mio approccio tende spesso ad essere quello di svilupparsi un modulino per fare quello e poi metterlo in un progetto che fa quello ed altro: se con un ragionamento superficiale la cosa puà funzionare, integro il tutto e modifiche eventuali le vedo dopo l'integrazione, ad esempio come si comportando più interrupt insieme e se vale la pena cambiare l'algoritmo per non interferire con l'interrupt ecc.
Comunque ho usato la funzione anche per il periodo lungo un po per disattenzione un po perché ultimamente mi sto divertendo a parametrizzare tutto, mi sa di più ordinato e dopo un po non ci pensi più e usi solo quelle tue funzioni per fare cose dove a volte basta una semplice assegnazione. Ti ringrazio, sono il tipo di persona che magari studiandosi il mondo per produrre qualcosa poi si intoppa in cose ovvie come queste che magari poi risolvevo da solo senza chiedere.
Grazie per l'aiuto, spesso mi basta sapere di aver appoggio morale per ragionare meglio, cioè sapere solo che l'idea non sia sbagliata completamente e che valga la pena portarla avanti. Da cui ecco perché ho chiesto se esistevano altre versioni o se la mia era ragionevole. Dalla tua risposta, quindi, come risponde un buon ingegnere a tutto, è "dipende" ;)
Il mio approccio tende spesso ad essere quello di svilupparsi un modulino per fare quello e poi metterlo in un progetto che fa quello ed altro: se con un ragionamento superficiale la cosa puà funzionare, integro il tutto e modifiche eventuali le vedo dopo l'integrazione, ad esempio come si comportando più interrupt insieme e se vale la pena cambiare l'algoritmo per non interferire con l'interrupt ecc.
Comunque ho usato la funzione anche per il periodo lungo un po per disattenzione un po perché ultimamente mi sto divertendo a parametrizzare tutto, mi sa di più ordinato e dopo un po non ci pensi più e usi solo quelle tue funzioni per fare cose dove a volte basta una semplice assegnazione. Ti ringrazio, sono il tipo di persona che magari studiandosi il mondo per produrre qualcosa poi si intoppa in cose ovvie come queste che magari poi risolvevo da solo senza chiedere.
Grazie per l'aiuto, spesso mi basta sapere di aver appoggio morale per ragionare meglio, cioè sapere solo che l'idea non sia sbagliata completamente e che valga la pena portarla avanti. Da cui ecco perché ho chiesto se esistevano altre versioni o se la mia era ragionevole. Dalla tua risposta, quindi, come risponde un buon ingegnere a tutto, è "dipende" ;)
4
voti
Con il PIERIN PIC18, per generare gli impulsi per un servo ho semplicemente impiegato un timer ed un pin, senza dover scomodare il modulo PWM. Funziona.
Ciao.
Paolo.
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
Paolino ha scritto:Con il PIERIN PIC18, per generare gli impulsi per un servo ho semplicemente impiegato un timer ed un pin, senza dover scomodare il modulo PWM. Funziona.
Riprendendo questa cosa, appunto, è come ho fatto io:
Cioè, ho usato il timer0 e un pin senza moduli PWM. Ma come hai risolto per non appesantire il conto? Io devo usarli quei parametri grossi per trovare un numero.. Qualche accorgimento lo sto mettendo su, come lavorare su un periodo e non sulla frequenza, ma mi trovo con dei float fissi, 1.3 (ms) ad esempio e costanti moltiplicative di 46.9 per intenderci.
Considera che se poi sei del settore, è possibile che usi delle versioni PRO di compilatori e che quindi (da cosa ho letto) tu usi il moltiplicatore hardware avendo forse meno problemi che io invece riscontro a parità di codice.
1
voti
Appena riesco metto due righe di codice.
Ciao.
Paolo.
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
Già che ci sono butto un'altra domanda: il PIC18 ha un set di istruzioni esteso, con tanti modi di accesso alla RAM, il moltiplicatore hw e altre cose che ora non ricordo.
Ho letto che non sono supportate dall'XC8. Significa che per sfruttare (idealmente) all'estremo le istruzioni del PIC, devo usare l'assembler? E' vero che è supportato dal C18?
Ho letto che non sono supportate dall'XC8. Significa che per sfruttare (idealmente) all'estremo le istruzioni del PIC, devo usare l'assembler? E' vero che è supportato dal C18?
1
voti
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
31 messaggi
• Pagina 2 di 4 • 1, 2, 3, 4
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 6 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
