Inhibit interrupts while updating/reading minimum_free_memory as it is accessed from interrupt handler.
Add function to maintain a minimum value seen of free memory. Add call to it in DCCWaveform interrupt handler (assumed to be the likely worst case for stack usage). Report this minimum value in main loop.