I would like to hear any comments on why or if Serial.prints use system RAM. I had no idea this could happen.
Aren't they stored in PROGMEM along with the rest of the hex code?
I am using lots of prints for debugging. Could this become a problem. If so is there any way to check?
What I meant was, does something like Serial.print("hello"); use up any RAM
does something like Serial.print("hello"); use up any RAM
Yes. Because of the combination of the nature of the language used, and the architecture of the CPU used, all data (including constant strings like "hello") will become variables in RAM. (thus taking up space both in RAM and in Flash, since they have to be in flash so that they can be copied to RAM.)
You can think of flash memory on an AVR as being more like an IO device than typical CPU "data" memory. An AVR program can access it via special functions (pgm_read_byte() and similar), but CPU instuctions, C code, and pointers can't access it like "memory."
Succinct and to the point. Now today is a better day.
Thank you.
Mikal Hart's Flash library is very convenient for implementing strings that are not stored in RAM: