Ardutester - Arduino Component Tester (INCOMPLETO)

Dimenticavo, invece di fare critiche "assurde" dovreste dire 1000 volte grazie a Pighi che sta impegnando molto tempo, gratis, su questo progetto che vi permetterà di disporre di un utile strumento ad un costo molto contenuto.

Astro giusto per capire meglio la tua posizione vorrei sapere se il tuo commento ha tenuto conto del mio post precedente al tuo

Testato: Astro giusto per capire meglio la tua posizione

La mia posizione è molto chiara, trovo assurda la tua critica.

Grazie della chiarificazione, mi sembra talmente pro Arduino, pro condivisione, pro conoscenze, la richiesta di sostituire, solo dove e se è possibile, funzioni di basso livello con i rispettivi comandi del reference, che credevo tu avessi perso un pezzo della mia richiesta.

Sui ringraziamenti a pighi, a Pablo, ed altri che stanno lavorando al progetto non posso che accodarmi

Testato: Sono proprio i millis o gli analogread che reclamo in nome fella massaia di Voghera dei micro.

oltre che rendere il progetto portabile laddove esiste un sistema API arduino-compatibile, vedi DUE, mega, etc..

con questo non si vuole sminuire il progetto, ma dare un opinione sulla leggibilità/portabilità/complessità del codice.

BTW devo ancora leggermi le spiegazioni del codice, appena ho un pò di tempo..

Non voglio alimentare nessun flame. Penso che sia impossibile fare l'Ardutester esclusivamente con le funzioni messe a disposizione dal Reference. Grazie soprattutto a Paolo (dove era possibile) è stato Arduinizzato il più possibile.

ps) Nella nuova release ci sarà anche una parte in assembler. :grin:

pighixxx: ps) Nella nuova release ci sarà anche una parte in assembler. :grin:

+1 :grin:

pighi, mi sa che io e te ne riparliamo verso fine anno, se non la finisci di aggiungere funzionalità e revisioni :grin:

Michele, dopo che l'avrà rivisto lui, lo vorrei rivedere anche io. E come la storia delle leggi in parlamento, rimbalzano da una camera all'altra. :grin: :grin: :grin:

PaoloP: E come la storia delle leggi in parlamento, rimbalzano da una camera all'altra. :grin:

Allora sarà pronto per il 2025, forse :D

PaoloP: è letto il valore dell'ADC a 16 bit, a differenze dell'analogread che legge 2 byte e poi li unisce

mi spieghi questo pezzo? non capisco dove trovi i 16 bit.

PaoloP: Il valore viene moltiplicato per il valore di riferimento, 1.1V o 5V, diviso per 1024 (dovrebbe essere 1023??), e diviso per il numero di campioni.

confermo 1024, da 0 a 1023 sono 1024 step

Dopo la scarica, viene effettuato il test per verificare il corto delle sonde e in caso positivo si passa al sefttest interno, altrimenti si procede con la funzione CheckProbes. (che vedremo dopo mangiato) smiley-mr-green

urca, che pranzo tosto, non è acora finito? ]:D ]:D

:grin:

Uomini di poca fede. Io tra poco lo rilascio (E' stato praticamente riscritto :D) come opera compiuta poi Paolo darà una controllata e/o sistemata.

lesto:

PaoloP: è letto il valore dell'ADC a 16 bit, a differenze dell'analogread che legge 2 byte e poi li unisce

mi spieghi questo pezzo? non capisco dove trovi i 16 bit.

L'analogRead di Arduino legge indipendentemente i due registri a 8bit dell'ADC, il ADCH e il ADCL. I due registri sono contigui. Nell'Ardutester la lettura dei registri è fatta tramite ADCW che è definito come

#define ADCW    _SFR_MEM16(0x78)

al posto di

#define ADCL _SFR_MEM8(0x78)
#define ADCH _SFR_MEM8(0x79)

quindi legge con l'indirizzo del primo byte entrambi e li memorizza in 16bit. (perchè i registri sono contigui). Il problema è la portabilità perché quel #define cambia da micro a micro (motivo perché ho eliminato la compatibilità con la Leonardo). Pag 256 e 257 del datasheet linkato prima.

Che ti devo dire... dopo pranzo mi ha assalito la bimba che non mi ha dato tregua. Stanotte dovrei avere un po' di tempo libero.

p.s. Le definizioni le trovate nel file "avr/iom328p.h" che fa parte di "avr/io.h"

PaoloP: Il problema è la portabilità perché quel #define cambia da micro a micro (motivo perché ho eliminato la compatibilità con la Leonardo).

Come ti ho detto, se volete farlo utilizzabile su più schede Leonardo, posso vedere di fare qualcosa io, non è un problema. Leonardo, Uno, Mega direi no? La Due la lascerei fuori per via della sua questione dei 3V3.

Il workaround per il registro dell'ADC è già pronto, ma non è stato mai testato. A Bassano Pighi mi ha dato una Leo, vedrò se la cosa funziona, dopo essermi creato una shield "saldata". ;)

si, ma i registri letti sono gli stessi. anche se leggi 16 bit, i primi 6 (o meglio i primi 6 del registro 0x79) sono sempre a 0. L'adc rimane comunque a 10bit (mentre sebri lasciare intendere 16bit di risoluzione), è solo un modo per evitare di fare a mano la concatenzaione dei due byte. Dove sbaglio?

lesto: si, ma i registri letti sono gli stessi. anche se leggi 16 bit, i primi 6 (o meglio i primi 6 del registro 0x79) sono sempre a 0.

Esatto, è solo un "trucco" per risparmiare qualche ciclo macchina.

lesto:
si, ma i registri letti sono gli stessi. anche se leggi 16 bit, i primi 6 (o meglio i primi 6 del registro 0x79) sono sempre a 0.
L’adc rimane comunque a 10bit (mentre sebri lasciare intendere 16bit di risoluzione), è solo un modo per evitare di fare a mano la concatenzaione dei due byte.
Dove sbaglio?

Non sbagli. Difatti Paolo diceva che fa una lettura del registro a 16 bit non che fa una conversione a 16 bit.
E’ solo come dice astro per evitare di fare 2 letture consecutive del byte basso e di quello alto.

leo72: E' solo come dice astro per evitare di fare 2 letture consecutive del byte basso e di quello alto.

Oltre alle due letture poi c'è l'operazione di somma tra due byte con shift di 8 bit e relativo casting a valore intero, dovrei fare i conti per bene però direi che con la lettura diretta del valore a 16 bit, gestita in hardware, si risparmiano più di sei cicli macchina rispetto alla procedura a lettura del singolo registro e relativa unione in un valore a 16 bit fatta a software.

"E' un trucco di Fix!" :grin: