- Messaggi: 250
- Ringraziamenti ricevuti 0
Delay10KTCYx()
11 Anni 4 Mesi fa - 11 Anni 4 Mesi fa #1
da luca2680
Delay10KTCYx() è stato creato da luca2680
Salve,sto guardando la funzione di delays per saperne un po' di piu e ho capito questo:
Usando un quarzo INTERNO da 8 Mhz,la mia relazione sara' 1/8=0,125 poi prendo questo 0,125 e lo moltiplico per 4 Tclock,cioè 0,5...
Di conseguenza il mio Delay10KTCYx() ritarda di 5000 uS...giusto fino ad ora?
Comunque ho capito anche che piu di un sec e 20 non va oltre....ma se voglio ad esempio 7 sec,come faccio?
Correggetemi se sbaglio,ma non posso utilizzare il delay1oktc con la libreria "LCD_44780",giusto?perche usa il delay in ms o s giusto?
vi ringrazio
Usando un quarzo INTERNO da 8 Mhz,la mia relazione sara' 1/8=0,125 poi prendo questo 0,125 e lo moltiplico per 4 Tclock,cioè 0,5...
Di conseguenza il mio Delay10KTCYx() ritarda di 5000 uS...giusto fino ad ora?
Comunque ho capito anche che piu di un sec e 20 non va oltre....ma se voglio ad esempio 7 sec,come faccio?
Correggetemi se sbaglio,ma non posso utilizzare il delay1oktc con la libreria "LCD_44780",giusto?perche usa il delay in ms o s giusto?
vi ringrazio
Ultima Modifica 11 Anni 4 Mesi fa da luca2680.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- luca2680
- Autore della discussione
- Elite Member
Riduci
Di più
11 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 Delay10KTCYx()
non ho ben capito cosa intendi, la libreria di Mauro e la libreria microchip o altre sono diverse, tu puoi fare un ritardo come vuoi, ma dentro la libreria LCD_44780 di Mauro è inclusa la delay di Mauro e non vedo perché cambiare le cose visto che funziona (non è così complicato usare un'altra libreria al posto di quella di Mauro, ma perché stare a cambiare tutto e perdere tempo?).
Se hai un frequenza di 8MHz, il periodo, cioè il tempo di esecuzione di 1 ciclo di clock è pari a 1/8MHz...cioè 1/8000000 = 0.125 * 10^-6 = 0.125 microsecondi (us) [0.000000125 secondi]
0.5 microsecondi * 10 = 5 microsecondi (us)
Mauro ha scritto la funzione delay_s(); e quella è la starda più semplice..ma se proprio non vuoi usare la sua libreria..
Per ritardi così alti si fa in altro modo, si usa il timer del pic e se hai bisogno di tempi maggiori potresti pensare ad un Real Time Clock Calendar..perché ritardi fatti con le varie librerie di solito sono bloccanti e stare bloccato per 7 secondi non ha nessun aspetto positivo.
Ste
Se hai un frequenza di 8MHz, il periodo, cioè il tempo di esecuzione di 1 ciclo di clock è pari a 1/8MHz...cioè 1/8000000 = 0.125 * 10^-6 = 0.125 microsecondi (us) [0.000000125 secondi]
sono 0.125 us * 4 = 0.5 microsecondi (us)poi prendo questo 0,125 e lo moltiplico per 4 Tclock,cioè 0,5
la funzione Delay10KTCYx() se ci metti 1..quindi..Delay10KTCYx(1) credo ritardi 10 cicli di clock..per cui avresti:Di conseguenza il mio Delay10KTCYx() ritarda di 5000 uS...giusto fino ad ora?
0.5 microsecondi * 10 = 5 microsecondi (us)
se metti la funzione dentro un ciclo o vari cicli annidati, arrivi a qualsiasi ritardo.Comunque ho capito anche che piu di un sec e 20 non va oltre....ma se voglio ad esempio 7 sec,come faccio?
Mauro ha scritto la funzione delay_s(); e quella è la starda più semplice..ma se proprio non vuoi usare la sua libreria..
Per ritardi così alti si fa in altro modo, si usa il timer del pic e se hai bisogno di tempi maggiori potresti pensare ad un Real Time Clock Calendar..perché ritardi fatti con le varie librerie di solito sono bloccanti e stare bloccato per 7 secondi non ha nessun aspetto positivo.
Ste
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Si prega Accedi o Crea un account a partecipare alla conversazione.
- StefA
- Moderator
Riduci
Di più
- Messaggi: 1222
- Ringraziamenti ricevuti 104
11 Anni 4 Mesi fa #3
da luca2680
Risposta da luca2680 al topic Delay10KTCYx()
Ok perfetto ti ringrazio,ho risolto e funziona bene,perche con quella di mauro ho problemi...per farla funzionare ho:quarzo interno da 8 Mhz,devo settare il setquartz a 16(cioè il doppio) e lasciare il 20 Mhz di default della libreria di mauro,con il delays,faccio un conto e via...piu che altro in un programma li posso usare entrambi o vanno in "conflitto"?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- luca2680
- Autore della discussione
- Elite Member
Riduci
Di più
- Messaggi: 250
- Ringraziamenti ricevuti 0
11 Anni 4 Mesi fa - 11 Anni 4 Mesi fa #4
da StefA
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Risposta da StefA al topic Delay10KTCYx()
mi sembra abbiano tutti nomi diversi, quindi dovresti poterli usare in contemporanea.
Il problema con la libreria di Mauro però sarebbe da indagare e risolvere..prova a cambiare tempi e vedere se ogni volta il ritardo è la metà...se è così da qualche parte c'è un fattore 2 di mezzo.
Ste
EDIT: qui avevi detto che avevi risolto e ti funzionava con 8..come avevi risolto?
Il problema con la libreria di Mauro però sarebbe da indagare e risolvere..prova a cambiare tempi e vedere se ogni volta il ritardo è la metà...se è così da qualche parte c'è un fattore 2 di mezzo.
Ste
EDIT: qui avevi detto che avevi risolto e ti funzionava con 8..come avevi risolto?
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Ultima Modifica 11 Anni 4 Mesi fa da StefA.
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.