MECCANICA e DINTORNI

COSTRUIAMO LE NOSTRE CNC DIVERTENDOCI CON L'AIUTO DI TANTI PROFESSIONISTI ESPERTI
Oggi è sab apr 27, 2024 09:13

Tutti gli orari sono UTC +1 ora




Apri un nuovo argomento Rispondi all’argomento  [ 22 messaggi ]  Vai alla pagina Precedente  1, 2
Autore Messaggio
 Oggetto del messaggio: Re: Pimp my ratemeter ovvero svecchiamo il contatore geiger
MessaggioInviato: lun ott 24, 2022 07:31 
Connesso
CAPO OFFICINA
Avatar utente

Iscritto il: dom gen 31, 2010 21:46
Messaggi: 8850
Località: Bussero (MI)
Mauro: "Gli esempi proposti sul manuale dell'Atmel sembrano usare un assembler o codice simile"

non serve utilizzare l'assembler, da Arduino è possibile controllare direttamente i registri dei timer associando i valori che servono. A titolo di esempio, questa è la parte di codice che nel ELS si incarica di configurare il Timer1 in modalità PWM:

Codice:
void SetPWM()    //Sets the PWM and starts Timer1
{
  ICR1 = 65535;                        //(65535)set TOP at maximum value in order to get minumun frequency on the motor with prescaler clk/64
  OCR1A = 3;                           // Set OCR1A register to 3 which means that the CLEAR of the OC1A pin is done after 3 timer1 ticks.
                                       // means 12us with clk/64 prescaler
  TCCR1A = _BV(COM1A1) | _BV(WGM11);   //OC1A (pin 9) set for PWM with SET at BOTTOM and CLEAR at MATCH (non-inverted mode)
  TCCR1B = _BV(WGM13) | _BV(WGM12);    //WGM set for Fast PWM with ICR1 used as TOP value

}



Cioè, in pratica, sul datasheet devi capire come impostare i registri del timer in base alla configurazione che vuoi implementare e poi assegni i valori ai registri semplicemente come fatto qui sopra nel codice.

_________________
McMax

“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson

fulminato in tenera età


Top
 Profilo  
 
 Oggetto del messaggio: Re: Pimp my ratemeter ovvero svecchiamo il contatore geiger
MessaggioInviato: lun nov 07, 2022 11:43 
Non connesso
FINALMENTE USO IL TORNIO

Iscritto il: mer giu 20, 2012 12:55
Messaggi: 373
Località: Trezzo sull'Adda
Ciao,

sono a chiedere lumi.

Consultando il manuale dell'Atmel328 e l'application note AVR130: Setup and Use of AVR Timers* e' emerso quanto segue:

The 16-bit timer1 is a synchronous timer. This means that it is clocked:
- by the system clock;
- by a prescaled system clock;
- by an external clock which is synchronized with the system clock.

Il timer a a 16 bit è un timer sincrono. Ciò significa che è sincronizzato:
- al clock di sistema;
- a un segnale sottomultiplo del clock di sistema;
- segnale esterno sincronizzato con il clock di sistema.

Questo significa che il quarzo riscaldato dovra' essere usato anche per dare il clock al processore?

Grazie :-)

Mauro

* pagina 12, sezione 4.2, Example 2: Timer 1 Input Capture Interrupt


Top
 Profilo  
 
 Oggetto del messaggio: Re: Pimp my ratemeter ovvero svecchiamo il contatore geiger
MessaggioInviato: mer nov 09, 2022 01:09 
Non connesso
CAPO OFFICINA
Avatar utente

Iscritto il: lun feb 29, 2016 11:29
Messaggi: 13616
Località: Ustica & Dintorni saltuariamente Bologna o Pesaro
Penso proprio di si , se hai necessità della massima precisione possibile tutto dipende dagli impulsi che fornisce il quarzo e per renderlo il più stabile possibile conviene farlo lavorare ad una temperatura che sia il più lontano possibile dalle varie fluttuazioni della temperatura ambiente.
Però nel tuo caso non saprei di preciso ... ci vorrebbe uno pratico ... McMax dove diavolo sei plasticaro maledetto ? :risatina:

_________________
Gli errori sono per i principianti, noi esperti puntiamo al disastro !!!
Le conoscenze acquisite, sono proporzionali al DANNO PRODOTTO !!! ( esperienza personale...)
youtube



Immagine 2°socio TIRATOSAURO CLUB ITALIAN


Top
 Profilo  
 
 Oggetto del messaggio: Re: Pimp my ratemeter ovvero svecchiamo il contatore geiger
MessaggioInviato: dom nov 13, 2022 10:40 
Connesso
CAPO OFFICINA
Avatar utente

Iscritto il: dom gen 31, 2010 21:46
Messaggi: 8850
Località: Bussero (MI)
Scusate ragazzi ultimamente sono abbastanza incasinato.
Il Timer1, come qualsiasi altro timer, può ricevere un clock dall'esterno indipendente da quello del Micro. L'oscillatore riscaldato si può usare come ingresso a parte per il timer1.

Sul datasheet del Atmega328P sezione 15 da pagina 89.

_________________
McMax

“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson

fulminato in tenera età


Top
 Profilo  
 
 Oggetto del messaggio: Re: Pimp my ratemeter ovvero svecchiamo il contatore geiger
MessaggioInviato: dom nov 13, 2022 20:20 
Connesso
CAPO OFFICINA
Avatar utente

Iscritto il: dom gen 31, 2010 21:46
Messaggi: 8850
Località: Bussero (MI)
Mauro, mi sono andato a leggere per scrupolo l'applicazione note a cui ti riferisci. Credo che la definizione "sincrono al System Clock" si riferisca al fatto che il clock esterno venga letto in modo sincrono al Clock di sistema, ovvero che l'incremento dei registri del timer avvenga, come è ovvio pensare, in sincrono con il Clock di sistema. Di fatto la fase del Clock in ingresso viene persa ma per la tua applicazione non te ne frega nulla. Bisogna capire quant'è la massima frequenza ammessa, anche se, come detto, credo tu debba prevedere un divisore esterno per presentare un Clock nell'ordine del centinaio di kilohertz che basta e avanza a fare quello che vuoi tu con un'ottima precisone.

Questo lo schema del timer:
Allegato:
Schermata 2022-11-13 alle 20.19.00.png


L'ingresso del clock è quello indicato con "Tn", nel caso specifico "T1" visto che il timer in questione è il Timer1. Il pin è in comune con "PD5"


Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.

_________________
McMax

“None of us can change the things we’ve done. But we can all change what we do next.” – Fred Johnson

fulminato in tenera età


Top
 Profilo  
 
 Oggetto del messaggio: Re: Pimp my ratemeter ovvero svecchiamo il contatore geiger
MessaggioInviato: mar nov 15, 2022 09:11 
Non connesso
FINALMENTE USO IL TORNIO

Iscritto il: mer giu 20, 2012 12:55
Messaggi: 373
Località: Trezzo sull'Adda
Grazie a entrambi per le risposte e il tempo dedicato.

Tralascio per adesso le questioni relative all'uso di un clock di sistema esterno.
Terro' buono il clock interno dell'Arduino che e' preimpostato a 16Mhz.

Provo a imbastire il programma.
Se non e' un problema lo traccio passo passo, cominciando dalla struttura base di uno sketch di Arduino che è basata principalmente sulla definizione di due funzioni:

Codice:
void setup();

void loop();



La parte di codice contenuta in Void setup(); verra' letta una sola volta all'accensione del microprocessore e serve a impostare le funzioni del microprocessore e l'ambiente di lavoro.
Void loop(); contiene il programma che vogliamo venga eseguito in continuazione dal microprocessore.
Il programma verra' eseguito fino allo spegnimento del micro.

Piccolo passo per un uomo....

Ciao :-)

Mauro


Top
 Profilo  
 
 Oggetto del messaggio: Re: Pimp my ratemeter ovvero svecchiamo il contatore geiger
MessaggioInviato: mar nov 15, 2022 09:16 
Non connesso
FINALMENTE USO IL TORNIO

Iscritto il: mer giu 20, 2012 12:55
Messaggi: 373
Località: Trezzo sull'Adda
La periferica chiamata contatore 1 puo' eseguire diverse funzioni.
Per la mia applicazione devo scegliere la funzione conteggio di impulsi esterni.
Il microprocessore capisce solo un linguaggio composto da livelli logici zero e uno.
Per spiegare al microprocessore quale funzione voglio usare del contatore 1, scrivo nel void setup(); i comandi opportuni.
Nello specifico devo impostare a livello logico uno i bit 1 e 2 nel Timer/Counter1 Control Register B (abbreviato in TCCR1B)

Codice:
void setup();
/* Timer clock = imposto counter1 per conteggio di impulsi esterni presenti sul digital pin 5 dell'Arduino (T1)# */
TCCR1B = (1<<CS12)|(1<<CS11);

void loop():


/* #Pin fisico sull'Atmel328P Dual in line = 11 (Arduino Uno); Pin fisico sull'Atmel328P TQFP = 9 (Arduino NANO) */


Tutto questo e' documentato:
nel datasheet del micro ATmega328P sezione 15.11.2 pagina 110;
nell'Application note Atmel AVR130: Setup and Use of AVR Timers tabella 3-1 pagina 8.

Ciao :-)

Mauro


Top
 Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 22 messaggi ]  Vai alla pagina Precedente  1, 2

Tutti gli orari sono UTC +1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 30 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it