Leggere una porta analogica in ANSI C

Come da titolo, vorrei leggere il valore letto da una porta analogica in ANSI C evitando funzioni preconfezzionate di Wiring come la analogRead, come posso fare ? posso leggere il valore di un registro o come faccio ?

Risposta breve: Fai come fà analog read :) , guardati i sorgenti della funzione Risposta brevissima (ma più lunga): http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=56429&start=0

Non ci avevo pensato, però volevo farla ottimizzata al massimo, ora provo ;)

ratto93: Non ci avevo pensato, però volevo farla ottimizzata al massimo, ora provo ;)

In linea di massima la analogRead() la puoi usare senza troppi problemi perché è l'ADC ad essere lento, quindi cambia poco o nulla guadagnare qualche us sul codice quando ne devi aspettare almeno 100 prima che sia disponibile la lettura. Diverso sarebbe il discorso se gestisci l'ADC tramite interrupt, cioè lanci la lettura, il codice continua a girare mentre l'ADC completa il suo lavoro e quando è pronta la lettura viene invocata la relativa ISR che mette a disposizione il valore della conversione.

Il mio problema, non è la lentezza dell'ADC, solo che volevo fare un intero programma scritto in vero C dall'inizio alla fine il tutto per metterlo nella tesina.

ratto93: Il mio problema, non è la lentezza dell'ADC, solo che volevo fare un intero programma scritto in vero C dall'inizio alla fine il tutto per metterlo nella tesina.

Allora non puoi farlo con wiring, devi usare AvrStudio 4 e lavorare nativamente in C. Che tematica vuoi affrontare nella tesina ?

Ho un modello di impianto fotovoltaico ad inseguimento, con interfaccia online, solo che la parte che mi gestisce la rete è legata all'Eth shield, per la quale ho già scritto quasi tutto il codice, il secondo processore che controlla tutta la parte di potenza un Tiny volevo che avesse tutto il codice in C :)

legacy:

ratto93: alla fine il tutto per metterlo nella tesina.

Non si mette [u]MAI[/u] il codice nelle tesine!

Mica ci metto tutto il codice, ci metto solo alcune porzioni di codice non cruciali per il funzionamento del mio modello tipo la lettura dell'adc, se la userò la lettura e la scrittura della eeprom, solo per far sembrare il tutto complicato, il fatto di volerlo fare tutto in C è per trogliermi uno sfizio e per imparare a programmare in maniera pura :)

legacy:

ratto93: alla fine il tutto per metterlo nella tesina.

Non si mette [u]MAI[/u] il codice nelle tesine!

Infatti si mette sul Forum a beneficio di tutti. ;)

PaoloP:

legacy:

ratto93: alla fine il tutto per metterlo nella tesina.

Non si mette [u]MAI[/u] il codice nelle tesine!

Infatti si mette sul Forum a beneficio di tutti. ;)

Forse ma non completo, in quella tesi ci sono due anni di studio abbondanti, a partire dalla parte hardware ;)

ratto93: Forse ma non completo, in quella tesi ci sono due anni di studio abbondanti, a partire dalla parte hardware ;)

Argh... :sweat_smile: La mia swRTC è il frutto di 1 anno di studio sui micro.... è lì per tutti.. I miei test sull'Avr-cdc sono il frutto di mesi di spippolamento sui micro e su come comunicare col PC... sono lì per tutti..

Non condivido chi non condivide. Se non vuoi rendere, non devi neanche attingere ]:D

leo72:

ratto93: Forse ma non completo, in quella tesi ci sono due anni di studio abbondanti, a partire dalla parte hardware ;)

Argh... :sweat_smile: La mia swRTC è il frutto di 1 anno di studio sui micro.... è lì per tutti.. I miei test sull'Avr-cdc sono il frutto di mesi di spippolamento sui micro e su come comunicare col PC... sono lì per tutti..

Non condivido chi non condivide. Se non vuoi rendere, non devi neanche attingere ]:D

Eh cacchio, a leo non posso dir di no :P Sarà in formato CC non appena sarà completa... uff mi rompete le uova sul paniere :)

ratto93: Eh cacchio, a leo non posso dir di no :P Sarà in formato CC non appena sarà completa... uff mi rompete le uova sul paniere :)

Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia (CC BY-NC-SA 3.0) http://creativecommons.org/licenses/by-nc-sa/3.0/it/deed.it

E' la licenza che ti permette di distribuire il materiale e di farlo usare alla gente a patto che tutte le opere che ne derivano siano distribuite con la stessa licenza, sia chiaramente indicato l'autore, non possano guadagnarci sopra. In questo modo se realizzi un qualcosa di commerciabile, solo tu puoi venderlo, e tutti quelli che ricreano opere col tuo prodotto siano obbligati ad attribuirtene la paternità.

leo72:

ratto93: Eh cacchio, a leo non posso dir di no :P Sarà in formato CC non appena sarà completa... uff mi rompete le uova sul paniere :)

Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia (CC BY-NC-SA 3.0) http://creativecommons.org/licenses/by-nc-sa/3.0/it/deed.it

E' la licenza che ti permette di distribuire il materiale e di farlo usare alla gente a patto che tutte le opere che ne derivano siano distribuite con la stessa licenza, sia chiaramente indicato l'autore, non possano guadagnarci sopra. In questo modo se realizzi un qualcosa di commerciabile, solo tu puoi venderlo, e tutti quelli che ricreano opere col tuo prodotto siano obbligati ad attribuirtene la paternità.

Si lo so, non mi pare sbagliato , no ?

Assolutamente. Sono favorevole alla ridistribuzione del codice e del sapere ma sono fermamente contrario ai furbastri che fanno proprio il lavoro degli altri: questa è la licenza giusta per dare a Cesare quel che è di Cesare, permettendo di distribuire il proprio lavoro ma garantendosi comunque i giusti diritti su di esso.

Beh, allora chiudiamo il forum e facciamo festa. Se non dobbiamo diffondere 1 briciolo di ciò che sappiamo, a che servono i forum per le persone che devono chiedere aiuto? A nulla.

Voglio essere più ottimista di te, tutto qui. Dando il buon esempio spesso si ottiene di più che dandolo sbagliato.

legacy: La differenze e' un bricciolo e non l'opera finita, Leo sto dicendo questo, e cioe' sostenevo l'idea iniziale del Ratto del parziale a cui hai proposto l'integrale.

Io chiedevo di pubblicare la sua opera qui, sul forum. Se poi all'università non vuole dare, e può non darlo s'intende, tutto il suo lavoro perché ha paura che, una volta pubblicato, finisca nelle mani sbagliate, faccia come reputa meglio. A me piace però che uno che attinge dal forum poi renda al forum qualcosa. Che sia una riga di codice o una funzione poco cambia.

Circa il forum nota che nessuno pubblica mai tutto per intero, il primo e' proprio Astrobeed con cui ho litigato proprio per questo proprio ieri e oggi.

Non rispondo per gli altri. A me piace l'idea che ci sia qualcuno che usa il mio lavoro, vuol dire che lo hanno apprezzato e che lo hanno reputato fatto bene (cosa più importante).

p.s. Le ultime due volte che ho dato il buon esempio mi hanno gabbato alla grande bruciandomi l'erasmus e un sacco di quattrini, tutte cose che ora che c'e' la crisi mi fanno incazzare ancora di piu' perche' non c'e' nessuno che ti da veramente una mano quando serve.

Sì, questo lo so, mi ricordo che ti sei lamentato più volte di questo. Ma siccome io sono tutt'altro che un programmatore o un elettronico di professione, a meno che non scenda a darmi mano la fatina della pazzia e renda grullo qualcuno che domani mi assume come programmatore o elettronico, attualmente da questa cosa guadagno zero: redistribuendo il mio lavoro continuo a guadagnare zero. Quindi parità assoluta. Per cui posso anche distribuirlo, non trovi? ;)

Magari università :) Vecchi miei sono in quinta superiore.... Ad ogni modo... non serviva alzare tutto questo polverone :) presto preparerò qualcosa da pubblicare, come per altro avevo già previsto..Tutti devono essere contenti, per cui ciò che pubblicherò non conterrà alcune piccole funzioni cruciali per il mio circuito ma che con un pò di studio si possono ricostruire, tanto, il circuito non andrò certo a venderlo... è anche per vedere se qualcuno riesce a far qualcosa di meglio :) Comunque, non appena avrò documentato il tutto se volete possiamo discuterne approfonditamente, mi farebbe piacere..

ritornando in topic:

col registro admux setti il canale(pin) da leggere, il prescaler dell'ADC, e la lettura continua col registro adcsra fai partire la conversione coi registri ADCl e ADCh leggi il risultato

ps. opensource is the way ;)

:D :D si , basta con queste cc. e gpl e vai di BSD ]:D