memoria esaurita attiny84

Salve, vorrei sottoporre una problematica di gestione memoria dinamica con attiny84…
con la definizione delle variabili globali il compilatore indica un consumo del 7% di memoria dinamica mentre inserendo le varie funzioni la compilazione indica un uso di oltre il 126%… togliendo le variabili unsigned long l’uso è sceso al 105%… premetto che non uso Serial.print… la funzione stampa() è attiva solo per il debug con arduino normale… nella compilazione con attiny il comando richiama una funzione vuota…

ho notato che nella funzione che usa la maggior parte della memoria, ci sono diversi controlli fatti con la funzione millis()…

nonostante le mie ricerche, non riesco a trovare nessuna soluzione per ridurre l’occupazione della memoria… qualcuno ha delle indicazioni in merito… grazie

allego la funzione “incriminata”

memoria attiny.txt (4.63 KB)

scusate ma ho risolto.....ho tolto tutte le chiamate alla funzione stampa() e l'uso è tornato a solo il 15% della memoria dinamica disponibile.... anche se nella relativa funzione di stampa() avevo tolto la chiamata alla Serial.print... l'allocazione di memoria avveniva lo stesso....

  1. Se usi F() sulle stringhe di messaggio, queste occuperanno la memoria flash (codice) e non la sram
    Serial.println( F("ciao ciao!!") );

Passare però alla tua stampa() come parametro il puntatore a stringa che stà in flash non saprei
2. se posti solo un pezzo del programma, che possiamo dire d'altro ?? inoltre che formato è ? è pieno di caratteri strani! wordpad ??

{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf610
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0

\f0\fs24 \cf0 // procedura allarme attivato\
\
void ON()\
\{  \
  1. Poi leggo: stampa(String(sensori_esterni));
    se usi la classe/oggetti String ti fai solo del male.
    Perchè crei una funzione stampa() solo per "mascherare" una Serial.print ??

>narciso1960: MAI usare editor che salvano in RTF ... qui DEVI usare solo il TXT puro e ... quando si posta qualche cosa, si ricontrolla sempre quello che si è postato ... :wink:

Riprendi il tuo codice, copialo in un editor di testo puro (notepad) e salvalo di nuovo. Grazie.

Guglielmo