Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Timer 16bit con clock esterno

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Timer 16bit con clock esterno

Messaggioda Foto Utentedaniele1996 » 13 apr 2022, 18:48

Si, avete ragione, ma quello che ho postato possiamo definirlo un "esperimento" in cui l'ottimizzazione non interessa molto, ma è possibile "debuggare" il codice così attenzionando i parametri principali dell'hardware...
Comunque sia, il mio intento è di collegare un quarzo da 32KHz in modo da ottenere un interrupt al secondo, nel "test" avevo collegato il quarzo tra PB0 e PB1 (T0 e T1), arrivati a questo punto, è possibile che questi due pin lavorino esclusivamente ad onda quadra?
Guardando meglio nel datasheet del micro, ho notato che il timer 2 (8Bit) ha la predisposizione per il quarzo a 32KHz, dividendo la frequenza per il top del timer, quindi con generazione di un interrupt di tipo overflow (256) ottengo esattamente 128 overflow equivalenti a 1 secondo.

Nel caso alternativo quale il caso di T0 e T1 potrebbero essere ad onda quadra, e quindi utilizzabili impostando un quarzo su un partitore e tenendo in considerazione i parametri del partitore, si associa un comparatore con tensione di riferimento impostata secondo i parametri del partitore del quarzo...

Sicuramente cambierò la disposizione delle connessioni...
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[12] Re: Timer 16bit con clock esterno

Messaggioda Foto Utenteboiler » 13 apr 2022, 20:19

Dando un rapido sguardo nel datasheet del tuo microcontroller mi pare di capire che il quarzo va messo tra i pin PC6 e PC7.

Inoltre:
On this device, the Timer/Counter Oscillator Pins (TOSC1 and TOSC2) are shared with XTAL1 and
XTAL2. When using the Timer/Counter Oscillator, the system clock needs to be four times the oscillator
frequency. Due to this and the pin sharing, the Timer/Counter Oscillator can only be used when the
Calibrated Internal RC Oscillator is selected as system clock source.


Quando ti si chiede lo schema, un motivo c'è. Siamo qui per cercare di darti una mano. Se non ci dai le informazioni che ci servono, ci metti i bastoni tra le ruote. Mi sembra un po' una mancanza di rispetto verso il tempo che stiamo investendo per aiutarti.

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5599
Iscritto il: 9 nov 2011, 12:27

0
voti

[13] Re: Timer 16bit con clock esterno

Messaggioda Foto Utentedaniele1996 » 13 apr 2022, 20:58

Si, appena fatto la prova, quarzo tra PC6 e PC7
Codice: Seleziona tutto
...
uint8_t count;
int main(){
count = 0;
ASSR = (1 << EXCLK); // Clock source esterno
TIMSK2 = (1 << TIOE2);// Interrupt overflow
TCCR2B = (1 << CS20) | (1 << CS21) | (1 << CS22); //prescaler 1024
sei();
while(1){
  if(count == 64){
           display_value += 1;
           LCD_clear();
           print_num(display_value,10);
           count = 0;
  }
}

}
ISR(TIMER2_OVF_vect){
count ++;
}

Con queste impostazioni sembra essere a tempo, rimane un mistero il procedimento matematico
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[14] Re: Timer 16bit con clock esterno

Messaggioda Foto Utenteboiler » 13 apr 2022, 21:06

Questo
Codice: Seleziona tutto
  if(count >= 64)

è molto piú robusto di questo
Codice: Seleziona tutto
  if(count == 64)


Non sarebbe una cattiva idea dichiarare count come volatile.

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5599
Iscritto il: 9 nov 2011, 12:27

0
voti

[15] Re: Timer 16bit con clock esterno

Messaggioda Foto Utentedaniele1996 » 13 apr 2022, 21:40

boiler ha scritto:Questo
Codice: Seleziona tutto
  if(count >= 64)

è molto piú robusto di questo
Codice: Seleziona tutto
  if(count == 64)


Non sarebbe una cattiva idea dichiarare count come volatile.

Boiler

Hai ragione, se non c'è il maggiore qualcosa la puo saltare...
perché i miei calcoli non risultano?
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[16] Re: Timer 16bit con clock esterno

Messaggioda Foto UtentePietroBaima » 14 apr 2022, 0:29

Ripeto la domanda: dove hai montato il circuito? Su cosa? Millefori, breadboard o cos’altro?
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[17] Re: Timer 16bit con clock esterno

Messaggioda Foto Utenteboiler » 14 apr 2022, 8:46

Atmel ha scritto:Bit 6 – EXCLK: Enable External Clock Input
When EXCLK is written to one, and asynchronous clock is selected, the external clock input buffer is enabled and an external clock can be input on timer oscillator 1 (TOSC1) pin instead of a 32kHz crystal. Writing to EXCLK should be done before asynchronous operation is selected. Note that the crystal oscillator will only run when this bit is zero.


Nota bene: non ho mai lavorato con un microcontroller Atmega, ciononostante sto trovando queste informazioni nel giro di pochi minuti.

Non mi sembra che tu sia interessato a farti aiutare (come avevo già scritto) e il fatto che continui a non rispondere alle domande di Pietro conferma questo sospetto. Io mi astengo dal resto di questo thread. Buona fortuna.

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5599
Iscritto il: 9 nov 2011, 12:27

1
voti

[18] Re: Timer 16bit con clock esterno

Messaggioda Foto UtenteEcoTan » 14 apr 2022, 8:49

daniele1996 ha scritto:quarzo tra PC6 e PC7

Ci vanno i soliti due condensatori esterni? (altrimenti, magari va in seconda armonica e giustifica il tutto)
Avatar utente
Foto UtenteEcoTan
7.720 4 12 13
Expert EY
Expert EY
 
Messaggi: 5420
Iscritto il: 29 gen 2014, 8:54

0
voti

[19] Re: Timer 16bit con clock esterno

Messaggioda Foto Utentedaniele1996 » 14 apr 2022, 20:16

Ho stampato una schedina con gli header, il quarzo della cpu da 16Mhz è collegato direttamente al micro, nelle porte attualmente ho collegato un display 1602A con configurazione 8 bit e un tastierino con le pcint (e tutto questo funziona correttamente). Dunque inizialmente avevo collegato il quarzo da 32KHz sui pin PB0 e PB1, che potenzialmente potrebbero richiedere un clock ad onda quadra... Mi sono accorto dopo che il timer che può fare da RTC è il timer a 8Bit. Dando una guardata a questo (trovato ieri sera) i miei calcoli dovrebbero essere giusti, ma in pratica nel codice che piu o meno sembra esser temporizzato correttamente ci vogliono 64 overflow per fare 1 secondo... e i calcoli indicati nella application note dicono tutt'altro...
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

0
voti

[20] Re: Timer 16bit con clock esterno

Messaggioda Foto Utentedaniele1996 » 14 apr 2022, 20:18

EcoTan ha scritto:
daniele1996 ha scritto:quarzo tra PC6 e PC7

Ci vanno i soliti due condensatori esterni? (altrimenti, magari va in seconda armonica e giustifica il tutto)

sinceramente penso che siccome i condensatori sono molto meno precisi dei quarzi, e correggere un imprecisione con una imprecisione più grande mi sembra un po un tiro alla lotteria...
Avatar utente
Foto Utentedaniele1996
610 3 8 11
Sostenitore
Sostenitore
 
Messaggi: 1554
Iscritto il: 29 ago 2011, 11:29

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Google [Bot] e 5 ospiti