Go Down

Topic: Riduzione prestazioni (Read 599 times) previous topic - next topic

van4dium

Salve a tutti.

Utilizzando arduino (mega 2560) per un progetto a cui sto lavorando mi sono accorto che dopo molte (MOLTE) programmazioni
del micro le sue prestazioni tendono a diminuire.
Cioè, sembra che il clock di arduino sia inferiore a quando la scheda era nuova.
Sò che che le programmazioni sono limitate a 10000 (mi pare) ma non credo di averne fatte così tante

è possibile oppure ho qualche problema hardware io (arduino pilota una scheda che controlla 5 motori a spazzole,3 resistenze saldatrici e vari sensori)

Grazie in anticipo.

Ciao van.

PaoloP

Uno dei motivi di rallentamento potrebbe essere l'uso intensivo di interrupt con codice molto lungo o con delay interni.
In qual caso il micro eseguirebbe prima tutta coda di interrupt, che di volta in volta vengono richiamati da eventi interni ed esterni, e non il codice principale.
In caso di termine dei cicli lettura scrittura arvdude darebbe errore in fase di verifica e il micro non sarebbe programmabile.
Riguardo alla memoria in caso di saturazione il micro semplicemente si pianta.

lesto


Riguardo alla memoria in caso di saturazione il micro semplicemente si pianta.


magari! purtroppo è molto più probabile che abbia comportamenti random
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

PaoloP

Si Lesto, hai ragione.  :smiley-mr-green:
Comunque non credo siano le "MOLTE" programmazioni quanto le correzioni e aggiunte al codice.
Se carichi il codice molte volte vuol dire che altrettante volte l'hai modificato e ampliato.
Un ciclo loop più lungo mette più tempo per essere eseguito.

uwefed

Il numero di cancellazioni/ scritture della Flash non ha nessuna influenza sulla velocitá di esecuzione del codice. La velocitá dipende unicamente dalla frequenza di Clock. Il Flasch é garantito dal produttore per un certo numero di cancellazioni/ scritture e che mantiene i dati per 100 anni a una temperatura di 25°C. I dati nella Flash vengono memorizzati in forma di elettroni intrappolati in un elettrodo circondato da materiale isolante. Ogni cancellazioni/ scritture perggiora le proprietá isolanti del materiale isolante e cosí dopo un certo numero di cancellazioni/ scritture non puó piú essere garantito che i livelli logici sono riconosciuti come quelli inizialmente programmati. La lettura della Flash non ha nessun limite.

Uno sketch se programmato male o deve fare tante cose puó avere necessitá di temp di esecuzioni lunghe. Se vuoi consigli devi darci lo sketch e lo schema elettrico.

Ciao Uwe

lesto

Quote
Riguardo ad i rallentamenti pensavo che il problema fosse la lentezza del codice ma anche con uno sketch leggerissimo
(attivazione motore fino a che l'encoder non ha raggiunto gli step desiderati e poi stop e reset step encoder e ricomincia)
non cambia nulla.


davvero non capisco con che logica hai portato avanti gli esperimeti sulla velocità.. puoi postare gli sketch ed i risultati?
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72


Il numero di cancellazioni/ scritture della Flash non ha nessuna influenza sulla velocitá di esecuzione del codice.

Quoto al 100%.
Non è che dopo 1000/2000/5000 scritture sulla Flash i dati sono letti più lentamente per cui tutto gira più piano.
Sarebbe da vedere il codice per vedere se nelle 3 ISR che hai scritto  ci sono dentro istruzioni che potrebbero dar noia.

Go Up