Pages: 1 [2] 3 4 5   Go Down
Author Topic: Simboli strani sul display  (Read 3878 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Jr. Member
**
Karma: 0
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

nessuno ha un consiglio?
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 104
Posts: 6616
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5610
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Jr. Member
**
Karma: 0
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se alleghi lo sketch ad un post forse è meglio, qualcuno può dargli un'occhiata.
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non compila. Mancano le funzioni carica_programma() e accensioneBottone()
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-roll-sweat
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Jr. Member
**
Karma: 0
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21650
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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, Italy
Offline Offline
Tesla Member
***
Karma: 104
Posts: 6616
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il for dentro la funzione readtemp non serve a una mazza. smiley-roll
Fa la media di valori fissi.
Devi fare la media di diverse letture del sensore, non la media dei calcoli di una sola lettura.  smiley-eek
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Jr. Member
**
Karma: 0
Posts: 84
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: 1 [2] 3 4 5   Go Up
Jump to: