Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Valore quarzo

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto Utentecarloc, Foto UtenteDirtyDeeds, Foto UtenteIsidoroKZ

0
voti

[31] Re: Valore quarzo

Messaggioda Foto Utentesteeveone » 26 apr 2012, 18:58

Ciao, incuriosito dalla "diatriba", ho dato una sfogliata al datasheet del PIC in questione.
Non ho approfondito, ma nella sezione 7.4 (Timer1 Oscillator) leggo:
It is primarily intended for a 32.768 kHz watch crystal

Sono sicuro che troverai una application note che ti spiega come usare il timer1 per generare una base di tempi affidabile ;-)
Avatar utente
Foto Utentesteeveone
30 4
New entry
New entry
 
Messaggi: 69
Iscritto il: 13 mag 2011, 1:11

0
voti

[32] Re: Valore quarzo

Messaggioda Foto Utentemarco438 » 26 apr 2012, 20:29

Foto Utentesteeveone,
Io non ho letto il datasheet ne ho voglia di farlo adesso ma mi sembra evidente da quello che ha scritto Foto Utentemarioursino e dai risultati che ha ottenuto che ci sia la possibilita' di intervenire via software per adattare il micro a circostanze diverse da quelle da te evidenziate.
Non credo che lui abbia intrapreso una realizzazione con un micro, senza leggerne a fondo le caratteristiche.
O_/
marco
Avatar utente
Foto Utentemarco438
36,9k 7 11 13
-EY Legend-
-EY Legend-
 
Messaggi: 16328
Iscritto il: 24 mar 2010, 15:09
Località: Versilia

0
voti

[33] Re: Valore quarzo

Messaggioda Foto Utentemarioursino » 27 apr 2012, 2:00

Sì mi sono documentato sui vari timer, ormai è da qualche mese che utilizzo solo questo modello di microcontrollore, ho optato per l'utilizzo del timer2, questo dispone di un registro a 8 bit impostabile in runtime, che una volta raggiunto dal timer in questione scatena un interrupt e riporta il contatore a 0.

Timer1 avrebbe a disposizione 16 bit contro gli 8 di quello che sto utilizzando adesso, tuttavia per avere una tempistica affidabile scrivendo in C sarebbe meglio "lasciar correre" i timer senza mai impostarli manualmente, in questo modo non ti "scappa" nessun ciclo macchina imprevisto in quando gli incrementi sono indipendenti da qualsiasi istruzione si stia eseguendo.

Praticamente ho scelto di lavorare con il registro di overflow in quanto il quarzo da 12 MHz che ho trovato non ne vuole sapere di generare una frazione propria di secondo con nessun prescaler o postscaler, quindi o cambiavo quarzo per ottenere decimi o centesimi di secondo esatti ad ogni overflow (ogni multiplo di 65536 cicli macchina) oppure mi adattavo ai miei 12 MHz attraverso un overflow anticipato al valore che meglio preferivo.

Vi riporto le impostazioni del timer se avete curiosità:

PIC16F648A, Timer2, 8 bit.
Incrementa ogni \frac{4}{F_{osc}}, quindi nel mio caso ogni 0.\bar 3\mu s.

L'overflow è impostato a 199 cicli, quindi considerando anche l'operazione di reset compie un giro completo in 0.0\bar 6ms, quindi ottengo un secondo dopo 15000 overflow.

In "attesa" dello scoccare del mio secondo illumino i display. Dopo cena ho scritto il primo pezzo di firmware:

Codice: Seleziona tutto
#include <PIC.h>

#define DISPA RB0
#define DISPB RB1
#define DISPC RB2
#define DISPD RB3
#define DISPE RB4
#define DISPF RB5
#define DISPG RB6
#define DOTSO RB7

#define DISP1 RA0
#define DISP2 RA1
#define DISP3 RA2
#define DISP4 RA3
#define FUNC1 RA4
#define FUNC2 RA5

__CONFIG ( FOSC_HS & WDTE_OFF & PWRTE_ON & BOREN_OFF & LVP_OFF & CPD_OFF & CP_OFF );

static unsigned int cycles = 0;

void main (void)
{

   unsigned char secondi = 0;
   unsigned char minuti = 0;
   unsigned char ore = 0;

   OPTION_REG = 0b11001000;
   T2CON       = 0b00000100;
   INTCON       = 0b11000000;
   PIE1               = 0b00000010;
   PR2              = 199;
   TRISB        = 0;
   
   MCLRE        = 0;
   
   while(1)
   {
   
      while(cycles != 15000)
      {
      
            // display multiplexing
      
      }
      
      cycles = 0;
      
      if(secondi != 59)
         secondi++;
      else
      {
         secondi = 0;
         if(minuti != 59)
            minuti++;
         else
         {
            minuti = 0;
            if(ore != 23)
               ore++;
            else
               ore = 0;
         }
      }
      
   }
   
}

void interrupt ovflws (void)
{
   if (TMR2IF)
   {
      cycles++;
      TMR2IF = 0;
   }
   
   return;
}
Avatar utente
Foto Utentemarioursino
3.672 3 9 13
G.Master EY
G.Master EY
 
Messaggi: 1295
Iscritto il: 5 dic 2009, 4:32

0
voti

[34] Re: Valore quarzo

Messaggioda Foto Utentesteeveone » 27 apr 2012, 2:48

marco438 ha scritto:Non credo che lui abbia intrapreso una realizzazione con un micro, senza leggerne a fondo le caratteristiche.


Ciao! mi scuso per i modi del post di prima, non intendevo muovere critiche o fare il saccente (ci mancherebbe, sono DECISAMENTE ingorante :D ), perdonami.

Premesso che non ho mai costruito un orologio con un microcontroller, mi interrogavo su come mai usando come sorgente di clock un quarzo si ottengano dei tempi così sfasati.
E' per colpa dei condensatori?
Caspita se ho fatto bene i conti (non credo) è sfasato parecchio, diciamo 30Khz?
Seguendo questo mio ragionamento, mi è venuta in mente un'app note della atmel sul come usare un timer (asincrono rispetto alla cpu, usando come sorgente di clock un quarzo per orologi) + interrupt per creare una sorta di RTC software.
Cercando nel datasheet del PIC ho visto che il timer1 può essere collegato ad un quarzo da 32.768 kHz e ho dato per scontato che questo significhi che:
- il timer può essere configurato per funzionare asincronamente rispetto alla cpu
- il timer può generare interrupt
- la microchip ha scritto una app note simile a quella della atmel.

Non avrei dovuto scrivere niente senza verificare le mie ipotesi.
Comunque boh, no so dove volevo arrivare.
L'implementazione dell'rtc è piuttosto stupida, ovvero:
- si configura l'mcu per utilizzare il clock interno
- si configura il timer per usare il quarzo da 32Khz come clock
- si configura il timer per generare una interrupt all'overflow
- l'interrupt gestisce l'avanzare del tempo

Precaricando i registri del timer durante l'interrupt puoi fargliene generare una al secondo, diventa comodissimo, anche da calibrare :D

Così nel loop principale non resterebbe che gestire il display, e anche se il clock non è precisissimo non importa, tanto la base dei tempi è accurata.

In oltre, il timer1 configurato in modo asincrono continua a essere incrementato anche se l'mcu è in sleep, ed il timer può "svegliare" il micro all'overflow; quindi può mantenere l'ora anche se il micro viene messo in sleep (non so se questa caratteristica possa interessare a marioursino)

Mi sembrava un'idea carina e, visto i costi per realizzarla (1 quarzo e 2 condensatori, facilmente recuperabili), secondo me varrebbe la pena provarla.

O_/
Avatar utente
Foto Utentesteeveone
30 4
New entry
New entry
 
Messaggi: 69
Iscritto il: 13 mag 2011, 1:11

0
voti

[35] Re: Valore quarzo

Messaggioda Foto Utentebelva87 » 27 apr 2012, 13:41

marco438 ha scritto:
belva87 ha scritto:Ogni cosa del tipo purtroppo soffre di deriva... :roll:
Esistono RTC con possibilità di correzione software, altri solo a compensatore, altri entrambi.

Non per fare polemica, ma questo lo hai scritto tu.

Certo che l'ho scritto io, e penso sia corretto.. :roll: se non lo è spiegami il perché, te ne sarei grato. Ad ogni modo non capisco il motivo della eventuale polemica..
marco438 ha scritto:..ma ho soltanto evidenziato il modo piu' pratico per risolvere una situazione .

Come tu hai evidenziato il modo più pratico per risolvere la suddetta questione, l'ho fatto anche io spiegando il perché secondo me... c'è qualcosa che non va in questo?

Inoltre al post numero 25 dici:
marco438 ha scritto:Lascia perdere gli RTC e prova con il quarzo come ti ho detto.E' un sistema sicuro e verificato di persona.

Dire di lasciar perdere gli RTC senza darne la motivazione mi sembra alquanto infantile e poco costruttivo per il 3D e per l'OP; considerando in ultimo ma non ultimo il fatto che siamo in un forum tecnico...
Poi ovviamente sei libero di fare come preferisci e io non faccio il moderatore e tantomeno ho intenzione con questo intervento di "riprendere" o "mettere sull'attenti", ho semplicemente tenuto a precisare ciò che penso.

Concludo dicendo che gli RTC, dal più semplice al più complesso, sono un sistema sicuro, che ho verificato di persona...e non sono l'unico. Personalmente lo avrei adottato per realizzare ciò che serve all'OP, ma non devo realizzarlo io l'orologio perciò...

O_/ e buon weekend a tutti
Avatar utente
Foto Utentebelva87
2.292 2 6 12
free expert
 
Messaggi: 1323
Iscritto il: 9 mag 2011, 15:01

0
voti

[36] Re: Valore quarzo

Messaggioda Foto Utentemarco438 » 27 apr 2012, 13:47

Prima di tutto cerca di darti una calmata e comportati come si conviene; poi vai a rileggere quanto ho scritto al punto [29] che evidentemente non hai capito.
Ho ripetuto piu' volte che non metto in dubbio la validita' della tua idea ma ne confuto la praticita' nel caso.
Non capisco poi questo tuo attaccamento spassionato agli RTC; per caso li vendi?
marco
Avatar utente
Foto Utentemarco438
36,9k 7 11 13
-EY Legend-
-EY Legend-
 
Messaggi: 16328
Iscritto il: 24 mar 2010, 15:09
Località: Versilia

0
voti

[37] Re: Valore quarzo

Messaggioda Foto Utentebelva87 » 27 apr 2012, 13:52

marco438 ha scritto:Prima di tutto cerca di darti una calmata e comportarti come si conviene


Io sono calmo, forse tu non lo sei... che comportamento ho tenuto che merita questo tuo intervento?
Scusami se lo domando, ma veramente non capisco cosa ho scritto che non vada.
Se ti è possibile ti chiedo di spiegarmelo, se non puoi o non vuoi tu allora chiedo di farlo direttamente ad Foto Utenteadmin.

Grazie, Luca.

PS: non vendo RTC
Avatar utente
Foto Utentebelva87
2.292 2 6 12
free expert
 
Messaggi: 1323
Iscritto il: 9 mag 2011, 15:01

0
voti

[38] Re: Valore quarzo

Messaggioda Foto Utentemarco438 » 27 apr 2012, 14:00

Quello che non va nel tuo messaggio, se non te ne sei accorto, e' il tono.
Passando sopra a questo ( tanto ho le spalle larghe) hai fatto polemica inutilmente visto che, per ben due volte ti ho detto che la tua idea e' piu' che valida.
Non vedo quindi cosa tu stia cercando; ma forse infantilmente non ci arrrivo.
marco
Avatar utente
Foto Utentemarco438
36,9k 7 11 13
-EY Legend-
-EY Legend-
 
Messaggi: 16328
Iscritto il: 24 mar 2010, 15:09
Località: Versilia

0
voti

[39] Re: Valore quarzo

Messaggioda Foto Utentebelva87 » 27 apr 2012, 14:37

marco438 ha scritto:Quello che non va nel tuo messaggio, se non te ne sei accorto, e' il tono.

No, non me ne sono accorto!! Altrimenti non avrei domandato, sono giovane ma non un bamboccio...
Forse perché sono io che scrivo ed in buona fede oppure sono state mal interpretate le mie motivazioni e il mio messaggio. Il mio ultimo interesse, anzi neanche ultimo perché proprio non mi interessa, è fare polemica.
marco438 ha scritto:..per ben due volte ti ho detto che la tua idea e' piu' che valida.
Non vedo quindi cosa tu stia cercando.

Se la mia idea sia più che valida o meno, con il senso dei miei interventi, conta poco...non volevo mettermi in luce o fare la figura del figo o cose simili, non mi interessa questo...io ho solo voluto metterla a tavolino e disponibile per l'OP e chiunque altro legga il 3D. Ed è anche per questo che il post 29 l'ho letto ma non ho aggiunto altro in merito.
Ad ogni modo ti ringrazio che pensi questo della mia idea, però proprio perché lo pensi non capisco il motivo delle tue parole al post 25, che non riporto per non essere ridondante.
Pensi siano adeguate?
Si fa per parlare, non ho intenzione di fare polemica come già detto in precedenza.

Ti scrivo come avrei risposto io al tuo posto se ho capito come la pensi:
"Bella idea l'RTC, però credo che per lo scopo del nostro amico (riferito all'OP) sia più semplice, ed anche meno costoso dato che non comprerebbe nulla, adottare la soluzione con il semplice quarzo e condensatori/compensatori. Ad ogni modo la scelta sta a lui, ciao firmato marco438"

Ovvio questo sarei stato io, tu sei tu, e non sto dicendo come avresti dovuto rispondere, chi sono per farlo? nessuno, e se fossi stato qualcuno, non mi sarei permesso. Ho semplicemente detto come secondo me sarebbe stato meglio fare per tanti motivi tra i quali quello di ridurre le probabilità di incappare in cose del genere ecc ecc.
Quindi, secondo me, dire in modo così "secco" quelle cose, mi riferisco al post 25, a seguito del mio pacato intervento non è cosa piacevole, oltre che poco "tecnica", tutto qui.
Se per te non è così okey, lo rispetto e me ne dispiaccio perché proprio non è mia intenzione "fare casino" all'interno dei forum; però più che parlare chiaro e pacatamente, come faccio sempre, non posso fare.
Scusate per la lunghezza del post e per il ritardo nel rispondere, spero si sia capito cosa ho voluto dire ora e in tutti i post precedenti a partire dal primo.
O_/ Luca.
Avatar utente
Foto Utentebelva87
2.292 2 6 12
free expert
 
Messaggi: 1323
Iscritto il: 9 mag 2011, 15:01

0
voti

[40] Re: Valore quarzo

Messaggioda Foto Utentemarco438 » 27 apr 2012, 16:05

Come ho gia' detto in precedenza, quella che si sta' facendo e' una polemica inutile sia per l'OP che per il forum.
Voglio solo farti notare che, sin dal post 23 (quindi prima della discussione) marioursino aveva deciso di non adottare la tua idea e lo ha chiaramente espresso.
Per questo e,non comprendendo la tua successiva insistenza, e' nato il diverbio.
Comunque chiudiamola qui.
marco
Avatar utente
Foto Utentemarco438
36,9k 7 11 13
-EY Legend-
-EY Legend-
 
Messaggi: 16328
Iscritto il: 24 mar 2010, 15:09
Località: Versilia

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Majestic-12 [Bot] e 29 ospiti