Comunicazione seriale

Grazie Leo72! la risposta più chiara e concisa che ho visto in giro per spiegare il concetto!

Quindi la function freeRam() non mi da la RAM libera di tutta quella disponibile ma solo quella compresa tra il Heap e lo STACK giusto? mi sai dire quanto è grande lo spazio .data e .bss per favore sull'arduino? dal datasheet Atmel, non mi è chiaro:

Figure 8-3. Data Memory Map
32 Registers 0x0000 - 0x001F
64 I/O Registers 0x0020 - 0x005F
160 Ext I/O Reg. 0x0060 - 0x00FF
Internal SRAM 0x0100(inizio)
(512/1024/1024/2048 x 8) 0x02FF/0x04FF/0x4FF/0x08FF (fine in base alla capacità della SRAM, l'ultimo è il 328P dell'arduino uno)

non mi è chiaro chi sia chi, ma da come vedo, i 2048 bytes sono separati dagli altri registri, vero? o sto mi sto confondendo, forse le aree .data, .bss heap e stack sono all'interno di quei 2048 bytes ed i registri sono un'altra cosa? a me sembra più logico così. Con i picaxe sapevo solo che avevo a disposizione un determinato numero di byte per dichiarare variabili e le dovevo amministrare sapientemente per far funzionare il tutto, spesso creavo forme di riciclarle (copiandole in una zona di RAM libera apposita e leggendola quando mi servivano) ma qui è più complicato. Scusate la mia ignoranza e/o confusione!! :~