/// <summary>
/// Определение свободной памяти контроллера
/// </summary>
void my_freeRam(void)
{
char* ramstart = (char*)0x20070000; //адрес начала SRAM
char* ramend = (char*)0x20088000; //адрес конца SRAM
char* heapend = sbrk(0);
register char* stack_ptr asm("sp");
struct mallinfo mi = mallinfo();
int ansi_dat_str = ANSI_INFO_ROW + 1;
int RamAll;
int RamStatic;
int RamDynamic;
int RamStack;
int RamFreeSH;
int RamFreeAll;
RamAll = ramend - ramstart;
RamStatic = &_end - ramstart;
RamDynamic = mi.uordblks;
RamStack = ramend - stack_ptr;
RamFreeSH = stack_ptr - heapend;
RamFreeAll = RamFreeSH + mi.fordblks;
my_view_serial_print("RAM ALL:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (RamAll), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print("Ram used (bytes): ", ansi_dat_str, ANSI_RAM_NAME_COL); ansi_dat_str += 1;
my_view_serial_print(" static:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (RamStatic), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print(" dynamic:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (RamDynamic), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print(" stack:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (RamStack), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print("Ram Min:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (RamFreeSH), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print("Ram Free:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (RamFreeAll), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print("arena:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (mi.arena), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print("ordblks:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (mi.ordblks), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print("hblks:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (mi.hblks), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print("hblkhd:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (mi.hblkhd), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print("fordblks:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (mi.fordblks), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
my_view_serial_print("keepcost:", ansi_dat_str, ANSI_RAM_NAME_COL); my_view_serial_print((String) (mi.keepcost), ansi_dat_str, ANSI_RAM_VALUE_COL); ansi_dat_str += 1;
}