Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: LCD_fonts SPI_TFT_ILI9341 CMSIS_DSP_401_without_cm4 mbed-src SDFileSystem wavfile
main.cpp
- Committer:
- linx0576
- Date:
- 2015-12-13
- Revision:
- 11:737a2367af3c
- Parent:
- 10:0986108f8aa3
- Child:
- 12:ed94d67bd36b
File content as of revision 11:737a2367af3c:
#include "main.h" //FROM DFSDM CORE
#include <math.h>
#include "stdio.h"
#include "mbed.h"
#include "SPI_TFT_ILI9341.h"
#include "string"
#include "Arial12x12.h"
#include "Arial24x23.h"
#include "arm_math.h"
#include "SDFileSystem.h"
//#include "main.h"
#define samplenum 1024
//FROM DFSDM CORE
extern void RECORD(void);
extern void MSE(void);
extern void COMPARE(void);
extern float32_t CONTROLPWR[1024]; //CONTROL 0 PWR
extern float32_t CONTROLPHS[1024]; //CTONROL 0 PHS
extern float32_t CONTROLPWRMSE;//CONTROL PWR MSE
extern float32_t CONTROLPHSMSE;//CONTROL PHS MSE
extern float32_t POWER[1024];
extern float32_t PHS[1024];
extern float32_t PWRMSE;
extern float32_t PHSMSE;
Serial pc(SERIAL_TX, SERIAL_RX);
//DigitalIn mybutton(USER_BUTTON);
//DigitalOut myled(LED1);
//SDFileSystem sd(PC_12, PC_11, PC_10, PD_2, "sd");
//
DigitalIn ain1(PC_9);
DigitalIn ain2(PB_15);
DigitalIn ain3(PC_7);
DigitalIn ain4(PC_6);
DigitalIn ain5(PC_8);
uint32_t ifftFlag = 0;
uint32_t doBitReverse = 1;
/* Reference index at which max energy of bin ocuurs */
uint32_t refIndex = 213, testIndex = 0;
const float32_t a[samplenum] = { -0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.505906778385130, 0.048366940168201, -0.545696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203, 2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193, -1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454,
1.025026795103179, 0.928841900171200, 2.930499509864950, 2.013349089766430, 2.381676148486737, -3.081062307950236, -0.389579115537544, 0.581540149166620, -2.601953341353208, 0.333435137781238, -2.812945856162965, 2.649109640172910, -1.003963025744654, 1.552460768755035, 0.088641345335247, -2.519951327113426, -4.341348988610527, 0.557772429359965, -1.671267412948494, 0.733951350960387, 0.409263788034864, 3.566033071952806, 1.882565173848352, -1.106017073793287, 0.554456720778718, -2.513205795512153, 0.310978660939421, 0.579706500111723, 0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345,
1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834, 0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723, 0.640249919627884, 1.103122489464969, 2.231779881455556, -1.308035392685241, 0.424070304330106, -0.200383932651189, -2.365526783356541, -0.989114757436628, 2.770807688959777, -0.444172737462307, 0.079760979374078, -0.005199118412183, -0.664712668309527, -0.624171857561896, 0.537306979007338, -2.575955675497642,
1.562363235756780, 1.814069369848895, -1.293428583392509, -1.026188449495686, -2.981771815588717, -4.223468103075124, 2.672674782004045, -0.856096801117735, 0.048517345512563, -0.026860721136225, 0.392932277758187, -1.331740855093099, -1.894292129477081, -1.425006468460681, -2.721772427617057, -1.616831100216806, 3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287, 0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416385105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645,
-0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.505906778385130, 0.048366940168201, -0.545696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203, 2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193, -1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454,
1.025026795103179, 0.928841900171200, 2.930499509864950, 2.013349089766430, 2.381676148486737, -3.081062307950236, -0.389579115537544, 0.581540149166620, -2.601953341353208, 0.333435137781238, -2.812945856162965, 2.649109640172910, -1.003963025744654, 1.552460768755035, 0.088641345335247, -2.519951327113426, -4.341348988610527, 0.557772429359965, -1.671267412948494, 0.733951350960387, 0.409263788034864, 3.566033071952806, 1.882565173848352, -1.106017073793287, 0.554456720778718, -2.513205795512153, 0.310978660939421, 0.579706500111723, 0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345,
1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834, 0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723, 0.640249919627884, 1.103122489464969, 2.231779881455556, -1.308035392685241, 0.424070304330106, -0.200383932651189, -2.365526783356541, -0.989114757436628, 2.770807688959777, -0.444172737462307, 0.079760979374078, -0.005199118412183, -0.664712668309527, -0.624171857561896, 0.537306979007338, -2.575955675497642,
1.562363235756780, 1.814069369848895, -1.293428583392509, -1.026188449495686, -2.981771815588717, -4.223468103075124, 2.672674782004045, -0.856096801117735, 0.048517345512563, -0.026860721136225, 0.392932277758187, -1.331740855093099, -1.894292129477081, -1.425006468460681, -2.721772427617057, -1.616831100216806, 3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287, 0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416385105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645,
-0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.505906778385130, 0.048366940168201, -0.545696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203, 2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193, -1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454,
1.025026795103179, 0.928841900171200, 2.930499509864950, 2.013349089766430, 2.381676148486737, -3.081062307950236, -0.389579115537544, 0.581540149166620, -2.601953341353208, 0.333435137781238, -2.812945856162965, 2.649109640172910, -1.003963025744654, 1.552460768755035, 0.088641345335247, -2.519951327113426, -4.341348988610527, 0.557772429359965, -1.671267412948494, 0.733951350960387, 0.409263788034864, 3.566033071952806, 1.882565173848352, -1.106017073793287, 0.554456720778718, -2.513205795512153, 0.310978660939421, 0.579706500111723, 0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345,
1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834, 0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723, 0.640249919627884, 1.103122489464969, 2.231779881455556, -1.308035392685241, 0.424070304330106, -0.200383932651189, -2.365526783356541, -0.989114757436628, 2.770807688959777, -0.444172737462307, 0.079760979374078, -0.005199118412183, -0.664712668309527, -0.624171857561896, 0.537306979007338, -2.575955675497642,
1.562363235756780, 1.814069369848895, -1.293428583392509, -1.026188449495686, -2.981771815588717, -4.223468103075124, 2.672674782004045, -0.856096801117735, 0.048517345512563, -0.026860721136225, 0.392932277758187, -1.331740855093099, -1.894292129477081, -1.425006468460681, -2.721772427617057, -1.616831100216806, 3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287, 0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416385105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645,
-0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.505906778385130, 0.048366940168201, -0.545696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203, 2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193, -1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454,
1.025026795103179, 0.928841900171200, 2.930499509864950, 2.013349089766430, 2.381676148486737, -3.081062307950236, -0.389579115537544, 0.581540149166620, -2.601953341353208, 0.333435137781238, -2.812945856162965, 2.649109640172910, -1.003963025744654, 1.552460768755035, 0.088641345335247, -2.519951327113426, -4.341348988610527, 0.557772429359965, -1.671267412948494, 0.733951350960387, 0.409263788034864, 3.566033071952806, 1.882565173848352, -1.106017073793287, 0.554456720778718, -2.513205795512153, 0.310978660939421, 0.579706500111723, 0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345,
1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834, 0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723, 0.640249919627884, 1.103122489464969, 2.231779881455556, -1.308035392685241, 0.424070304330106, -0.200383932651189, -2.365526783356541, -0.989114757436628, 2.770807688959777, -0.444172737462307, 0.079760979374078, -0.005199118412183, -0.664712668309527, -0.624171857561896, 0.537306979007338, -2.575955675497642,
1.562363235756780, 1.814069369848895, -1.293428583392509, -1.026188449495686, -2.981771815588717, -4.223468103075124, 2.672674782004045, -0.856096801117735, 0.048517345512563, -0.026860721136225, 0.392932277758187, -1.331740855093099, -1.894292129477081, -1.425006468460681, -2.721772427617057, -1.616831100216806, 3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287, 0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416385105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645,
-0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.505906778385130, 0.048366940168201, -0.545696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203, 2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193, -1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454,
1.025026795103179, 0.928841900171200, 2.930499509864950, 2.013349089766430, 2.381676148486737, -3.081062307950236, -0.389579115537544, 0.581540149166620, -2.601953341353208, 0.333435137781238, -2.812945856162965, 2.649109640172910, -1.003963025744654, 1.552460768755035, 0.088641345335247, -2.519951327113426, -4.341348988610527, 0.557772429359965, -1.671267412948494, 0.733951350960387, 0.409263788034864, 3.566033071952806, 1.882565173848352, -1.106017073793287, 0.554456720778718, -2.513205795512153, 0.310978660939421, 0.579706500111723, 0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345,
1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834, 0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723, 0.640249919627884, 1.103122489464969, 2.231779881455556, -1.308035392685241, 0.424070304330106, -0.200383932651189, -2.365526783356541, -0.989114757436628, 2.770807688959777, -0.444172737462307, 0.079760979374078, -0.005199118412183, -0.664712668309527, -0.624171857561896, 0.537306979007338, -2.575955675497642,
1.562363235756780, 1.814069369848895, -1.293428583392509, -1.026188449495686, -2.981771815588717, -4.223468103075124, 2.672674782004045, -0.856096801117735, 0.048517345512563, -0.026860721136225, 0.392932277758187, -1.331740855093099, -1.894292129477081, -1.425006468460681, -2.721772427617057, -1.616831100216806, 3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287, 0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416385105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645,
-0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.505906778385130, 0.048366940168201, -0.545696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203, 2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193, -1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454,
1.025026795103179, 0.928841900171200, 2.930499509864950, 2.013349089766430, 2.381676148486737, -3.081062307950236, -0.389579115537544, 0.581540149166620, -2.601953341353208, 0.333435137781238, -2.812945856162965, 2.649109640172910, -1.003963025744654, 1.552460768755035, 0.088641345335247, -2.519951327113426, -4.341348988610527, 0.557772429359965, -1.671267412948494, 0.733951350960387, 0.409263788034864, 3.566033071952806, 1.882565173848352, -1.106017073793287, 0.554456720778718, -2.513205795512153, 0.310978660939421, 0.579706500111723, 0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345,
1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834, 0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723, 0.640249919627884, 1.103122489464969, 2.231779881455556, -1.308035392685241, 0.424070304330106, -0.200383932651189, -2.365526783356541, -0.989114757436628, 2.770807688959777, -0.444172737462307, 0.079760979374078, -0.005199118412183, -0.664712668309527, -0.624171857561896, 0.537306979007338, -2.575955675497642,
1.562363235756780, 1.814069369848895, -1.293428583392509, -1.026188449495686, -2.981771815588717, -4.223468103075124, 2.672674782004045, -0.856096801117735, 0.048517345512563, -0.026860721136225, 0.392932277758187, -1.331740855093099, -1.894292129477081, -1.425006468460681, -2.721772427617057, -1.616831100216806, 3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287, 0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416385105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645,
-0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.505906778385130, 0.048366940168201, -0.545696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203, 2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193, -1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454,
1.025026795103179, 0.928841900171200, 2.930499509864950, 2.013349089766430, 2.381676148486737, -3.081062307950236, -0.389579115537544, 0.581540149166620, -2.601953341353208, 0.333435137781238, -2.812945856162965, 2.649109640172910, -1.003963025744654, 1.552460768755035, 0.088641345335247, -2.519951327113426, -4.341348988610527, 0.557772429359965, -1.671267412948494, 0.733951350960387, 0.409263788034864, 3.566033071952806, 1.882565173848352, -1.106017073793287, 0.554456720778718, -2.513205795512153, 0.310978660939421, 0.579706500111723, 0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345,
1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834, 0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723, 0.640249919627884, 1.103122489464969, 2.231779881455556, -1.308035392685241, 0.424070304330106, -0.200383932651189, -2.365526783356541, -0.989114757436628, 2.770807688959777, -0.444172737462307, 0.079760979374078, -0.005199118412183, -0.664712668309527, -0.624171857561896, 0.537306979007338, -2.575955675497642,
1.562363235756780, 1.814069369848895, -1.293428583392509, -1.026188449495686, -2.981771815588717, -4.223468103075124, 2.672674782004045, -0.856096801117735, 0.048517345512563, -0.026860721136225, 0.392932277758187, -1.331740855093099, -1.894292129477081, -1.425006468460681, -2.721772427617057, -1.616831100216806, 3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287, 0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416385105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645,
-0.865129623056441, -2.655020678073846, 0.600664612949661, 0.080378093886515, -2.899160484012034, 2.563004262857762, 3.078328403304206, 0.505906778385130, 0.048366940168201, -0.545696461188734, -0.023417155362879, 2.127729174988954, -1.176633086028377, 3.690223557991855, -0.622791766173194, 0.722837373872203, 2.739754205367484, -0.062610410524552, -0.891296810967338, -1.845872258871811, 1.195039415434387, -2.177388969045026, 1.078649103637905, 2.570976050490193, -1.383551403404574, 2.392141424058873, 2.858002843205065, -3.682433899725536, -3.488146646451150, 1.323468578888120, -0.099771155430726, 1.561168082500454,
1.025026795103179, 0.928841900171200, 2.930499509864950, 2.013349089766430, 2.381676148486737, -3.081062307950236, -0.389579115537544, 0.581540149166620, -2.601953341353208, 0.333435137781238, -2.812945856162965, 2.649109640172910, -1.003963025744654, 1.552460768755035, 0.088641345335247, -2.519951327113426, -4.341348988610527, 0.557772429359965, -1.671267412948494, 0.733951350960387, 0.409263788034864, 3.566033071952806, 1.882565173848352, -1.106017073793287, 0.554456720778718, -2.513205795512153, 0.310978660939421, 0.579706500111723, 0.000086383683251, -1.311866980897721, 1.840007477574986, -3.253005768451345,
1.462584328739432, 1.610103610851738, 0.761914676858907, 0.974541361089834, 0.686845845885983, 1.849153122025191, 0.787800410401453, -1.187438909666279, -0.754937911044720, 0.084373858395232, -2.600269011710521, -0.962982842142644, -0.369328108540868, 0.810791418361879, 3.587016488699641, -0.520776145083723, 0.640249919627884, 1.103122489464969, 2.231779881455556, -1.308035392685241, 0.424070304330106, -0.200383932651189, -2.365526783356541, -0.989114757436628, 2.770807688959777, -0.444172737462307, 0.079760979374078, -0.005199118412183, -0.664712668309527, -0.624171857561896, 0.537306979007338, -2.575955675497642, 1.562363235756780, 1.814069369848895, -1.293428583392509, -1.026188449495686, -2.981771815588717, -4.223468103075124, 2.672674782004045, -0.856096801117735, 0.048517345512563, -0.026860721136225, 0.392932277758187, -1.331740855093099, -1.894292129477081, -1.425006468460681, -2.721772427617057, -1.616831100216806, 3.551177651488947, -0.069685667896087, -3.134634907409102, -0.263627598944639, -1.650469945991350, -2.203580339374399, -0.872203246123242, 1.230782812607287, 0.257288860093291, 1.989083106173137, -1.985638729453261, -1.416385105842892, -1.131097688325772, -2.245130805416057, -1.938873996219074, 2.043608361562645,
};
const float32_t b[samplenum] = { };
float32_t a1, b1;
float32_t SubOutMSE, SquareOutMSE, SubOutST, SquareOutST;
int h=0; // 321 h = hr, m = min, for interval
int m=0;
int i=h;
int j=m;
//SPI_TFT_ILI9341 TFT(D11, D12, D13, D10, D8, D9, "TFT"); // mosi, miso, sclk, cs, reset, dc
SPI_TFT_ILI9341 TFT(PC_3, PC_2, PB_10, PB_12, PA_8, PA_11, "TFT"); // mosi, miso, sclk, cs, reset, dc
SDFileSystem sd(PB_5, PB_4, PB_3, PC_11, "sd"); // mosi, miso, sclk, cs
DigitalOut skywire_en(PA_6);
//DigitalOut skywire_rts(PA_7);
Serial skywire(PA_0,PA_1);
volatile int rx_in=0;
volatile int rx_out=0;
const int buffer_size = 255;
char rx_buffer[buffer_size+1];
char rx_line[buffer_size];
void read_line()
{
int i;
i = 0;
// Start Critical Section - don't interrupt while changing global buffer variables
__disable_irq();
// Loop reading rx buffer characters until end of line character
while ((i==0) || ((rx_line[i-1] != '\r') && (rx_line[i-1] != '\n'))) {
// Wait if buffer empty
if (rx_in == rx_out) {
// End Critical Section - need to allow rx interrupt to get new characters for buffer
__enable_irq();
while (rx_in == rx_out) {
}
// Start Critical Section - don't interrupt while changing global buffer variables
__disable_irq();
}
rx_line[i] = rx_buffer[rx_out];
i++;
rx_out = (rx_out + 1) % buffer_size;
}
// End Critical Section
__enable_irq();
rx_line[i-1] = 0;
return;
}
int WaitForResponse(char* response)
{
do {
do {
read_line();
} while ((unsigned char)rx_line[0] <= 32);
// debug_pc.printf("Waiting for: %s, Received: %s\r\n", response, rx_line);
} while (strncmp(rx_line, response, strlen(response)));
return 0;
}
void Skywire_Rx_interrupt()
{
// Loop just in case more than one character is in UART's receive FIFO buffer
// Stop if buffer full
while ((skywire.readable()) && (((rx_in + 1) % buffer_size) != rx_out)) {
rx_buffer[rx_in] = skywire.getc();
rx_in = (rx_in + 1) % buffer_size;
}
return;
}
int main()
{
int stage=0;
int menu=0;
int config=0;
int set=0;
int comp=0;
float32_t stmean=0;
float32_t stmse=0;
float32_t stst=0;
char log[10][32];
float32_t mselog[10] = {NULL};
set_time(1448935737); // Set RTC time to Dec 01 2015 02:09 AM
int pu, pd, ps; // LL left & right
TFT.claim(stdout); // send stdout to the TFT display
TFT.claim(stderr); // send stderr to the TFT display
TFT.set_orientation(2);
TFT.background(Black); // set background to black
TFT.foreground(White); // set chars to white
TFT.cls(); // clear the screen
while(1)
{
if (stage==0) { //menu
TFT.set_font((unsigned char*) Arial24x23);
TFT.locate(19,60);
TFT.foreground(White);
printf("Configuration");
TFT.locate(50,110);
TFT.printf("Waveform");
TFT.locate(95,160);
TFT.printf("Log");
// wait_LowPow(3); // Wait 3s in low power mode, seems just hold display
if (set==0) {
TFT.locate(70,260);
TFT.foreground(DarkGrey);
printf("START");
}
if (set==1) {
TFT.locate(70,260);
TFT.foreground(White);
printf("START");
TFT.set_font((unsigned char*) Arial12x12);
TFT.locate(30, 240);
printf("interval: %i hr %i min", h, m);
}
if (menu==0) { //Configuration
TFT.rect(13,55,225,85,Green);
TFT.rect(13,105,225,135,Black);
pu = ain1.read();
pd = ain2.read();
ps = ain3.read();
if (pd==1) { wait(0.3); menu=1; }
if (ps==1) { wait(0.3); TFT.cls(); stage=1; }
}
if (menu==1) { //waveform
TFT.rect(13,55,225,85,Black);
TFT.rect(13,105,225,135,Green);
TFT.rect(13,155,225,185,Black);
pu = ain1.read();
pd = ain2.read();
ps = ain3.read();
if (pu==1) { wait(0.3); menu=0; }
if (pd==1) { wait(0.3); menu=2; }
if (ps==1) { wait(0.3); TFT.cls(); stage=2; }
}
if (menu==2) { //log
TFT.rect(13,105,225,135,Black);
TFT.rect(13,155,225,185,Green);
TFT.rect(13,255,225,285,Black);
pu = ain1.read();
pd = ain2.read();
ps = ain3.read();
if (pu==1) { wait(0.3); menu=1; }
if ((pd==1)&&(set==1)) { wait(0.3); menu=3; }
if (ps==1) { wait(0.3); TFT.cls(); stage=3; }
}
if (menu==3) { //START
TFT.rect(13,155,225,185,Black);
TFT.rect(13,255,225,285,Green);
pu = ain1.read();
pd = ain2.read();
ps = ain3.read();
if (pu==1) { wait(0.3); menu=2; }
if (ps==1) { wait(0.3); TFT.cls(); stage=5; }
}
}
if (stage==1) { //Configuration
int ia, ib, ja, jb;
TFT.set_font((unsigned char*) Arial24x23);
TFT.locate(20,55);
TFT.foreground(White);
printf("SET PERIOD");
TFT.rect(15,50, 220,80,Red);
TFT.locate(70,120);
TFT.printf("Hr Min");
TFT.locate(10,200);
printf("Record Control");
TFT.set_font((unsigned char*) Arial12x12);
if (comp==1) {
TFT.locate(50,233);
printf("comparison saved");
}
TFT.set_font((unsigned char*) Arial12x12);
TFT.locate(40,300);
printf("Set");
TFT.locate(165,300);
printf("Return");
TFT.rect(22,115, 68,145,Olive);
TFT.rect(117,115,163,145,Olive);
TFT.rect(5,195, 230,225,Olive);
TFT.rect(15,295,85,315,Olive);
TFT.rect(150,295,220,315,Olive);
while (stage==1) {
ia=i-1; if (i==0) ia=23;
ib=i+1; if (i==23) ib=0;
ja=j-1; if (j==0) ja=59;
jb=j+1; if (j==59) jb=00;
TFT.set_font((unsigned char*) Arial24x23);
TFT.locate(26,120);
if (i<10) TFT.printf("0%i", i);
else if (i>=10) TFT.printf("%i", i);
TFT.locate(120,120);
if (j<10) TFT.printf("0%i", j);
else if (j>=10) TFT.printf("%i", j);
TFT.set_font((unsigned char*) Arial12x12);
TFT.locate(40,100);
if (ia<10) TFT.printf("0%i", ia);
else if (ia>=10) TFT.printf("%i", ia);
TFT.locate(40,150);
if (ib<10) TFT.printf("0%i", ib);
else if (ib>=10) TFT.printf("%i", ib);
TFT.locate(135,100);
if (ja<10) TFT.printf("0%i", ja);
else if (ja>=10) TFT.printf("%i", ja);
TFT.locate(135,150);
if (jb<10) TFT.printf("0%i", jb);
else if (jb>=10) TFT.printf("%i", jb);
if (config==0) { //hour
TFT.rect(22,115, 68,145,Green);
TFT.rect(117,115,163,145,Olive);
TFT.rect(5,195, 230,225,Olive);
pu = ain1.read();
pd = ain2.read();
ps = ain3.read();
if (pu==1) { wait(0.3); i=ib; }
if (pd==1) { wait(0.3); i=ia; }
if (ps==1) { wait(0.3); config=1; }
}
if (config==1) { //min
TFT.rect(22,115, 68,145,Olive);
TFT.rect(117,115,163,145,Green);
TFT.rect(5,195, 230,225,Olive);
pu = ain1.read();
pd = ain2.read();
ps = ain3.read();
if (pu==1) { wait(0.3); j=jb; }
if (pd==1) { wait(0.3); j=ja; }
if (ps==1) { wait(0.3); config=2; }
}
if (config==2) { //Record Control
TFT.rect(22,115, 68,145,Olive);
TFT.rect(117,115,163,145,Olive);
TFT.rect(5,195, 230,225,Green);
TFT.rect(15,295,85,315,Olive);
TFT.rect(150,295,220,315,Olive);
pu = ain1.read();
pd = ain2.read();
ps = ain3.read();
if (pu==1) { wait(0.3); config=0; }
if (pd==1) { wait(0.3); config=3; }
if (ps==1) { wait(0.3); TFT.cls(); stage=4; }
}
if (config==3) { //set
TFT.rect(5,195, 230,225,Olive);
TFT.rect(15,295,85,315,Green);
TFT.rect(150,295,220,315,Olive);
pu = ain1.read();
pd = ain2.read();
ps = ain3.read();
if (pu==1) { wait(0.3); config=2; }
if (pd==1) { wait(0.3); config=4; }
if (ps==1) { wait(0.3); TFT.cls();
if ((i!=0) || (j!=0))
{ h=i; m=j; set=1; }
stage=0;
}
}
if (config==4) { //return
TFT.rect(5,195, 230,225,Olive);
TFT.rect(15,295,85,315,Olive);
TFT.rect(150,295,220,315,Green);
pu = ain1.read();
pd = ain2.read();
ps = ain3.read();
if (pu==1) { wait(0.3); config=3; }
if (pd==1) { wait(0.3); config=4; }
if (ps==1) { wait(0.3); TFT.cls(); stage=0; }
}
}
}
if (stage==2) { //waveform
int abc, x2, y2;
int x1 = 0;
int y1 = 80;
for(abc=0; abc<samplenum; abc=abc+1) // waveform
{ a1 = a[abc];
x2 = abc*2;
y2 = 80+a1*10;
TFT.line(x1,y1,x2,y2,Green);
x1 = x2; y1 = y2;
}
TFT.set_font((unsigned char*) Arial12x12);
TFT.foreground(White);
TFT.locate(10,130);
TFT.printf("Samples number: \n %i", samplenum);
TFT.locate(10,160);
TFT.printf("Sample Mean Value: \n %f", stmean);
TFT.locate(10,190);
TFT.printf("Standard Deviation: \n %f", stst);
TFT.locate(10,220);
TFT.printf("Mean Square Error: \n %f", stmse);
TFT.locate(165,270);
printf("Return");
TFT.rect(150,265,220,285,Green);
ps = ain3.read();
if (ps==1) { wait(0.3); TFT.cls(); stage=0; }
}
if (stage==3) { //log
TFT.set_font((unsigned char*) Arial12x12);
TFT.locate(0,10);
TFT.foreground(White);
//Configure CRC, large frames, and write validation for SD Card
sd.crc(true);
sd.large_frames(true);
sd.write_validation(true);
//Try to mount the SD card
int row = 50;
int col = 10;
TFT.locate(10,row); TFT.printf("Mounting SD card..."); row+=10;
if (sd.mount() != 0) {
TFT.locate(10,row); TFT.printf("failed!"); row+=10;
} else {
TFT.locate(10,row); TFT.printf("mounted successfully"); row+=10;
// write event to log
TFT.locate(10,70);
FILE *fp = fopen("/sd/event_log.txt", "a");
if (fp != NULL) {
fprintf(fp, "eureka!\r\n");
fclose(fp);
TFT.locate(10,row); TFT.printf("success"); row+=10;
} else {
TFT.locate(10,row); TFT.printf("failed to write"); row+=10;
}
sd.unmount();
}
TFT.locate(10,row); TFT.printf("Configuring Skywire"); row+=10;
skywire.baud(115200);
skywire.attach(&Skywire_Rx_interrupt, Serial::RxIrq);
//Turn off echo
skywire.printf("ATE0\r\n");
WaitForResponse("OK");
TFT.locate(10,row); TFT.printf("Connecting to the Network"); row+=10;
// get IP address
skywire.printf("AT#SGACT=1,1\r\n"); // context activation (returns with IP address)
WaitForResponse("#SGACT");
WaitForResponse("OK");
TFT.locate(10,row); TFT.printf("Connected to the Network"); row+=10;
TFT.locate(165,270);
printf("Return");
TFT.rect(150,265,220,285,Green);
while(1)
{ ps = ain3.read();
if (ps==1) { wait(0.3); TFT.cls(); stage=0; break; }
}
}
if (stage==4) //recording... for comparison
{ TFT.set_font((unsigned char*) Arial24x23);
TFT.foreground(White);
TFT.locate(40, 240);
printf(" recording\n comparison...");
TFT.set_font((unsigned char*) Arial12x12);
//DFSDM CORE
pc.printf("\r\n\r\nEntering AudioRecord_demo()...\r\n");
RECORD(); // RECORD CONTROL 0
uint32_t n;
for(n=0;n<1024;n++)
{CONTROLPWR[n]=POWER[n];}
for(n=0;n<1024;n++)
{CONTROLPHS[n]=PHS[n];}
RECORD(); //RECORD CONTROL 1
MSE(); //MSE BETWEEN CONTROLS
CONTROLPWRMSE=PWRMSE;
CONTROLPHSMSE=PHSMSE;
//
TFT.cls();
comp=1;
menu=0;
config=2;
stage=1;
}
if (stage==5) //recording... with interval
{ int t = h*60+m;
int t1, abc;
float32_t sum, sum_mse, sum_st;
TFT.set_font((unsigned char*) Arial24x23);
TFT.locate(20,60);
TFT.foreground(DarkGrey);
printf("Configuration");
TFT.locate(50,110);
TFT.printf("Waveform");
TFT.locate(95,160);
TFT.printf("Log");
TFT.set_font((unsigned char*) Arial12x12);
TFT.foreground(White);
TFT.locate(30, 240);
printf("recording, are you sure?");
TFT.set_font((unsigned char*) Arial24x23);
TFT.locate(35,260);
printf(" STOP ");
TFT.rect(13,255,225,285,Green);
while (stage==5)
{ sum=0; sum_mse=0; sum_st=0;
RECORD();
MSE();
COMPARE();
for(abc=0; abc<samplenum; abc++)
{ a1 = a[abc]; b1 = b[abc]; sum = sum+a[abc];
arm_sub_f32(&a1, &stmean, &SubOutST, 1);
arm_mult_f32(&SubOutST, &SubOutST, &SquareOutST, 1);
sum_st = sum_st+SquareOutST;
arm_sub_f32(&a1, &b1, &SubOutMSE, 1);
arm_mult_f32(&SubOutMSE, &SubOutMSE, &SquareOutMSE, 1);
sum_mse = sum_mse+SquareOutMSE;
}
stmean = sum/samplenum;
stst = sqrt(sum_st/samplenum);
stmse = sum_mse/samplenum;
// if (stmse>0) // if error, send to user, and store MSE to log
// { if (mselog[0]==NULL)
// { time_t seconds = time(NULL);
// strftime(log[0], 32, "%b %d %Y %I:%M %p\n", localtime(&seconds));
// mselog[0] = stmse;
// }
// }
for ( t1=0; t1<t; t1++)
{ ps = ain3.read();
if (ps==1) { wait(0.3); TFT.cls(); stage=0; }
else { wait(1); }
}
}
}
}
}