// What is used by a function call? #include "mem_syms.h" // remove initialization and location changes from 0x200 to 0x212 // format for printing addresses, sometimes HEX, sometimes DEC #define ADDR DEC #define PRINT_ADDR(x) Serial.println( (int) x, ADDR) char* stack_before; char* stack_after; int stack_used_by_call; void fn() { int x = 42; stack_after = STACK_TOP; // do something Serial.print("fn "); Serial.println(x, DEC); } void setup() { Serial.begin(9600); Serial.println("MEM06"); Serial.println("Stack bot, top, size"); Serial.println( (int) STACK_BOTTOM, ADDR); Serial.println( (int) STACK_TOP, ADDR); Serial.println( (int) STACK_SIZE, ADDR); stack_before = STACK_TOP; fn(); stack_used_by_call = (int) stack_before - (int) stack_after; Serial.print("Stack used "); Serial.println(stack_used_by_call, ADDR); Serial.println("Stack bot, top, size"); Serial.println( (int) STACK_BOTTOM, ADDR); Serial.println( (int) STACK_TOP, ADDR); Serial.println( (int) STACK_SIZE, ADDR); } void loop() { }