Hai detto che gli impulsi li conti con un' interrupt generata dal cambio di stato del piedino quindi non ti serve l' input capture.
Mettici un quarzo più veloce, usa il timer1 come contatore pilotato dal clock e quando ricevi l' interrupt del pin di ingresso (impulso) leggi il contenuto del timer. Quello è il periodo.
Azzeri il timer ed esci dall' interrupt.
Maggiore precisione con contagiri PIC
Moderatore:
Paolino
44 messaggi
• Pagina 3 di 5 • 1, 2, 3, 4, 5
0
voti
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Calma, calma.
Esatto. Io però inizialmente avevo utilizzato la funzione capture per determinare "gratis" il periodo tra due impulsi successivi. Solo che non ho capito bene come inizializzare TMR1.
Ma non devo fare la differenza dei valori letti su TIMER1 alla ricezione di due fronti di salita successivi per avere il periodo?
Hai detto che gli impulsi li conti con un' interrupt generata dal cambio di stato del piedino quindi non ti serve l' input capture.
Esatto. Io però inizialmente avevo utilizzato la funzione capture per determinare "gratis" il periodo tra due impulsi successivi. Solo che non ho capito bene come inizializzare TMR1.
Mettici un quarzo più veloce, usa il timer1 come contatore pilotato dal clock e quando ricevi l' interrupt del pin di ingresso (impulso) leggi il contenuto del timer. Quello è il periodo.
Ma non devo fare la differenza dei valori letti su TIMER1 alla ricezione di due fronti di salita successivi per avere il periodo?
0
voti
Aspetta, forse inizio a capire.
Sfruttando TMR1 eviterei diciamo la rogna di tenere conto di overflow a giri bassi avendo un registro a 16bit.
Ora essendo TIMER1 a 16bit, posso fare un conteggio da 0 a 2^16-1, cioè da 0 a 65535 e il suo contenuto è suddiviso in due registri: TMR1H (8bit) e TMR1L (8bit).
TIMER1 = TMR1H*(2^8) + TMR1L * (2^0).
Ora, suppongo di usare un quarzo da 10Mhz (troppo??), come lo inizializzo TMR1?
Sfruttando TMR1 eviterei diciamo la rogna di tenere conto di overflow a giri bassi avendo un registro a 16bit.
Ora essendo TIMER1 a 16bit, posso fare un conteggio da 0 a 2^16-1, cioè da 0 a 65535 e il suo contenuto è suddiviso in due registri: TMR1H (8bit) e TMR1L (8bit).
TIMER1 = TMR1H*(2^8) + TMR1L * (2^0).Ora, suppongo di usare un quarzo da 10Mhz (troppo??), come lo inizializzo TMR1?
0
voti
C'e' scritto sul datasheet (che non ho
).
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
C'e' scritto sul datasheet
Teoricamente ho capito infatti. Ci sono. Ma non riesco a metterlo in pratica. Non capisco come deve essere gestito/inizializzato TMR1 invece di TMR0. Mi blocco qui uffa.
0
voti
Metti il link del datasheet che gli do uno sguardo.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
3
voti
Alura,
A pagina 31 troviamo il T1CON.
- T1CKPS1 e T1CKPS0 vanno servono per selezionare il prescaler per ottenere la base tempi. Dipende da che quarzo usi. Una volta che hai deciso che quarzo utilizzare lo possiamo vedere. Mettiamo che usi un quarzo da 8 MHz hai un Tcy di 0,5us. Selezionando il prescaler a 8 hai un impulso ogni 4us. Il periodo massimo che potrai misurare sarà quindi 65535*4 = 262,14 ms quindi ci stiamo dentro e non va in overflow ed abbiamo risuluzione quasi doppia di quella indicata da
DirtyDeeds
- T1OSCEN va a 0
- T1SYNC pure a 0
- TMR1CS va a 0 per selezionare il clock interno
poi abiliti il timer mettendo a 1 TMR1ON.
Dentro la routine di interrupt:
- Leggi il valore a 16 bit di TMR1 quello è il periodo e lo memorizzi in una variabile
- Azzeri TMR1 così lui riprende a contare da 0.
- Ritorni dall' interrupt bello paciarotto.
Se vuoi fare il figo usa il flag di overflow che sarà ad 1 solo se andrà in overflow. Questo significa che il motore è spento e che puoi segnare tranquillamente 0.
A pagina 31 troviamo il T1CON.
- T1CKPS1 e T1CKPS0 vanno servono per selezionare il prescaler per ottenere la base tempi. Dipende da che quarzo usi. Una volta che hai deciso che quarzo utilizzare lo possiamo vedere. Mettiamo che usi un quarzo da 8 MHz hai un Tcy di 0,5us. Selezionando il prescaler a 8 hai un impulso ogni 4us. Il periodo massimo che potrai misurare sarà quindi 65535*4 = 262,14 ms quindi ci stiamo dentro e non va in overflow ed abbiamo risuluzione quasi doppia di quella indicata da
- T1OSCEN va a 0
- T1SYNC pure a 0
- TMR1CS va a 0 per selezionare il clock interno
poi abiliti il timer mettendo a 1 TMR1ON.
Dentro la routine di interrupt:
- Leggi il valore a 16 bit di TMR1 quello è il periodo e lo memorizzi in una variabile
- Azzeri TMR1 così lui riprende a contare da 0.
- Ritorni dall' interrupt bello paciarotto.
Se vuoi fare il figo usa il flag di overflow che sarà ad 1 solo se andrà in overflow. Questo significa che il motore è spento e che puoi segnare tranquillamente 0.

"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Ottima spiegazione
!
Allora adesso ci ragiono e inizio a buttare giuù del codice. Poi se non disturbo e ho qualche dubbio ti posso comunque fare qualche domanda?
Allora adesso ci ragiono e inizio a buttare giuù del codice. Poi se non disturbo e ho qualche dubbio ti posso comunque fare qualche domanda?
0
voti
Domandare è lecito, rispondere è cortesia (impegni permettendo
)
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
44 messaggi
• Pagina 3 di 5 • 1, 2, 3, 4, 5
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 10 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)
