Offline
Jr. Member
Karma: 0
Posts: 84
|
 |
« Reply #15 on: December 28, 2012, 04:12:54 am » |
Ciao Ragazzi! Sono ancora alle prese con il progetto sopra indicato. Dai consigli di leo72, ho fatto tutto ciò che mi ha detto cercando di alleggerire il codice e liberare quanta più ram possibile. Per sapere quanta ram mi rimane libera durante l'esecuzione del programma, ho utilizzato la funzione freeRam() presente nella sua guida al link che lui ha indicato. Durante l'esecuzione del programma, sto facendo stampare sul display LCD la memoria libera e mi visualizza costantemente 1579byte liberi. Il bello è che dopo un oretta che arduino è acceso, i simboli strani sul monitor si presentano di nuovo... uffaaaaa!!!come mai?non ci sto capendo più niente
|
|
|
|
« Last Edit: December 28, 2012, 08:37:58 am by hermit274 »
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 84
|
 |
« Reply #16 on: December 28, 2012, 08:38:46 am » |
nessuno ha un consiglio?
|
|
|
|
|
Logged
|
|
|
|
|
Cagliari
Offline
Faraday Member
Karma: 49
Posts: 3000
|
 |
« Reply #17 on: December 28, 2012, 08:45:18 am » |
Controlla i collegamenti e creati un secondo sketch col minimo indispensabile per il funzionamento del display. Se è tutto a posto allora il problema è nel codice corrente.
|
|
|
|
|
Logged
|
IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85 Ultimi acquisti: CodeBender: http://codebender.cc/register/?referrer=PaoloP
|
|
|
|
0
Offline
Faraday Member
Karma: 17
Posts: 3910
Arduino rocks
|
 |
« Reply #18 on: December 28, 2012, 02:14:10 pm » |
1579 libero vuol dire che ne stai consumando veramente poca, il tuo problema deve essere di carattere hardware. prova semplicemente a tenere in stampa hello world e vedi cosa fa.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16440
Don't know what I do
|
 |
« Reply #19 on: December 28, 2012, 05:02:36 pm » |
Oppure che lo sketch riempie col tempo la RAM (stack e/o heap che saturano la memoria). Il fatto che prima il problema compariva quasi subito ed ora, a RAM sgombra, compaia in ritardo (perché ci mette di più a consumare tutta la RAM) fa pensare anche a questo.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 84
|
 |
« Reply #20 on: December 30, 2012, 05:01:24 am » |
Ciao ragazzi, scusate il ritardo, ma questi giorni sto costantemente testando Arduino con il monitor acceso e sta continuando a dare problemi. L'unico modo in cui non da problemi è quando faccio stampare sul monitor delle stringhe del tipo
P1 (memorialibera) H20: (temperatura) T-c: (temperatura)
In questo modo non da assolutamente problemi. Se gli faccio stampare una cosa del tipo
Programma 1 H20: (temperatura) T-c (temperatura)
Dopo qualche ora inizia a sbiellare. Per stampare sul monitor sto usando le funzioni lcd.print(F("Programma 1"))....secondo voi quale è il problema?E' possibile che è un problema hardware? vi dico già da adesso che tutti i cavi sono saldati sul monitor, quindi non ci sono falsi contatti o cose del genere....
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16440
Don't know what I do
|
 |
« Reply #21 on: December 30, 2012, 05:42:06 am » |
Se alleghi lo sketch ad un post forse è meglio, qualcuno può dargli un'occhiata.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16440
Don't know what I do
|
 |
« Reply #22 on: December 30, 2012, 06:42:35 am » |
Questo non è lo sketch completo, è solo dal loop() in giù. Manca tutto quello che c'è sopra (setup, define, inclusione di lib e var globali).
Comunque vedo una marea di chiamate a funzioni varie. Ogni chiamata a funzione incrementa lo stack. Se l'errore viene fuori dopo un po' è probabile che la Ram pian piano si saturi.
Potresti provare con un altro modo. Ogni 10 minuti prova a stampare a video il valore della RAM libera, per vedere se questa si satura nel tempo oppure no. Se non si satura allora ci può essere un errore logico (ad esempio un indice che esce da un array).
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16440
Don't know what I do
|
 |
« Reply #23 on: December 30, 2012, 11:15:11 am » |
Non compila. Mancano le funzioni carica_programma() e accensioneBottone()
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 84
|
 |
« Reply #24 on: January 01, 2013, 09:18:03 am » |
oggi ho provato a cambiare le frasi che stampavo sul display lcd ma nulla...sempre stesso problema. Ho addirittura saldato direttamente i fili sullo schermo facendoli arrivare direttamente ad Arduino senza utilizzare una dashboard, ma nulla. Problema persistente...non so proprio più che fare 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16440
Don't know what I do
|
 |
« Reply #25 on: January 01, 2013, 09:34:13 am » |
Allora ci dev'essere un problema di logica per cui dopo un certo lasso di tempo qualcosa "salta". hai provato col test che ti avevo suggerito l'altro giorno? Potresti provare con un altro modo. Ogni 10 minuti prova a stampare a video il valore della RAM libera, per vedere se questa si satura nel tempo oppure no. Se non si satura allora ci può essere un errore logico (ad esempio un indice che esce da un array).
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 84
|
 |
« Reply #26 on: January 01, 2013, 12:40:25 pm » |
ah si si si!quello l'ho fatto...avevo inserito nel codice la funzione free Ram che stampava la memoria libera ogni 5 secondi. La memoria libera risultava sempre costantemente 1579 tenendo acceso Arduino per 2-3 ore
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16440
Don't know what I do
|
 |
« Reply #27 on: January 01, 2013, 05:26:20 pm » |
Un altro punto critico è nella funzione readTemp. Ho visto che fai 20 cicli di calcoli molto complessi con logaritmi e divisioni di float. La RAM libera è sui 1500 byte al di fuori della readTemp. Ma lì dentro?
|
|
|
|
|
Logged
|
|
|
|
|
Cagliari
Offline
Faraday Member
Karma: 49
Posts: 3000
|
 |
« Reply #28 on: January 01, 2013, 05:34:36 pm » |
Il for dentro la funzione readtemp non serve a una mazza.  Fa la media di valori fissi. Devi fare la media di diverse letture del sensore, non la media dei calcoli di una sola lettura. 
|
|
|
|
|
Logged
|
IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85 Ultimi acquisti: CodeBender: http://codebender.cc/register/?referrer=PaoloP
|
|
|
|
Offline
Jr. Member
Karma: 0
Posts: 84
|
 |
« Reply #29 on: January 02, 2013, 05:00:19 am » |
cavolo!!!hai ragione Paolo P! non ci avevo proprio pensato!in questo modo in effetti non faccio proprio nulla! Voi mi consigliate toglierla questo ciclo for?a questo punto se mi complica le cose non mi costa proprio nulla toglierlo, tanto calcolo il valore della temperatura ogni 5 secondi
|
|
|
|
|
Logged
|
|
|
|
|
|