Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino, il mio contatore Geiger con Arduino
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
E questo è anche vero!
In b_simboli.ino ho cambiato tutti gli array byte in const byte PROGMEM ma non so se così si introduce daccapo il problema della corruzione dei caratteri che hai avuto con la direttiva F.
In b_simboli.ino ho cambiato tutti gli array byte in const byte PROGMEM ma non so se così si introduce daccapo il problema della corruzione dei caratteri che hai avuto con la direttiva F.
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Non ho capito quale fosse la causa del problema. Così com'è, però, funziona perfettamente e lo spazio è sufficiente, perciò non l'ho "stuzzicato" oltre 
Quando uno sketch è così voluminoso, devi sempre conservare la versione originale e fare piccole modifiche ogni volta; se no, in caso di problemi, non sai che cosa è problematico e che cosa no.

Quando uno sketch è così voluminoso, devi sempre conservare la versione originale e fare piccole modifiche ogni volta; se no, in caso di problemi, non sai che cosa è problematico e che cosa no.
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Anche a me è capitata una cosa identica ma con un altro tipo di schermo, non ricordo se OLED o TFT LCD a colori.
Riguardo al secondo problema... non è un problema visto che usi GitHub, hai sempre la possibilità di fare un fork e poi, se tutto va bene, fare un merge e poi ci sono sempre i commit con cui puoi fare confronti con le versioni precedenti.
Riguardo al secondo problema... non è un problema visto che usi GitHub, hai sempre la possibilità di fare un fork e poi, se tutto va bene, fare un merge e poi ci sono sempre i commit con cui puoi fare confronti con le versioni precedenti.
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Leggendo qui [External Link Removed for Guests] la routine di interrupt andrebbe cambiata da così
a così
Il detach interrupt non è necessario in quanto, finché la routine non viene eseguita, non è possibile un nuovo interrupt sullo stesso pin. Stessa cosa per l'attach. E' anche possibile che il compilatore elimini queste istruzioni.
Poiché la priorita degli interrupt su pin è maggiore di quelli dei timer se il primo viene chiamato troppo spesso dovrebbe succedere un rallentamento di tutti glòi altri interrupt e delle funzioni millis e micros ma non ne sono certo, dovrei andare a vedere nelle librerie.
Codice: [Local Link Removed for Guests]
void ContaAB() // INTERRUPT 0
{
detachInterrupt(0);
DAB++;
if(TS) Tic(); // TIC-TIC SOFTWARE
particella=1;
//while(!(PIND&0x20)); // Usando "FALLING" (fronte di discesa) non dovrebbe servire.
attachInterrupt(0,ContaAB,FALLING);
}
Codice: [Local Link Removed for Guests]
void ContaAB() // INTERRUPT 0
{
DAB++;
if(TS) Tic(); // TIC-TIC SOFTWARE
particella=1;
//while(!(PIND&0x20)); // Usando "FALLING" (fronte di discesa) non dovrebbe servire.
}
Poiché la priorita degli interrupt su pin è maggiore di quelli dei timer se il primo viene chiamato troppo spesso dovrebbe succedere un rallentamento di tutti glòi altri interrupt e delle funzioni millis e micros ma non ne sono certo, dovrei andare a vedere nelle librerie.
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Li ho messi perché ho visto che qualcuno aveva fatto così. Mi sono chiesto se servisse...
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Se è per questo io sono dovuto andarmi a leggere il post di cui il link, mi pareva fosse così ma non ne ero certo anche perché mi par di ricordare che in altri micro potesse capitare il richiamo dell'interrupt mentre si è già in interrupt. Per cui prima mi son documentato.
Come ho scritto prima, può darsi che nel binario non cambi nulla in quanto il compilatore sembra che sia abbastanza furbo, a volte troppo.
Il rallentamento dell'orologio software è una mia ipotesi, per provarla bisognerebbe fornire all'Arduino tantissimi impulsi.
Come ho scritto prima, può darsi che nel binario non cambi nulla in quanto il compilatore sembra che sia abbastanza furbo, a volte troppo.
Il rallentamento dell'orologio software è una mia ipotesi, per provarla bisognerebbe fornire all'Arduino tantissimi impulsi.
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
L'attivazione del tick software dentro l'interrupt POTREBBE dare problemi se avviene un altro impulso in tempi molto brevi.
OK, il tempo morto di un normale tubo va intorno ai 10us, però sarebbe da evitare tale opzione nell'interrupt.
Ha più senso settare un flag e fare il tick esternamente all'interrupt.
OK, il tempo morto di un normale tubo va intorno ai 10us, però sarebbe da evitare tale opzione nell'interrupt.
Ha più senso settare un flag e fare il tick esternamente all'interrupt.
٩(•̮̮̃•̃)۶ - Excusatio non petita, accusatio manifesta
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Ci avevo pensato e l'ho reso escludibule, però credo che il problema non ci sia, perché il Tic è un tone() che, una volta avviato, libera il ciclo.
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Tone usa un interrupt e la routine è la seguente (tratto da [External Link Removed for Guests])
In questo caso viene usato il timer 1. Il timer usato cambia a seconda del microcontrollore ma il codice è identico.
Ora quello che succede è che se durante l'esecuzione di questa routine capita l'interrupt al pin di conteggio, questa routine si interrompe e viene eseguito l'altro interrupt perché a priorità più alta. Finito l'altro interrupt l'esecuzione torna a questo codice nel punto in cui si era interrotto. Io mi chiedo se è possibile che al crescere degli interrupt al pin il rallentamento di questa funzione diventa significativo e si alteri il tempo totale.
Datman tu mi hai suggerito una possibile prova. Faccio emettere un tono all'arduino e contemporaneamente fornisco una onda quadra al piedino del conteggio. Devo trovare una sorgente di onde quadre (un altro arduino) e un modo economico per misurare la frequenza di tone visto che non ho una strumentazione adatta ma un counter comprato in kit su eBay.
Codice: [Local Link Removed for Guests]
ISR(TIMER1_COMPA_vect)
{
if (timer1_toggle_count != 0)
{
// toggle the pin
*timer1_pin_port ^= timer1_pin_mask;
if (timer1_toggle_count > 0)
timer1_toggle_count--;
}
else
{
disableTimer(1);
*timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop
}
}
Ora quello che succede è che se durante l'esecuzione di questa routine capita l'interrupt al pin di conteggio, questa routine si interrompe e viene eseguito l'altro interrupt perché a priorità più alta. Finito l'altro interrupt l'esecuzione torna a questo codice nel punto in cui si era interrotto. Io mi chiedo se è possibile che al crescere degli interrupt al pin il rallentamento di questa funzione diventa significativo e si alteri il tempo totale.
Datman tu mi hai suggerito una possibile prova. Faccio emettere un tono all'arduino e contemporaneamente fornisco una onda quadra al piedino del conteggio. Devo trovare una sorgente di onde quadre (un altro arduino) e un modo economico per misurare la frequenza di tone visto che non ho una strumentazione adatta ma un counter comprato in kit su eBay.
Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino
Di dove sei, zoomx?
Gianluca
Canale Youtube: [External Link Removed for Guests]
Canale Youtube: [External Link Removed for Guests]