Ardutester - Arduino Component Tester (INCOMPLETO)

Prima pagina aggiornata con correzione schemi.
Ciao :smiley:

Confermo di avere il DCA-55, non ho gelosie e non ho bisogno di essere provocato :grin:, sono molto incuriosito dal fatto che legga anche i componenti passivi, poiché possiedo una vasta e solida strumentazione sono in grado di fare prove serie e confermare o meno la validità dello strumento. Il problema, come detto, è il tempo, ho non meno di 5 progetti da completare, sono in ritardo e sono incasinato all'UNI, però ho anche un'idea, lasciatemi ragionarci su.... per ora complimenti!!!

Pighixxx,
nel setup, dove c'è l'inizializzazione dell'ADC, prova ad inserire:

DIDR0 = 0b00111111;			//DIDR0 – Digital Input Disable Register 0 - Disable digital input on analog pins

serve per disabilitare gli ingressi digitali collegati ai pin analogici che creano imprecisioni nelle letture.
--> ATmega ADC tutorial | Open Music Labs

Potresti fare anche una versione R3 della scheda? Devi aggiungere i pin SDA e SCL dopo AREF e GND.
In quel modo la scheda è utilizzabile anche con la MEGA e la Leonardo, anche se il codice è ancora da testare con tali schede.

Paolo, non è la stessa cosa metterli semplicemente in OUTPUT, così non tocchi i registri....

Dalla spiegazione del sito pare di no. E se tra i tuoi progetti c'è lo studio dell'ADC del 328, dovresti approfondire. :wink:

Per quanto riguarda i registri... ArduTester e tutto "un toccare di registri". Non mi preoccupa.

:smiley:
Grazie

PaoloP:
Pighixxx,
nel setup, dove c'è l'inizializzazione dell'ADC, prova ad inserire:

DIDR0 = 0b00111111;			//DIDR0 – Digital Input Disable Register 0 - Disable digital input on analog pins

serve per disabilitare gli ingressi digitali collegati ai pin analogici che creano imprecisioni nelle letture.
--> ATmega ADC tutorial | Open Music Labs

Interessante l'articolo. Do un'occhiata e provo. Grazie

PaoloP:
Potresti fare anche una versione R3 della scheda? Devi aggiungere i pin SDA e SCL dopo AREF e GND.
In quel modo la scheda è utilizzabile anche con la MEGA e la Leonardo, anche se il codice è ancora da testare con tali schede.

Sto già lavorandoci :smiley:

ho visto che includi due librerie solo se si vuole usare l'LCD, mi chiedevo se servisse veramente, perche' credo che se le librerie incluse non vengono usate nel codice compuque non vengono compilate giusto ? quindi potresti lasciarle e basta

lo schema elettrico di questo shield ? perche' non lo posti insieme alla scheda nel primo post ? siamo in Megatopic mica bruscolini :slight_smile:

Inoltre per il discorso leggibilita', essendo un codice bello lungo, io mi trovo molto bene con l'uso delle Tab nell'IDE ufficiale, chiarisce e distribuisce meglio il tutto.

Paolo, ovviamente studierò il tuo link ma soprattutto voglio approfondire sul data-sheet, la cosa mi interessa non solo per lo studio sull'ADC, che è a medio termine, ma soprattutto per il Frequenzimetro LCD, settimana prossima mi arrivano i PCB e quindi dovrò iniziare l'ottimizzazione del codice e soprattutto della gestione dell'ADC che gioca un ruolo importante, quindi proverò quella riga di comando, visto che uso un solo pin Ax e gli altri li ho lasciati volutamente liberi.

Testato:
ho visto che includi due librerie solo se si vuole usare l'LCD, mi chiedevo se servisse veramente, perche' credo che se le librerie incluse non vengono usate nel codice compuque non vengono compilate giusto ? quindi potresti lasciarle e basta

Non è vero, prova a compilare con e senza #define LCD_PRINT

Testato:
lo schema elettrico di questo shield ? perche' non lo posti insieme alla scheda nel primo post ? siamo in Megatopic mica bruscolini :slight_smile:

A dire la verità lo schema elettrico ~~c'~~è al primo post :smiley:
Lo schema elettrico, pcb e quant'altro dello shield li posterò appena pronto.

PaoloP:
(cut) dove c'è l'inizializzazione dell'ADC, prova ad inserire:

DIDR0 = 0b00111111;			//DIDR0 – Digital Input Disable Register 0 - Disable digital input on analog pins

serve per disabilitare gli ingressi digitali collegati ai pin analogici che creano imprecisioni nelle letture.

L'ho inserito. Al momento non mi sembra notare nessuna differenza. Più tardi farò dei test più approfonditi

Sto terminando un altro set di schede ABC.
Stavo pensando di inserire nello shield dell'ArduTester anche un preamplificatore e un comparatore (Ho un'idea malsana :D)

@Michele:
mettere il pin in input o output equivale comunque ad impostarne uno stato.
Disattivare il circuito digitale invece toglie proprio l'alimentazione a quel buffer, spengendolo del tutto.
Puoi disattivarlo anche per risparmiare corrente, se usi i pin Ax come analogici.
Datasheet cap 23.9.5

pighixxx:
Non è vero, prova a compilare con e senza #define LCD_PRINT

Come funziona di preciso questa storia ? ricordo di aver letto piu' volte che il compilatore scarta la roba che non serve, altrimenti gia' usare 3 o 4 librerie, anche senza fargli fare granche', dovrebbe occupare tutta la memoria.
Grazie degli eventuali chiarimenti

leo72:
@Michele:
mettere il pin in input o output equivale comunque ad impostarne uno stato.
Disattivare il circuito digitale invece toglie proprio l'alimentazione a quel buffer, spengendolo del tutto.
Puoi disattivarlo anche per risparmiare corrente, se usi i pin Ax come analogici.
Datasheet cap 23.9.5

Il mio problema, nello specifico, non è il risparmio di corrente, visto che lo strumento ha un alimentatore addirittura interno al contenitore, ma solo quello di evitare fastidi all'unico pin ADC funzionante; mi era stato consigliato di mettere i pin in OUTPUT perché, se ho ben capito, questa manovra li avrebbe dissociati dall'ADC, e la cosa mi sembra plausibile; ora se questo è vero il mio problema è già risolto così com'è; se invece non è vero allora posso sempre spegnere i pin con quel comando. Ora la questione è: i pin analogici collegati al digitale subiscono disturbi? Non erano i pin analogici in sé che causavano fastidi ai fratelli utilizzati? Domanda: qal è la situazione migliore per usare un solo pin analogico senza avere disturbi di alcun genere?

Mettere il filtro LC sul pin AVCC (fig. 24.9, pag. 250), non mettere il pin in output (curioso, perché il datasheet dice proprio che switchare su un pin analogico messo in output disturba la lettura analogica).

Relativamente al registro DIDR0, leggo che sarebbe consigliabile spengere il buffer digitale del relativo pin.

leo72:

[quote author=Michele Menniti link=topic=163227.msg1226852#msg1226852 date=1367584972]
Domanda: qal è la situazione migliore per usare un solo pin analogico senza avere disturbi di alcun genere?

Mettere il filtro LC sul pin AVCC (fig. 24.9, pag. 250), non mettere il pin in output (curioso, perché il datasheet dice proprio che switchare su un pin analogico messo in output disturba la lettura analogica).

Relativamente al registro DIDR0, leggo che sarebbe consigliabile spengere il buffer digitale del relativo pin.
[/quote]
mi scuso con pighi, sembrerebbe OT ma in realtà la questione dell'ADC è fondamentale per qualsiasi circuito.... Sul filtro LC siamo d'accordo; la seconda frase, o meglio la parte tra () non l'ho capita; dove leggi la questione del DIDR0??
In conclusione invece di settare i pin A0-A4 (uso il solo A5) come OUTPUT mi basta mettere nello sketch DIDR0 = 0b00111111; per spegnere il buffer ed ottengo il risultato migliore?

@Michele
Nessun problema. Penso che tutti siano interessati alla cosa.

Testato:
Come funziona di preciso questa storia ? ricordo di aver letto piu' volte che il compilatore scarta la roba che non serve

Semplicemente il compilatore non compila ciò che non viene usato, anche se metti l'include di una libreria in realtà non hai fatto altro che aggiungere una serie di prototipi e di define, se le varie funzioni previste dalla libreria non vengono esplicitamente usate nel programma il compilatore non le considera e rimangono fuori dall'eseguibile.
Estendendo il concetto, se includi una libreria con 100 funzioni e poi ne usi solo due il compilatore prenderà solo il codice di quelle due e lo inserisce nel tuo programma, tutto il resto rimane fuori.
Se prevedi una compilazione condizionale con gli #ifdef solo il codice contenuto nelle varie sezioni selezionate viene compilato indipendentemente dalle varie include e il reale utilizzo, nel codice, delle funzione in queste definite.

Sul datasheet.
Leggo appunto che switchare su un pin analogico impostato come output digitale crea disturbi sulla conversione dell'ADC.
Ecco perché dico quindi che conviene spengere il buffer digitale, in questo modo su quel pin resta attiva solo la circuiteria del mux analogico.

In conclusione invece di settare i pin A0-A4 (uso il solo A5) come OUTPUT mi basta mettere nello sketch DIDR0 = 0b00111111; per spegnere il buffer ed ottengo il risultato migliore?

Sì, proprio così.

Grazie astro,
Ma se ho capito quindi stai agfermando la mia stessa cosa. A questo punto come mai i test di pighi vanno in senso opposto ?