Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino, il mio contatore Geiger con Arduino

Avatar utente
Datman
Messaggi: 410
Iscritto il: 29/09/2016, 22:33
Località: ROMA
Contatta:

Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino

Messaggio da Datman » 08/05/2017, 10:36

Beh... Dove dichiaro le variabili c'è un'ampia spiegazione del loro significato, sicuramente più esplicativa di qualunque nome... :) Chiunque sia interessato alla comprensione, quindi, può molto semplicemente sostituire i nomi delle variabili come preferisce, anche in maniera automatizzata con Trova e Sostituisci.
Alcune variabili, che dichiarai come globali non conoscendo inizialmente la differenza, in realtà potrebbero essere dichiarate localmente, ma non vorrei mettermi a fare modifiche rischiando di fare danni, che potrebbero anche non essere evidenti...

t1...t7, ad esempio, credo che possano tutte essere dichiarate localmente, così come molte altre variabili con nome breve. Proprio alle variabili che vengono usate localmente, in generale, ho dato i nomi più brevi.

Un po' di logica nei nomi c'è... Ad esempio:
E è la lettura dell'encoder, che può valere 0, +1 o -1.
n, m, m1 sono contatori per gli indici delle variabili.
cp significa Count Pulse
D significa Dati, che copiava il totale ogni secondo da DA o da DB, secondo quale sonda fosse selezionata; poi, usando un solo pin di ingresso, DA e DB sono state sostituite da DAB, che è volatile e viene caricata durante l'interrupt.
Tutte le variabili che terminano con una "o" contengono il valore precedente della variabile senza la "o", per rilevare i cambiamenti.
Ti: Tempo impostato.
Ultima modifica di Datman il 08/05/2017, 15:09, modificato 1 volta in totale.


Gianluca
Canale Youtube: [External Link Removed for Guests]

Avatar utente
zoomx
Messaggi: 144
Iscritto il: 28/04/2017, 9:27

Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino

Messaggio da zoomx » 08/05/2017, 15:05

Io uso nomi lunghi per il semplice fatto che se vado a rivedere il codice dopo tempo magari non ricordo più nulla.

Piuttosto, io ho presente la differenza fra variabili globali e locali ma mi son chiesto se la continua creazione e distruzione di una variabile locale che verrà usata frequentemente, se non sempre, non porti via tempo. Mi riferisco ai microcontrollori. Ci vorrebbe un altro test!

Edit: Ma da GitHub cosa va scaricato? Il master o uno dei branch?



Avatar utente
Datman
Messaggi: 410
Iscritto il: 29/09/2016, 22:33
Località: ROMA
Contatta:

Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino

Messaggio da Datman » 08/05/2017, 17:51

La versione 1.8U, che è l'ultima. Il link che ho pubblicato va a quella.


Gianluca
Canale Youtube: [External Link Removed for Guests]

Avatar utente
eliocor
Senior
Messaggi: 430
Iscritto il: 10/10/2015, 23:28
Località: Europe
Contatta:

Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino

Messaggio da eliocor » 08/05/2017, 20:21

Datman ha scritto:Beh... Dove dichiaro le variabili c'è un'ampia spiegazione del loro significato, sicuramente più esplicativa di qualunque nome... :) Chiunque sia interessato alla comprensione, quindi, può molto semplicemente sostituire i nomi delle variabili come preferisce, anche in maniera automatizzata con Trova e Sostituisci.
Prova ad applicare "Trova e Sostituisci" in maniera automatica e vedrai che disastri vengono fuori! Non è così semplice come dici, anzi!
Con nomi come quelli che usi, la comprensione va a farsi benedire! Punto.
Vedi cosa conferma anche zoomx: è una delle regole BASILARI della programmazione: non stai usando RPG o Fortran dove c'erano limiti strutturali alla lunghezza del nome della variabile! Di questi tempi la memoria è a dir poco gratuita: non ti costa niente usare nomi più lunghi che siano autosplicativi e rendi la vita più semplice agli altri.
Alcune variabili, che dichiarai come globali non conoscendo inizialmente la differenza, in realtà potrebbero essere dichiarate localmente, ma non vorrei mettermi a fare modifiche rischiando di fare danni, che potrebbero anche non essere evidenti...
Vedi che ammetti anche tu la farraginosità di ciò che hai scritto? Certo, funziona, ed anche bene, ma non è strutturato e qualsiasi modifica può portare alla caduta del castello di carte.
Piuttosto, io ho presente la differenza fra variabili globali e locali ma mi son chiesto se la continua creazione e distruzione di una variabile locale che verrà usata frequentemente, se non sempre, non porti via tempo. Mi riferisco ai microcontrollori. Ci vorrebbe un altro test!
No, non porta via tempo: il compilatore ci pensa lui a predisporre le cose in modo che stack pointer e frame pointer puntino fin da subito ai parametri passati ed alle variabili locali. Di norma la parte più dispendiosa del processo è il passagio dei parametri (push) PRIMA della chiamata alla funzione.
Ho provato a fare qualche ricerca ma noon ho trovato spiegazioni così semplici della cosa (dipende molto dalla architettura che stai usando):
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
Uno dei migliori sistemi per capire come funziona è di scrivere un piccolissimo programmino (scritto senza controllarne la compilabillità) es:

Codice: [Local Link Removed for Guests]

#include <stdint.h>

uint8_t funzione (uint8_t Parametro1, uint8_t Parametro2)
{
	uint8_t VariabileLocale = 3 ;
	
	VariabileLocale = VariabileLocale + Parametro1 + Parametro2 ;
	return(VariabileLocale) ;
}

int main()
{
	uint8_t ret ;
	
	ret = funzione(1, 3) ;
	return(ret) ;
}
Compilare tale programma con le ottimizzazioni disabilitate e analizzare il listato ASM (linguaggio macchina) generato: la comprensione di stack pointer e frame pointer dovrebbe essere ragionevolmente semplice.
Magari (se ti interessa) si può aprire un nuovo thread a riguardo: questo è già stato troppo hijacked


٩(•̮̮̃•̃)۶ - Excusatio non petita, accusatio manifesta


Avatar utente
Datman
Messaggi: 410
Iscritto il: 29/09/2016, 22:33
Località: ROMA
Contatta:

Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino

Messaggio da Datman » 11/05/2017, 11:24

Ho ripulito e aggiornato lo schema che pubblicai il 25 Dicembre 2016. Mancava il condensatore sul pulsante dell'encoder, che può essere utile per togliere qualche rimbalzo, e la resistenza di 1Mohm in serie alle sonde interne, posta vicino a esse.


Gianluca
Canale Youtube: [External Link Removed for Guests]

Avatar utente
Datman
Messaggi: 410
Iscritto il: 29/09/2016, 22:33
Località: ROMA
Contatta:

Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino

Messaggio da Datman » 31/05/2017, 23:11

Ho apportato qualche modifica al software per aggiornare la tensione della batteria e l'autonomia residua stimata ogni secondo quando visualizza i valori nella funzione Autonomia. In questo modo è possibile seguire la scarica o la carica della batteria.
[External Link Removed for Guests]" onclick="window.open(this.href);return false;
v.310517
Ultima modifica di Datman il 03/06/2017, 21:03, modificato 2 volte in totale.


Gianluca
Canale Youtube: [External Link Removed for Guests]

Avatar utente
marconmeteo
Moderatore
Messaggi: 4336
Iscritto il: 08/10/2015, 21:20
Località: Marcon (VE)
Contatta:

Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino

Messaggio da marconmeteo » 01/06/2017, 13:32

Grazie per la condivisione Datman.


[External Link Removed for Guests]

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo all'universo ho ancora dei dubbi" - Albert Einstein


IU3ARP

Avatar utente
Datman
Messaggi: 410
Iscritto il: 29/09/2016, 22:33
Località: ROMA
Contatta:

Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino

Messaggio da Datman » 03/06/2017, 20:14

Prego :)
Adesso il tempo è impostabile anche a 5 secondi, oltre che da 10 a 300 a passi di 10. v.030617


Gianluca
Canale Youtube: [External Link Removed for Guests]

Avatar utente
Datman
Messaggi: 410
Iscritto il: 29/09/2016, 22:33
Località: ROMA
Contatta:

Re: Contatore Geiger: in attesa dei tubi... Ovvero: Geigerino 1.8U, il mio contatore Geiger con Arduino

Messaggio da Datman » 30/06/2017, 0:15

Piccolo aggiornamento: il valore massimo di cpm (da cui, poi, vengono calcolati i uSv/h) memorizzato è preso dai valori visualizzati, anziché calcolato dai cps grezzi come in precedenza; inoltre, durante i primi 4 secondi dall'azzeramento i valori vengono ignorati ai fini del massimo per evitare possibili valori erronei molto elevati dovuti all'elevato errore iniziale. v.290617


Gianluca
Canale Youtube: [External Link Removed for Guests]

Rispondi

Torna a “Strumenti Autocostruiti”