Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Dimensione firmware compilato per 8 bit oppure per 16 bit

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

3
voti

[41] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto Utentelelerelele » 20 dic 2015, 10:15

Ho inserito il codice all'interno del programma, ed il risultato è stato ottimo, obiettivo raggiunto.

Ho effettuato una prova portando il valore della pressione a 101325 e la risposta del ciclo è stata 1, avrebbe dovuto essere zero, poi ho portato il valore di pressione, a 8000 ed il risultato è stato 1948, invece di 1939, ed in punto intermedio il valore 92000 ha dato 807 al posto di 802,8; comunque risultati del tutto accettabili.

Anche il recupero di memoria è stato evidente, il programma iniziale compilato era di 14038 byte, con il solo inserimento del polinomio, e conseguente eliminazione del ciclo in virgola mobile con esponente è passato a 12466, sostituendo un paio di variabili da float a UINT32 il compilato è passato a 12370, a questo punto ho potuto eliminare la libreria math.h, questo ha portato ad una riduzione ulteriore, passando al compilato a 11972Byte, una riduzione complessiva dello spazio superiore al 14%!

Passiamo all'analisi del codice..qua si fa dura......

Allora si tratta di polinomio a 4 termini, in effetti la variabile contatore "loa" eseguirà 4 cicli, ad ogni ciclo assegno alla variabile s il valore di se stessa, moltiplicato per , il rapporto tra valore di pressione e p, sommando il valore del coefficiente del termine a[], ed alla fine dei cicli effettivamente ho un valore molto prossimo a quanto calcolato direttamente.

ho capito (più o meno) il motivo di bilanciare il polinomio, mi pare sia la costante p.

trovo una certa similitudine con il codice scritto in C e questo polinomio
P(x)=(...((((((a_n\ x+a_{n-1})\ x+a_{n-2})\ x+a_{n-3})\ x+...)\ x+a_1)\ x+a_0

Ovviamente non è pane per i miei denti! Evidentemente mi mancano le basi, dovrò farmene una ragione, certo che non si può essere capaci di fare tutto.

Comunque il risultato è stato eccellente.

Grazie a Foto UtentePietroBaima per il prezioso aiuto.

saluti.
Avatar utente
Foto Utentelelerelele
4.899 3 7 9
Master
Master
 
Messaggi: 5505
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

1
voti

[42] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto UtenteIlGuru » 20 dic 2015, 14:38

Questa è una metafora per la vita.
All'inizio volevi un micro più grosso e pensavi di aver usato bene il C.
Invece le dimensioni non contano, se lo sai usare davvero bene.
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32

0
voti

[43] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto Utentelelerelele » 20 dic 2015, 15:08

Foto UtenteIlGuru :ok:

Non si è mai finito di imparare, quando si pensa questo probabilmente si è solo agli inizi.
Avatar utente
Foto Utentelelerelele
4.899 3 7 9
Master
Master
 
Messaggi: 5505
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

2
voti

[44] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto UtentePietroBaima » 22 dic 2015, 0:43

Foto Utentelelerelele, mi fa molto piacere esserti stato utile.
Per quanto riguarda la comprensione dell'algorìtmo, non preoccuparti, forse devi solo metterti un po' con calma a leggere qualcosa, in letteratura, di approssimazione polinomiale.

Mi fa molto molto piacere che tu ti sia messo a provare il codice e a inserirlo effettivamente nel tuo programma per il microcontrollore.
Non credo, a quanto vedo generalmente nei thread, che siano in molti ad andare fino in fondo con l'implementazione dei suggerimenti dati. Tu invece lo ha fatto! :ok:

Se ti viene 1 invece che zero, per il valore di p max, significa che il tuo micro sta proprio facendo tutto il possibile... beh, che dire, facciamolo lavorare ! :D
Le approssimazioni che trovi sono del tutto accettabili, come dici anche tu, anche considerando quanto si possa ottenere da un sistema di misura altimetrica basato su una misura barometrica diretta.

In definitiva, complimenti per la realizzazione!

Se hai bisogno di ulteriore aiuto, per questo o altri progetti (sempre che ne sia in grado, naturalmente) puoi certamente contare su di me.

Ciao,
Pietro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[45] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto UtenteCandy » 22 dic 2015, 0:58

Tutto quello che volete, ma a ben vedere i grafici postati da PB, a me sembra una retta lineare quella che ne viene fuori. Perché non una interpolazione con costanti?
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

1
voti

[46] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto UtentePietroBaima » 22 dic 2015, 1:53

mah, in realtà la precisione del modello non è tale da giustificare una cubica, era più che altro per evitare di fare dei calcoli in floating point.
Una approssimazione lineare poteva anche andare bene (centrata rispetto alla media dei valori massimo e minimo), dipende solo dalla precisione che vogliamo raggiungere.
Ne ho scelta una cubica perché non costava molto di più, con il metodo utilizzato, e una quadratica non sarebbe andata molto bene.
Una quartica mi sembrava esagerata.

Una tabella con 3 o 4 valori, interpolata linearmente può andare ugualmente bene (che equivale a una interpolazione fatta a spezzate).
In genere, quando uso microcontrollori piccoli, la mia preoccupazione è quella di non usare float o double e di caricare librerie di funzioni matematiche.

Il problema vero, di fondo, è quello dell'efficienza degli algoritmi: alzarla anche solo di qualche punto percentuale è sempre un discreto casino :-)

Poi ci sarebbe anche da fare il discorso di come rendere affidabile la misura dell'altezza rispetto alla misura della pressione atmosferica, ma qui si esula dall'algoritmo.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

1
voti

[47] Re: Dimensione firmware compilato per 8 bit oppure per 16 bi

Messaggioda Foto Utentelelerelele » 22 dic 2015, 11:23

PietroBaima ha scritto:Mi fa molto molto piacere che tu ti sia messo a provare il codice e a inserirlo effettivamente nel tuo programma per il microcontrollore.
Non credo, a quanto vedo generalmente nei thread, che siano in molti ad andare fino in fondo con l'implementazione dei suggerimenti dati. Tu invece lo ha fatto! :ok:
.

Non provarlo sarebbe stato scorretto nei confronti di chi si è prodigato a darmi informazioni utili a risolvere i miei problemi.
Inoltre sarebbe inutile ai fini miei di comprensione della problematica, nei limiti delle mie capacità.

PietroBaima ha scritto:Le approssimazioni che trovi sono del tutto accettabili, come dici anche tu, anche considerando quanto si possa ottenere da un sistema di misura altimetrica basato su una misura barometrica diretta.

Ovviamente ho realizzato una compensazione di pressione, alla partenza la taro con l'altitudine di casa mia alla pressione attuale, (tramite encoder incrementale), in giro prendo per buona l'altitudine che mi da, all'arrivo a casa a volte mi trovo 1-2 decine di metri di differenza, suppongo pressione barometrica cambiata.

Avevo pensato di realizzarne uno con lettura diretta GPS, (trovato in rete a 10€), ma questo è tutto un altro thread.

saluti.
Avatar utente
Foto Utentelelerelele
4.899 3 7 9
Master
Master
 
Messaggi: 5505
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

Precedente

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti