Data sample and LCD plot
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG SDRAM_DISCO_F746NG mbed
Revision 2:386f65563144, committed 2018-02-23
- Comitter:
- tapiov
- Date:
- Fri Feb 23 20:28:44 2018 +0000
- Parent:
- 1:c3c61d08f31b
- Commit message:
- New commit for forum review
Changed in this revision
--- a/functions.cpp Fri Feb 23 16:56:03 2018 +0000 +++ b/functions.cpp Fri Feb 23 20:28:44 2018 +0000 @@ -167,15 +167,12 @@ for(i=0;i<NoOfPoints;i++) { Data->array[i]=(uint32_t)((0x0000 << 16) | ain.read_u16()); wait_us(Period_us); - //if ((i%100)==0) { - // pc2.printf("index i = %u",i); - //} } InitScreen(LCD_COLOR_BLACK,LCD_COLOR_WHITE); LCDWrite(5,"DONE!",CENTER_MODE); - pc2.printf("\r\nSampling done, index i = %u \r\n",i); + pc2.printf("Sampling done.\r\n",i); } void AvgAndPlotPoints(Array *Data,uint32_t NoOfPoints, uint32_t AvgSize) {
--- a/main.cpp Fri Feb 23 16:56:03 2018 +0000 +++ b/main.cpp Fri Feb 23 20:28:44 2018 +0000 @@ -2,8 +2,7 @@ // (C) Tapio Valli 2018-02-17 #include "mbed.h" -#include <mbed_stats.h> -#include "mbed_mem_trace.h" +#include "mbed_stats.h" #include "LCD_DISCO_F746NG.h" @@ -20,54 +19,36 @@ Serial pc1(USBTX, USBRX); LCD_DISCO_F746NG lcd1; - -// Global heap stats -mbed_stats_heap_t heap_stats; -//mbed_stats_stack_t stack_stats; -//mbed_mem_trace_cb_t mem_trace_result; - -// Mem trace callback -// mbed_mem_trace_cb_t mem_trace(void) -// { -// pc1.printf("Heap = %lu, Max = %lu Percentage = %lu \r\n", -// heap_stats.current_size,heap_stats.max_size, -// (100*(heap_stats.current_size/heap_stats.max_size))); - -// pc1.printf("Stack = %lu, Max = %lu Percentage = %lu \r\n", -// stack_stats.reserved_size,stack_stats.max_size, -// (100*(stack_stats.reserved_size/stack_stats.max_size))); -//} - int main() { char CmdBuffer[30]; char Arg[30]=" "; char Cmd[30]=" "; + size_t n=0; uint32_t NoOfPoints=19200; uint32_t AvgSize=10; uint32_t Period_us=100; uint32_t Count_ms=1000; - -// mbed_mem_trace_set_callback(mem_trace); + + mbed_stats_heap_t heap_stats; // Clear screen, set it up InitScreen(LCD_COLOR_BLACK,LCD_COLOR_WHITE); - + //Initialize data storage Array Data; initArray(&Data,NoOfPoints); // initially 19200 elements - while (Cmd!="quit") { + while (!((strcmp(Cmd,"quit")==0)&&(n==1))) { // Print Ready and current settings pc1.printf("Ready. Settings are Points = %u, Avg = %u, Period_us = %u, Count_ms = %u \r\n", NoOfPoints,AvgSize,Period_us,Count_ms); - - mbed_stats_heap_get(&heap_stats); - pc1.printf("Heap = %lu, Max = %lu Percentage = %lu \r\n", - heap_stats.current_size,heap_stats.max_size, - (100*(heap_stats.current_size/heap_stats.max_size))); + + mbed_stats_heap_get(&heap_stats); + printf("Current heap: %lu\r\n", heap_stats.current_size); + printf("Max heap size: %lu\r\n", heap_stats.max_size); pc1.gets(CmdBuffer,30); // pc1.printf("I got %s \r\n", CmdBuffer); @@ -76,60 +57,67 @@ // Parse command and possible numeric arg char s[] = "Initial string"; - char ** word_array = NULL; + char ** word_array=NULL; strcpy(s,CmdBuffer); - size_t n = string_parser(s, &word_array ); + n=string_parser(s,&word_array); - for ( size_t i = 0; i < n; i++ ) { + for ( size_t i=0;i<n;i++) { if (i==0) {strcpy(Cmd,word_array[i]);} if (i==1) {strcpy(Arg,word_array[i]);} if (i>1) {pc1.printf("Wrong number of arguments \r\n");} } // pc1.printf("Cmd = %s Arg = %s \r\n",Cmd,Arg); - for ( size_t i = 0; i < n; i++ ) free( word_array[i] ); - free( word_array ); + for ( size_t i=0;i<n;i++) free( word_array[i] ); + free(word_array); // Branch based on command // meas: Sample and plot a data set - if(strcmp(Cmd,"meas") == 0) { + if((strcmp(Cmd,"meas")==0)&&(n==1)) { // Countdown CountDown(Count_ms); // Sample & plot data one time SamplePoints(&Data,NoOfPoints,Period_us); - AvgAndPlotPoints(&Data,NoOfPoints,AvgSize); } // setpoints: Adjust sampled points - else if(strcmp(Cmd,"setpoints") == 0) { + else if((strcmp(Cmd,"setpoints")==0)&&(n==2)) { // Allocate more or less data space NoOfPoints=(uint32_t) strtol(Arg,NULL,10); insertArray(&Data,NoOfPoints); } // setavg: Adjust average amount in samples - else if(strcmp(Cmd,"setavg") == 0) { + else if((strcmp(Cmd,"setavg")==0)&&(n==2)) { AvgSize=(uint32_t) strtol(Arg,NULL,10); } // setperiod: Adjust sample period in us - else if(strcmp(Cmd,"setperiod") == 0) { + else if((strcmp(Cmd,"setperiod")==0)&&(n==2)) { Period_us=(uint32_t) strtol(Arg,NULL,10); } // setcount: Adjust countdown period in ms - else if(strcmp(Cmd,"setcount") == 0) { + else if((strcmp(Cmd,"setcount")==0)&&(n==2)) { Count_ms=(uint32_t) strtol(Arg,NULL,10); - } + } + + // quit: Exit on next while + else if((strcmp(Cmd,"quit")==0)&&(n==1)) { + // Do nothing yet + } + else { + pc1.printf("Wrong command or argument \r\n"); + } } // Free memory after quit freeArray(&Data); - pc1.printf("Exit. Data freed. \r\n", CmdBuffer); + pc1.printf("Exit. Data freed. \r\n"); // Infinite loop while(1)
--- a/mbed_app.json Fri Feb 23 16:56:03 2018 +0000 +++ b/mbed_app.json Fri Feb 23 20:28:44 2018 +0000 @@ -1,3 +1,4 @@ { - "macros": ["MBED_MEM_TRACING_ENABLED"] -} \ No newline at end of file + "macros": ["MBED_HEAP_STATS_ENABLED=1"] +} +