facciamo un po' di chiarezza tra quarzi e oscillatori perché vedo che c'è un po' di confusione.
TTL sta per Transistor-Transistor-Logic che, come dice la definizione, descrive il tipo di logica che gestisce il segnale del quarzo. L'uscita del classico quarzo è infatti una sinusoide che oscilla alla frequenza fondamentale del quarzo stesso. Dovendo però dare in pasto il clock ad un microcontrollore che, per definizione, accetta in ingresso segnali digitali, è buona cosa convertire la sinusoide in onda quadra. Questo può essere fatto in diversi modi ma la cosa più comoda è quella di utilizzare un oscillatore piuttosto che un quarzo nudo. L'oscillatore niente altro è che un componete elettronico che integra sia il quarzo che il circuito logico che "squadra" il segnale; questo circuito per gli oscillatori più standard utilizza una logica di tipo TTL, quindi a transistor bipolari.
Per la verità gli oscillatori di precisione e ad alta frequenza non usano nemmeno una logica TTL (che in genere ha tempi di propagazione piuttosto lunghi) ma bensì una logica di tipo ECL (Emitter Coupled Logic) che garantisce ritardi di propagazione più brevi.
Di oscillatori ne esistono di svariate tipologie che trovano applicazione in campi diversi. Diamogli anche i nomi corretti così sappiamo cosa sono e cosa cercare (quarzo TTL non è una definizione corretta):
XO (Crystal Oscillator): oscillatore classico con quarzo e squadratore
TCXO (Temperature Compensated Crystal Oscillator): oscillatore compensato in temperatura
VCXO (Voltage Controlled Crystal Oscilltor): oscillatore controllato in tensione
OCXO (Oven Controlled Crystal Oscillator): oscillatore riscaldato - ovvero l'oggetto d'interesse di Mauro!
In particolare, come dice la definizione stessa, l'OCXO è un oscillatore con integrato all'interno un riscaldatore (oven = forno) che mantiene il quarzo ad una temperatura costante (alta) in modo da escludere le variazioni di temperatura esterne che farebbero derivare la frequenza del quarzo. Gli OXCO sono tutt'altro che superati! Certo esistono sorgenti di clock più precise tipo oscillatori al rubidio o cesio (che tra l'altro è radioattivo
) ma andiamo su roba troppo esotica e poco accessibile all'hobbista. Volendo restare con i piedi per terra e senza spendere un rene di sicuro l'OCXO rappresenta il meglio che si può trovare sul mercato in termini di precisione e stabilità. Purtroppo non è altrettanto vero per il jitter ma questo è un discorso troppo complicato che esula dall'applicazione specifica.
Detto ciò, ti dico come farei io.
Prenderei un oscillatore (OCXO ma anche TCXO che costa e soprattutto consuma meno, visto che andrai a batteria...) e lo butterei nell'ingresso di input capture di Arduino. Così facendo il micro conta gli impulsi di clock in ingresso incrementando un contatore che possiamo poi resettare alla generazione di un evento. Nel tuo caso l'evento è l'impulso che devi leggere dal contatore geiger e il valore del contatore al momento del reset sarà il tempo trascorso tra un impulso e l'altro.
L'impulso del contatore geiger lo metti sotto interrupt e nella routine prima salvi il valore del clock in ingresso dall'oscillatore in una variabile e poi resetti il contatore.
Va calcolata la frequenza in ingresso in modo che sia in grado di contare anche per secondi ma mantenga una buona risoluzione anche a frequenze più alte. Poiché sui tempi lunghi c'è il rischio che il contatore di impulsi vada in overflow, sarà necessario abbinare una routine in interrupt anche all'overflow del timer che vada ad incrementare una variabile in modo da non perdere il conteggio se questo dovesse protrarsi per troppo tempo.
Visto che questi timer o sono da 8 o da 16 bit, quindi vanno in overflow su numeri non multipli di 10, io imposterei il TOP del Timer ad un valore base 10 (tipo 10000 se il timer è a 16bit) in modo che gli eventi di overflow siano multipli di 10 e venga facilitato il calcolo.
Non so se si trovano OCXO con frequenze inferiori a 10Mhz, nel caso si può abbinare un OCXO ad un divisore digitale e si può eventualmente pensare di dividere /100 e dare quindi un clock da 100Khz in ingresso al micro. Va anche verificata la massima frequenza ammessa sull'ingresso input capture, ma con 100Khz ci dovremmo stare.