Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ottenere 1 Hz precisissimo, 16f84a

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[21] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtenteArrow » 5 apr 2015, 21:14

Ma scusa, nell'interruzione ci metti solo l'incremento del contatore e nel main metti un grosso switch-case, non mi sembra molto difficile e se vuoi fare altre cose mentre tieni l'orologio puoi mettere un flag che diventa true quando il programma entra nell'interruzione e nel main ci fai il solito switch-case dove si entra solo se il flag è vero.
Solo che in questo momento mi sorge un dubbio: perché scrivi in assembly? In MPLABX non c'è la possibilità di usare il C? Sarebbe decisamente più semplice e l'effetto che otterresti sarebbe più o meno lo stesso dato che non credo ti serva una roba performante al 100% con il minimo utilizzo di ROM possibile....
Avatar utente
Foto UtenteArrow
103 1 6
Frequentatore
Frequentatore
 
Messaggi: 166
Iscritto il: 11 giu 2014, 22:12

0
voti

[22] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto Utenteedgar » 5 apr 2015, 22:59

carlomusumeci ha scritto:scusatemi allora a questo punto faccio così?

Però non alimentare il tutto a 12V come nello schema, altrimenti friggi il povero PIC.

Altra possibilità è demandare tutta la parte di conteggio ad un RTC come il DS1307 o similari e usare il micro solo per leggerne i registri ed ottenere anni, mesi, giorni, ore, minuti e secondi
Avatar utente
Foto Utenteedgar
6.367 3 5 8
Master
Master
 
Messaggi: 3212
Iscritto il: 15 set 2012, 22:59

0
voti

[23] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto Utentecarlomusumeci » 5 apr 2015, 23:01

certo,solitamente piu di 5 v non do al PIC,come funziona questo ds1307?Foto UtenteArrownon conosco il linguaggio C,so solo l'assembly
Avatar utente
Foto Utentecarlomusumeci
353 5 7
Sostenitore
Sostenitore
 
Messaggi: 526
Iscritto il: 8 apr 2011, 0:35

1
voti

[24] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto Utentedimaios » 5 apr 2015, 23:17

E' interessante il titolo del thread ma non viene specificata la precisione.

"Ottenere 1 Hz precisissimo, 16f84a"

Cosa significa precisissimo ? Quante parti per milione ?

A seconda di quello che intendi fare potrebbe essere sensato realizzarlo con il PIC 16F84A oppure devi andare su altre categorie di prodotto quali i real time clock ( RTC ).


Es. http://www.maximintegrated.com/en/products/digital/real-time-clocks/DS3231.html
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
29,0k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3239
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[25] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtenteWALTERmwp » 5 apr 2015, 23:39

Ciao Foto Utentecarlomusumeci, l'impiego degli RTC è una valida soluzione ma, se ti poni dei dubbi sul ricorso all'interrupt sulla base di un secondo primo, non credo che per te, al momento, con il PIC16F84 la cosa sia agevole da gestire.
Se non erro sono tutti (o quasi) chip che prevedono la comunicazione su I2C ed il tuo micro, tra l'altro, ne è privo.
Ti suggerirei di seguire l'indicazione di Foto Utentesimo85 (Post [12]); questa, a maggior ragione se hai una miriade di processi da tenere sotto controllo, mi sembra la cosa più "pulita".

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
23,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6830
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[26] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto Utentecarlomusumeci » 5 apr 2015, 23:48

avete ragione credo che la soluzione migliore per questo PIC sia quella nel post 12,consigliata da Foto Utentesimo85
Avatar utente
Foto Utentecarlomusumeci
353 5 7
Sostenitore
Sostenitore
 
Messaggi: 526
Iscritto il: 8 apr 2011, 0:35

0
voti

[27] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtenteGuidoB » 6 apr 2015, 0:16

carlomusumeci ha scritto:il problema è che facendo avvenire un interrupt ogni secondo non potrei utilizzare il PIC per svolgere anche altre operazioni...poiché il programma viene interrotto in continuazione...

È vero l'esatto contrario. Gli interrupt servono per effettuare diverse gestioni allo stesso tempo, senza che una blocchi l'altra. Interrompere (per breve tempo) non è bloccare.
Big fan of ƎlectroYou!
Avatar utente
Foto UtenteGuidoB
15,5k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 2349
Iscritto il: 3 mar 2011, 16:48
Località: Madrid

0
voti

[28] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtenteArrow » 6 apr 2015, 0:23

Siano benedetti gli interrupt! :mrgreen: :mrgreen:

Come ha detto GuidoB le interruzioni servono proprio a quello, poi come ho detto prima, in 1s sai quante cose ci fa il micro?! :D
Per esempio il codice di un robot che stiamo facendo nel main certe azioni vengono svolte solo in caso di flag positivo attivato da interrupt....


p.s. se vuoi un consiglio da uno studente diplomando e inesperto (solo 3 anni in questo mondo) impara il C, non è difficile come credi, anzi se non è più facile...
Avatar utente
Foto UtenteArrow
103 1 6
Frequentatore
Frequentatore
 
Messaggi: 166
Iscritto il: 11 giu 2014, 22:12

0
voti

[29] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto Utentecarlomusumeci » 6 apr 2015, 0:25

Già...me ne sto accorgendo solo ora scrivendo il Firmware...in questo modo nel main potrei anche pilotare un lcd per altre operazioni,mentre nell'interrupt svolgo le operazioni di incremento registri orologio...e poi visto che l'impulso a 1 Hz viene generato dall'esterno l'incremento dei registri avviene sempre in modo preciso...
Avatar utente
Foto Utentecarlomusumeci
353 5 7
Sostenitore
Sostenitore
 
Messaggi: 526
Iscritto il: 8 apr 2011, 0:35

0
voti

[30] Re: Ottenere 1 Hz precisissimo, 16f84a

Messaggioda Foto UtenteWALTERmwp » 6 apr 2015, 0:52

carlomusumeci ha scritto:mentre nell'interrupt svolgo le operazioni di incremento registri orologio...
no, non è corretto e non è quello che è stato riportato nel Post [12]; poi, naturalmente, puoi fare come vuoi.
Per principio, la routine di interrupt la devi "impegnare" lo stretto indispensabile, e gli incrementi dei tuoi registri (al pari della gestione di un lcd) li esegui nel tuo "main".

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
23,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6830
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite