Senior Design: Sound Monitor / 4951

Dependencies:   LCD_fonts SPI_TFT_ILI9341 CMSIS_DSP_401_without_cm4 mbed-src SDFileSystem wavfile

Committer:
linx0576
Date:
Sun Dec 13 16:11:44 2015 +0000
Revision:
8:057ff6060e39
Parent:
7:09354ea16403
Child:
9:5a860b9c8a6a
stop

Who changed what in which revision?

UserRevisionLine numberNew contents of line
linx0576 0:52568bab75f8 1 #include <math.h>
linx0576 0:52568bab75f8 2 #include "stdio.h"
linx0576 0:52568bab75f8 3 #include "mbed.h"
linx0576 0:52568bab75f8 4 #include "SPI_TFT_ILI9341.h"
linx0576 0:52568bab75f8 5 #include "string"
linx0576 0:52568bab75f8 6 #include "Arial12x12.h"
linx0576 0:52568bab75f8 7 #include "Arial24x23.h"
linx0576 0:52568bab75f8 8 #include "arm_math.h"
zsaiyed 4:e1ec41710eb4 9 #include "SDFileSystem.h"
linx0576 6:005ff6a49217 10 //#include "main.h"
linx0576 8:057ff6060e39 11 #define samplenum 1024
linx0576 6:005ff6a49217 12
linx0576 3:7edb43f86069 13 DigitalIn ain1(PC_9);
linx0576 3:7edb43f86069 14 DigitalIn ain2(PB_15);
linx0576 3:7edb43f86069 15 DigitalIn ain3(PC_7);
linx0576 3:7edb43f86069 16 DigitalIn ain4(PC_6);
linx0576 3:7edb43f86069 17 DigitalIn ain5(PC_8);
linx0576 6:005ff6a49217 18
linx0576 0:52568bab75f8 19 uint32_t ifftFlag = 0;
linx0576 0:52568bab75f8 20 uint32_t doBitReverse = 1;
linx0576 0:52568bab75f8 21
linx0576 0:52568bab75f8 22 /* Reference index at which max energy of bin ocuurs */
linx0576 0:52568bab75f8 23 uint32_t refIndex = 213, testIndex = 0;
linx0576 8:057ff6060e39 24
linx0576 8:057ff6060e39 25 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,
linx0576 8:057ff6060e39 26 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,
linx0576 8:057ff6060e39 27 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,
linx0576 8:057ff6060e39 28 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,
linx0576 8:057ff6060e39 29 -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,
linx0576 8:057ff6060e39 30 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,
linx0576 8:057ff6060e39 31 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,
linx0576 8:057ff6060e39 32 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,
linx0576 8:057ff6060e39 33 -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,
linx0576 8:057ff6060e39 34 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,
linx0576 8:057ff6060e39 35 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,
linx0576 8:057ff6060e39 36 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,
linx0576 8:057ff6060e39 37 -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,
linx0576 8:057ff6060e39 38 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,
linx0576 8:057ff6060e39 39 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,
linx0576 8:057ff6060e39 40 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,
linx0576 8:057ff6060e39 41 -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,
linx0576 8:057ff6060e39 42 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,
linx0576 8:057ff6060e39 43 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,
linx0576 8:057ff6060e39 44 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,
linx0576 8:057ff6060e39 45 -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,
linx0576 8:057ff6060e39 46 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,
linx0576 8:057ff6060e39 47 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,
linx0576 8:057ff6060e39 48 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,
linx0576 8:057ff6060e39 49 -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,
linx0576 8:057ff6060e39 50 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,
linx0576 8:057ff6060e39 51 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,
linx0576 8:057ff6060e39 52 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,
linx0576 8:057ff6060e39 53 -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,
linx0576 8:057ff6060e39 54 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,
linx0576 8:057ff6060e39 55 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,
linx0576 0:52568bab75f8 56 };
linx0576 8:057ff6060e39 57 const float32_t b[samplenum] = { };
linx0576 6:005ff6a49217 58 float32_t a1, b1;
linx0576 6:005ff6a49217 59 float32_t SubOutMSE, SquareOutMSE, SubOutST, SquareOutST;
linx0576 6:005ff6a49217 60 int h=0; // 321 h = hr, m = min, for interval
linx0576 6:005ff6a49217 61 int m=0;
linx0576 6:005ff6a49217 62 int i=h;
linx0576 6:005ff6a49217 63 int j=m;
linx0576 6:005ff6a49217 64
linx0576 2:afdb1aaa7608 65 //SPI_TFT_ILI9341 TFT(D11, D12, D13, D10, D8, D9, "TFT"); // mosi, miso, sclk, cs, reset, dc
linx0576 2:afdb1aaa7608 66 SPI_TFT_ILI9341 TFT(PC_3, PC_2, PB_10, PB_12, PA_8, PA_11, "TFT"); // mosi, miso, sclk, cs, reset, dc
zsaiyed 4:e1ec41710eb4 67 SDFileSystem sd(PB_5, PB_4, PB_3, PC_11, "sd"); // mosi, miso, sclk, cs
linx0576 7:09354ea16403 68
linx0576 7:09354ea16403 69 DigitalOut skywire_en(PA_6);
linx0576 7:09354ea16403 70 //DigitalOut skywire_rts(PA_7);
linx0576 7:09354ea16403 71 Serial skywire(PA_0,PA_1);
linx0576 7:09354ea16403 72
linx0576 7:09354ea16403 73 volatile int rx_in=0;
linx0576 7:09354ea16403 74 volatile int rx_out=0;
linx0576 7:09354ea16403 75 const int buffer_size = 255;
linx0576 7:09354ea16403 76 char rx_buffer[buffer_size+1];
linx0576 7:09354ea16403 77 char rx_line[buffer_size];
linx0576 7:09354ea16403 78
linx0576 7:09354ea16403 79 void read_line()
linx0576 7:09354ea16403 80 {
linx0576 7:09354ea16403 81 int i;
linx0576 7:09354ea16403 82 i = 0;
linx0576 7:09354ea16403 83 // Start Critical Section - don't interrupt while changing global buffer variables
linx0576 7:09354ea16403 84 __disable_irq();
linx0576 7:09354ea16403 85 // Loop reading rx buffer characters until end of line character
linx0576 7:09354ea16403 86 while ((i==0) || ((rx_line[i-1] != '\r') && (rx_line[i-1] != '\n'))) {
linx0576 7:09354ea16403 87 // Wait if buffer empty
linx0576 7:09354ea16403 88 if (rx_in == rx_out) {
linx0576 7:09354ea16403 89 // End Critical Section - need to allow rx interrupt to get new characters for buffer
linx0576 7:09354ea16403 90 __enable_irq();
linx0576 7:09354ea16403 91 while (rx_in == rx_out) {
linx0576 7:09354ea16403 92 }
linx0576 7:09354ea16403 93 // Start Critical Section - don't interrupt while changing global buffer variables
linx0576 7:09354ea16403 94 __disable_irq();
linx0576 7:09354ea16403 95 }
linx0576 7:09354ea16403 96 rx_line[i] = rx_buffer[rx_out];
linx0576 7:09354ea16403 97 i++;
linx0576 7:09354ea16403 98 rx_out = (rx_out + 1) % buffer_size;
linx0576 7:09354ea16403 99 }
linx0576 7:09354ea16403 100 // End Critical Section
linx0576 7:09354ea16403 101 __enable_irq();
linx0576 7:09354ea16403 102 rx_line[i-1] = 0;
linx0576 7:09354ea16403 103 return;
linx0576 7:09354ea16403 104 }
linx0576 7:09354ea16403 105
linx0576 7:09354ea16403 106 int WaitForResponse(char* response)
linx0576 7:09354ea16403 107 {
linx0576 7:09354ea16403 108 do {
linx0576 7:09354ea16403 109 do {
linx0576 7:09354ea16403 110 read_line();
linx0576 7:09354ea16403 111 } while ((unsigned char)rx_line[0] <= 32);
linx0576 7:09354ea16403 112 // debug_pc.printf("Waiting for: %s, Received: %s\r\n", response, rx_line);
linx0576 7:09354ea16403 113 } while (strncmp(rx_line, response, strlen(response)));
linx0576 7:09354ea16403 114 return 0;
linx0576 7:09354ea16403 115 }
linx0576 7:09354ea16403 116
linx0576 7:09354ea16403 117 void Skywire_Rx_interrupt()
linx0576 7:09354ea16403 118 {
linx0576 7:09354ea16403 119 // Loop just in case more than one character is in UART's receive FIFO buffer
linx0576 7:09354ea16403 120 // Stop if buffer full
linx0576 7:09354ea16403 121 while ((skywire.readable()) && (((rx_in + 1) % buffer_size) != rx_out)) {
linx0576 7:09354ea16403 122 rx_buffer[rx_in] = skywire.getc();
linx0576 7:09354ea16403 123 rx_in = (rx_in + 1) % buffer_size;
linx0576 7:09354ea16403 124 }
linx0576 7:09354ea16403 125 return;
linx0576 7:09354ea16403 126 }
linx0576 7:09354ea16403 127
linx0576 0:52568bab75f8 128 int main()
linx0576 8:057ff6060e39 129 {
linx0576 6:005ff6a49217 130 int stage=0;
linx0576 6:005ff6a49217 131 int menu=0;
linx0576 6:005ff6a49217 132 int config=0;
linx0576 6:005ff6a49217 133 int set=0;
linx0576 6:005ff6a49217 134 int comp=0;
linx0576 6:005ff6a49217 135 float32_t stmean=0;
linx0576 6:005ff6a49217 136 float32_t stmse=0;
linx0576 6:005ff6a49217 137 float32_t stst=0;
linx0576 6:005ff6a49217 138 char log[10][32];
linx0576 6:005ff6a49217 139 float32_t mselog[10] = {NULL};
linx0576 6:005ff6a49217 140 set_time(1448935737); // Set RTC time to Dec 01 2015 02:09 AM
linx0576 6:005ff6a49217 141 int pu, pd, ps; // LL left & right
linx0576 6:005ff6a49217 142 TFT.claim(stdout); // send stdout to the TFT display
linx0576 6:005ff6a49217 143 TFT.claim(stderr); // send stderr to the TFT display
linx0576 6:005ff6a49217 144 TFT.set_orientation(2);
linx0576 6:005ff6a49217 145 TFT.background(Black); // set background to black
linx0576 6:005ff6a49217 146 TFT.foreground(White); // set chars to white
linx0576 6:005ff6a49217 147 TFT.cls(); // clear the screen
linx0576 3:7edb43f86069 148
linx0576 3:7edb43f86069 149
linx0576 1:f1f3dfff9107 150 while(1)
linx0576 6:005ff6a49217 151 {
linx0576 6:005ff6a49217 152 if (stage==0) { //menu
linx0576 1:f1f3dfff9107 153 TFT.set_font((unsigned char*) Arial24x23);
linx0576 6:005ff6a49217 154 TFT.locate(19,60);
linx0576 6:005ff6a49217 155 TFT.foreground(White);
linx0576 6:005ff6a49217 156 printf("Configuration");
linx0576 6:005ff6a49217 157 TFT.locate(50,110);
linx0576 6:005ff6a49217 158 TFT.printf("Waveform");
linx0576 6:005ff6a49217 159 TFT.locate(95,160);
linx0576 6:005ff6a49217 160 TFT.printf("Log");
linx0576 6:005ff6a49217 161 // wait_LowPow(3); // Wait 3s in low power mode, seems just hold display
linx0576 6:005ff6a49217 162 if (set==0) {
linx0576 6:005ff6a49217 163 TFT.locate(70,260);
linx0576 6:005ff6a49217 164 TFT.foreground(DarkGrey);
linx0576 6:005ff6a49217 165 printf("START");
linx0576 6:005ff6a49217 166 }
linx0576 6:005ff6a49217 167 if (set==1) {
linx0576 6:005ff6a49217 168 TFT.locate(70,260);
linx0576 6:005ff6a49217 169 TFT.foreground(White);
linx0576 6:005ff6a49217 170 printf("START");
linx0576 1:f1f3dfff9107 171 TFT.set_font((unsigned char*) Arial12x12);
linx0576 6:005ff6a49217 172 TFT.locate(30, 240);
linx0576 6:005ff6a49217 173 printf("interval: %i hr %i min", h, m);
linx0576 6:005ff6a49217 174 }
linx0576 6:005ff6a49217 175
linx0576 6:005ff6a49217 176 if (menu==0) { //Configuration
linx0576 6:005ff6a49217 177 TFT.rect(13,55,225,85,Green);
linx0576 6:005ff6a49217 178 TFT.rect(13,105,225,135,Black);
linx0576 6:005ff6a49217 179 pu = ain1.read();
linx0576 6:005ff6a49217 180 pd = ain2.read();
linx0576 6:005ff6a49217 181 ps = ain3.read();
linx0576 8:057ff6060e39 182 if (pd==1) { wait(0.5); menu=1; }
linx0576 8:057ff6060e39 183 if (ps==1) { wait(0.5); TFT.cls(); stage=1; }
linx0576 6:005ff6a49217 184 }
linx0576 6:005ff6a49217 185
linx0576 6:005ff6a49217 186 if (menu==1) { //waveform
linx0576 6:005ff6a49217 187 TFT.rect(13,55,225,85,Black);
linx0576 6:005ff6a49217 188 TFT.rect(13,105,225,135,Green);
linx0576 6:005ff6a49217 189 TFT.rect(13,155,225,185,Black);
linx0576 6:005ff6a49217 190 pu = ain1.read();
linx0576 6:005ff6a49217 191 pd = ain2.read();
linx0576 6:005ff6a49217 192 ps = ain3.read();
linx0576 8:057ff6060e39 193 if (pu==1) { wait(0.5); menu=0; }
linx0576 8:057ff6060e39 194 if (pd==1) { wait(0.5); menu=2; }
linx0576 8:057ff6060e39 195 if (ps==1) { wait(0.5); TFT.cls(); stage=2; }
linx0576 6:005ff6a49217 196 }
linx0576 6:005ff6a49217 197
linx0576 6:005ff6a49217 198 if (menu==2) { //log
linx0576 6:005ff6a49217 199 TFT.rect(13,105,225,135,Black);
linx0576 6:005ff6a49217 200 TFT.rect(13,155,225,185,Green);
linx0576 6:005ff6a49217 201 TFT.rect(13,255,225,285,Black);
linx0576 6:005ff6a49217 202 pu = ain1.read();
linx0576 6:005ff6a49217 203 pd = ain2.read();
linx0576 6:005ff6a49217 204 ps = ain3.read();
linx0576 8:057ff6060e39 205 if (pu==1) { wait(0.5); menu=1; }
linx0576 8:057ff6060e39 206 if ((pd==1)&&(set==1)) { wait(0.5); menu=3; }
linx0576 8:057ff6060e39 207 if (ps==1) { wait(0.5); TFT.cls(); stage=3; }
linx0576 6:005ff6a49217 208 }
linx0576 6:005ff6a49217 209
linx0576 6:005ff6a49217 210 if (menu==3) { //START
linx0576 6:005ff6a49217 211 TFT.rect(13,155,225,185,Black);
linx0576 6:005ff6a49217 212 TFT.rect(13,255,225,285,Green);
linx0576 6:005ff6a49217 213 pu = ain1.read();
linx0576 6:005ff6a49217 214 pd = ain2.read();
linx0576 6:005ff6a49217 215 ps = ain3.read();
linx0576 8:057ff6060e39 216 if (pu==1) { wait(0.5); menu=2; }
linx0576 8:057ff6060e39 217 if (ps==1) { wait(0.5); TFT.cls(); stage=5; }
linx0576 1:f1f3dfff9107 218 }
linx0576 1:f1f3dfff9107 219 }
linx0576 3:7edb43f86069 220
linx0576 6:005ff6a49217 221 if (stage==1) { //Configuration
linx0576 6:005ff6a49217 222 int ia, ib, ja, jb;
linx0576 6:005ff6a49217 223
linx0576 6:005ff6a49217 224 TFT.set_font((unsigned char*) Arial24x23);
linx0576 6:005ff6a49217 225 TFT.locate(20,55);
linx0576 6:005ff6a49217 226 TFT.foreground(White);
linx0576 6:005ff6a49217 227 printf("SET PERIOD");
linx0576 6:005ff6a49217 228 TFT.rect(15,50, 220,80,Red);
linx0576 6:005ff6a49217 229 TFT.locate(70,120);
linx0576 6:005ff6a49217 230 TFT.printf("Hr Min");
linx0576 6:005ff6a49217 231 TFT.locate(10,200);
linx0576 6:005ff6a49217 232 printf("Record Control");
linx0576 6:005ff6a49217 233 TFT.set_font((unsigned char*) Arial12x12);
linx0576 6:005ff6a49217 234 if (comp==1) {
linx0576 6:005ff6a49217 235 TFT.locate(50,233);
linx0576 6:005ff6a49217 236 printf("comparison saved");
linx0576 6:005ff6a49217 237 }
linx0576 6:005ff6a49217 238
linx0576 6:005ff6a49217 239 TFT.set_font((unsigned char*) Arial12x12);
linx0576 6:005ff6a49217 240 TFT.locate(40,300);
linx0576 6:005ff6a49217 241 printf("Set");
linx0576 6:005ff6a49217 242 TFT.locate(165,300);
linx0576 6:005ff6a49217 243 printf("Return");
linx0576 6:005ff6a49217 244 TFT.rect(22,115, 68,145,Olive);
linx0576 6:005ff6a49217 245 TFT.rect(117,115,163,145,Olive);
linx0576 6:005ff6a49217 246 TFT.rect(5,195, 230,225,Olive);
linx0576 6:005ff6a49217 247 TFT.rect(15,295,85,315,Olive);
linx0576 6:005ff6a49217 248 TFT.rect(150,295,220,315,Olive);
linx0576 6:005ff6a49217 249
linx0576 6:005ff6a49217 250 while (stage==1) {
linx0576 8:057ff6060e39 251 ia=i-1; if (i==0) ia=23;
linx0576 8:057ff6060e39 252 ib=i+1; if (i==23) ib=0;
linx0576 8:057ff6060e39 253 ja=j-1; if (j==0) ja=59;
linx0576 8:057ff6060e39 254 jb=j+1; if (j==59) jb=00;
linx0576 6:005ff6a49217 255
linx0576 6:005ff6a49217 256 TFT.set_font((unsigned char*) Arial24x23);
linx0576 6:005ff6a49217 257 TFT.locate(26,120);
linx0576 6:005ff6a49217 258 if (i<10) TFT.printf("0%i", i);
linx0576 6:005ff6a49217 259 else if (i>=10) TFT.printf("%i", i);
linx0576 6:005ff6a49217 260 TFT.locate(120,120);
linx0576 6:005ff6a49217 261 if (j<10) TFT.printf("0%i", j);
linx0576 6:005ff6a49217 262 else if (j>=10) TFT.printf("%i", j);
linx0576 6:005ff6a49217 263
linx0576 6:005ff6a49217 264 TFT.set_font((unsigned char*) Arial12x12);
linx0576 6:005ff6a49217 265 TFT.locate(40,100);
linx0576 6:005ff6a49217 266 if (ia<10) TFT.printf("0%i", ia);
linx0576 6:005ff6a49217 267 else if (ia>=10) TFT.printf("%i", ia);
linx0576 6:005ff6a49217 268 TFT.locate(40,150);
linx0576 6:005ff6a49217 269 if (ib<10) TFT.printf("0%i", ib);
linx0576 6:005ff6a49217 270 else if (ib>=10) TFT.printf("%i", ib);
linx0576 6:005ff6a49217 271 TFT.locate(135,100);
linx0576 6:005ff6a49217 272 if (ja<10) TFT.printf("0%i", ja);
linx0576 6:005ff6a49217 273 else if (ja>=10) TFT.printf("%i", ja);
linx0576 6:005ff6a49217 274 TFT.locate(135,150);
linx0576 6:005ff6a49217 275 if (jb<10) TFT.printf("0%i", jb);
linx0576 6:005ff6a49217 276 else if (jb>=10) TFT.printf("%i", jb);
linx0576 6:005ff6a49217 277
linx0576 6:005ff6a49217 278 if (config==0) { //hour
linx0576 6:005ff6a49217 279 TFT.rect(22,115, 68,145,Green);
linx0576 6:005ff6a49217 280 TFT.rect(117,115,163,145,Olive);
linx0576 6:005ff6a49217 281 TFT.rect(5,195, 230,225,Olive);
linx0576 6:005ff6a49217 282 pu = ain1.read();
linx0576 6:005ff6a49217 283 pd = ain2.read();
linx0576 6:005ff6a49217 284 ps = ain3.read();
linx0576 8:057ff6060e39 285 if (pu==1) { wait(0.5); i=ib; }
linx0576 8:057ff6060e39 286 if (pd==1) { wait(0.5); i=ia; }
linx0576 8:057ff6060e39 287 if (ps==1) { wait(0.5); config=1; }
linx0576 6:005ff6a49217 288 }
linx0576 6:005ff6a49217 289 if (config==1) { //min
linx0576 6:005ff6a49217 290 TFT.rect(22,115, 68,145,Olive);
linx0576 6:005ff6a49217 291 TFT.rect(117,115,163,145,Green);
linx0576 6:005ff6a49217 292 TFT.rect(5,195, 230,225,Olive);
linx0576 6:005ff6a49217 293 pu = ain1.read();
linx0576 6:005ff6a49217 294 pd = ain2.read();
linx0576 6:005ff6a49217 295 ps = ain3.read();
linx0576 8:057ff6060e39 296 if (pu==1) { wait(0.5); j=jb; }
linx0576 8:057ff6060e39 297 if (pd==1) { wait(0.5); j=ja; }
linx0576 8:057ff6060e39 298 if (ps==1) { wait(0.5); config=2; }
linx0576 6:005ff6a49217 299 }
linx0576 6:005ff6a49217 300 if (config==2) { //Record Control
linx0576 6:005ff6a49217 301 TFT.rect(22,115, 68,145,Olive);
linx0576 6:005ff6a49217 302 TFT.rect(117,115,163,145,Olive);
linx0576 6:005ff6a49217 303 TFT.rect(5,195, 230,225,Green);
linx0576 6:005ff6a49217 304 TFT.rect(15,295,85,315,Olive);
linx0576 6:005ff6a49217 305 TFT.rect(150,295,220,315,Olive);
linx0576 6:005ff6a49217 306 pu = ain1.read();
linx0576 6:005ff6a49217 307 pd = ain2.read();
linx0576 6:005ff6a49217 308 ps = ain3.read();
linx0576 8:057ff6060e39 309 if (pu==1) { wait(0.5); config=0; }
linx0576 8:057ff6060e39 310 if (pd==1) { wait(0.5); config=3; }
linx0576 8:057ff6060e39 311 if (ps==1) { wait(0.5); TFT.cls(); stage=4; }
linx0576 6:005ff6a49217 312 }
linx0576 6:005ff6a49217 313 if (config==3) { //set
linx0576 6:005ff6a49217 314 TFT.rect(5,195, 230,225,Olive);
linx0576 6:005ff6a49217 315 TFT.rect(15,295,85,315,Green);
linx0576 6:005ff6a49217 316 TFT.rect(150,295,220,315,Olive);
linx0576 6:005ff6a49217 317 pu = ain1.read();
linx0576 6:005ff6a49217 318 pd = ain2.read();
linx0576 6:005ff6a49217 319 ps = ain3.read();
linx0576 8:057ff6060e39 320 if (pu==1) { wait(0.5); config=2; }
linx0576 8:057ff6060e39 321 if (pd==1) { wait(0.5); config=4; }
linx0576 8:057ff6060e39 322 if (ps==1) { wait(0.5); TFT.cls();
linx0576 8:057ff6060e39 323 if ((i!=0) || (j!=0))
linx0576 8:057ff6060e39 324 { h=i; m=j; set=1; }
linx0576 6:005ff6a49217 325 stage=0;
linx0576 6:005ff6a49217 326 }
linx0576 6:005ff6a49217 327 }
linx0576 6:005ff6a49217 328 if (config==4) { //return
linx0576 6:005ff6a49217 329 TFT.rect(5,195, 230,225,Olive);
linx0576 6:005ff6a49217 330 TFT.rect(15,295,85,315,Olive);
linx0576 6:005ff6a49217 331 TFT.rect(150,295,220,315,Green);
linx0576 6:005ff6a49217 332 pu = ain1.read();
linx0576 6:005ff6a49217 333 pd = ain2.read();
linx0576 6:005ff6a49217 334 ps = ain3.read();
linx0576 8:057ff6060e39 335 if (pu==1) { wait(0.5); config=3; }
linx0576 8:057ff6060e39 336 if (pd==1) { wait(0.5); config=4; }
linx0576 8:057ff6060e39 337 if (ps==1) { wait(0.5); TFT.cls(); stage=0; }
linx0576 6:005ff6a49217 338 }
linx0576 6:005ff6a49217 339 }
linx0576 6:005ff6a49217 340 }
linx0576 6:005ff6a49217 341
linx0576 6:005ff6a49217 342
linx0576 6:005ff6a49217 343 if (stage==2) { //waveform
linx0576 6:005ff6a49217 344 int abc, x2, y2;
linx0576 1:f1f3dfff9107 345 int x1 = 0;
linx0576 6:005ff6a49217 346 int y1 = 80;
linx0576 6:005ff6a49217 347
linx0576 8:057ff6060e39 348 for(abc=0; abc<samplenum; abc=abc+1) // waveform
linx0576 6:005ff6a49217 349 { a1 = a[abc];
linx0576 1:f1f3dfff9107 350 x2 = abc*2;
linx0576 1:f1f3dfff9107 351 y2 = 80+a1*10;
linx0576 1:f1f3dfff9107 352 TFT.line(x1,y1,x2,y2,Green);
linx0576 8:057ff6060e39 353 x1 = x2; y1 = y2;
linx0576 1:f1f3dfff9107 354 }
linx0576 6:005ff6a49217 355
linx0576 1:f1f3dfff9107 356 TFT.set_font((unsigned char*) Arial12x12);
linx0576 6:005ff6a49217 357 TFT.foreground(White);
linx0576 3:7edb43f86069 358 TFT.locate(10,130);
linx0576 6:005ff6a49217 359 TFT.printf("Samples number: \n %i", samplenum);
linx0576 3:7edb43f86069 360 TFT.locate(10,160);
linx0576 6:005ff6a49217 361 TFT.printf("Sample Mean Value: \n %f", stmean);
linx0576 1:f1f3dfff9107 362 TFT.locate(10,190);
linx0576 6:005ff6a49217 363 TFT.printf("Standard Deviation: \n %f", stst);
linx0576 3:7edb43f86069 364 TFT.locate(10,220);
linx0576 6:005ff6a49217 365 TFT.printf("Mean Square Error: \n %f", stmse);
linx0576 6:005ff6a49217 366
linx0576 1:f1f3dfff9107 367 TFT.locate(165,270);
linx0576 1:f1f3dfff9107 368 printf("Return");
linx0576 6:005ff6a49217 369 TFT.rect(150,265,220,285,Green);
linx0576 6:005ff6a49217 370 ps = ain3.read();
linx0576 8:057ff6060e39 371 if (ps==1) { wait(0.5); TFT.cls(); stage=0; }
linx0576 6:005ff6a49217 372 }
linx0576 6:005ff6a49217 373
linx0576 6:005ff6a49217 374 if (stage==3) { //log
linx0576 6:005ff6a49217 375 TFT.set_font((unsigned char*) Arial12x12);
linx0576 6:005ff6a49217 376 TFT.locate(0,10);
linx0576 6:005ff6a49217 377 TFT.foreground(White);
linx0576 7:09354ea16403 378
linx0576 7:09354ea16403 379
linx0576 7:09354ea16403 380 //Configure CRC, large frames, and write validation for SD Card
linx0576 7:09354ea16403 381 sd.crc(true);
linx0576 7:09354ea16403 382 sd.large_frames(true);
linx0576 7:09354ea16403 383 sd.write_validation(true);
linx0576 7:09354ea16403 384
linx0576 7:09354ea16403 385 //Try to mount the SD card
linx0576 7:09354ea16403 386 TFT.locate(10,50);
linx0576 7:09354ea16403 387 TFT.printf("Mounting SD card...");
linx0576 7:09354ea16403 388 TFT.locate(10,60);
linx0576 7:09354ea16403 389 int row = 50;
linx0576 7:09354ea16403 390 int col = 10;
linx0576 7:09354ea16403 391 TFT.locate(10,row); TFT.printf("Mounting SD card..."); row+=10;
linx0576 7:09354ea16403 392 if (sd.mount() != 0) {
linx0576 7:09354ea16403 393 TFT.printf("failed!");
linx0576 7:09354ea16403 394 TFT.locate(10,row); TFT.printf("failed!"); row+=10;
linx0576 7:09354ea16403 395 } else {
linx0576 7:09354ea16403 396 TFT.printf("mounted successfully!\r\n");
linx0576 7:09354ea16403 397 TFT.locate(10,row); TFT.printf("mounted successfully"); row+=10;
linx0576 7:09354ea16403 398
linx0576 7:09354ea16403 399 // write event to log
linx0576 7:09354ea16403 400 TFT.locate(10,70);
linx0576 7:09354ea16403 401 FILE *fp = fopen("/sd/event_log.txt", "a");
linx0576 7:09354ea16403 402 if (fp != NULL) {
linx0576 7:09354ea16403 403 fprintf(fp, "eureka!\r\n");
linx0576 7:09354ea16403 404 fclose(fp);
linx0576 7:09354ea16403 405 TFT.printf("success!\n");
linx0576 7:09354ea16403 406 TFT.locate(10,row); TFT.printf("success"); row+=10;
linx0576 7:09354ea16403 407 } else {
linx0576 7:09354ea16403 408 TFT.printf("failed!\n");
linx0576 7:09354ea16403 409 TFT.locate(10,row); TFT.printf("failed to write"); row+=10;
linx0576 6:005ff6a49217 410 }
linx0576 7:09354ea16403 411 sd.unmount();
linx0576 6:005ff6a49217 412 }
linx0576 7:09354ea16403 413
linx0576 7:09354ea16403 414 TFT.locate(10,row); TFT.printf("Configuring Skywire"); row+=10;
linx0576 7:09354ea16403 415 skywire.baud(115200);
linx0576 7:09354ea16403 416 skywire.attach(&Skywire_Rx_interrupt, Serial::RxIrq);
linx0576 7:09354ea16403 417
linx0576 7:09354ea16403 418 //Turn off echo
linx0576 7:09354ea16403 419 skywire.printf("ATE0\r\n");
linx0576 7:09354ea16403 420 WaitForResponse("OK");
linx0576 7:09354ea16403 421 TFT.locate(10,row); TFT.printf("Connecting to the Network"); row+=10;
linx0576 7:09354ea16403 422 // get IP address
linx0576 7:09354ea16403 423 skywire.printf("AT#SGACT=1,1\r\n"); // context activation (returns with IP address)
linx0576 7:09354ea16403 424 WaitForResponse("#SGACT");
linx0576 7:09354ea16403 425 WaitForResponse("OK");
linx0576 7:09354ea16403 426
linx0576 6:005ff6a49217 427 TFT.locate(165,270);
linx0576 6:005ff6a49217 428 printf("Return");
linx0576 6:005ff6a49217 429 TFT.rect(150,265,220,285,Green);
linx0576 7:09354ea16403 430
linx0576 6:005ff6a49217 431 ps = ain3.read();
linx0576 8:057ff6060e39 432 if (ps==1) { wait(0.5); TFT.cls(); stage=0; }
linx0576 1:f1f3dfff9107 433 }
linx0576 1:f1f3dfff9107 434
linx0576 8:057ff6060e39 435 if (stage==4) //recording... for comparison
linx0576 8:057ff6060e39 436 { TFT.set_font((unsigned char*) Arial24x23);
linx0576 6:005ff6a49217 437 TFT.foreground(White);
linx0576 6:005ff6a49217 438 TFT.locate(40, 240);
linx0576 6:005ff6a49217 439 printf(" recording\n comparison...");
zsaiyed 4:e1ec41710eb4 440
linx0576 8:057ff6060e39 441 // RECORD(); // RECORD CONTROL 0
linx0576 6:005ff6a49217 442 // uint32_t n;
linx0576 6:005ff6a49217 443 // for(n=0;n<1024;n++)
linx0576 6:005ff6a49217 444 // { CONTROLPWR[n]=POWER[n]; }
linx0576 6:005ff6a49217 445 // for(n=0;n<1024;n++)
linx0576 6:005ff6a49217 446 // { CONTROLPHS[n]=PHS[n]; }
linx0576 6:005ff6a49217 447
linx0576 8:057ff6060e39 448 // RECORD(); //RECORD CONTROL 1
linx0576 6:005ff6a49217 449 // MSE(); //MSE BETWEEN CONTROLS
linx0576 6:005ff6a49217 450 // CONTROLPWRMSE=PWRMSE;
linx0576 6:005ff6a49217 451 // CONTROLPHSMSE=PHSMSE;
linx0576 6:005ff6a49217 452
linx0576 6:005ff6a49217 453 TFT.cls();
linx0576 6:005ff6a49217 454 comp=1;
linx0576 6:005ff6a49217 455 menu=0;
linx0576 6:005ff6a49217 456 config=2;
linx0576 6:005ff6a49217 457 stage=1;
linx0576 6:005ff6a49217 458 }
linx0576 6:005ff6a49217 459
linx0576 8:057ff6060e39 460 if (stage==5) //recording... with interval
linx0576 8:057ff6060e39 461 { int t = h*60+m;
linx0576 8:057ff6060e39 462 int t1, abc;
linx0576 8:057ff6060e39 463 float32_t sum, sum_mse, sum_st;
linx0576 6:005ff6a49217 464 TFT.set_font((unsigned char*) Arial24x23);
linx0576 6:005ff6a49217 465 TFT.locate(20,60);
linx0576 6:005ff6a49217 466 TFT.foreground(DarkGrey);
linx0576 6:005ff6a49217 467 printf("Configuration");
linx0576 6:005ff6a49217 468 TFT.locate(50,110);
linx0576 6:005ff6a49217 469 TFT.printf("Waveform");
linx0576 6:005ff6a49217 470 TFT.locate(95,160);
linx0576 6:005ff6a49217 471 TFT.printf("Log");
linx0576 6:005ff6a49217 472 TFT.set_font((unsigned char*) Arial12x12);
linx0576 6:005ff6a49217 473 TFT.foreground(White);
linx0576 6:005ff6a49217 474 TFT.locate(30, 240);
linx0576 6:005ff6a49217 475 printf("recording, are you sure?");
linx0576 6:005ff6a49217 476 TFT.set_font((unsigned char*) Arial24x23);
linx0576 6:005ff6a49217 477 TFT.locate(35,260);
linx0576 6:005ff6a49217 478 printf(" STOP ");
linx0576 6:005ff6a49217 479 TFT.rect(13,255,225,285,Green);
linx0576 6:005ff6a49217 480
linx0576 8:057ff6060e39 481 while (stage==5)
linx0576 8:057ff6060e39 482 { sum=0; sum_mse=0; sum_st=0;
linx0576 8:057ff6060e39 483
linx0576 6:005ff6a49217 484 // RECORD(); // microphone here, with interval
linx0576 6:005ff6a49217 485 // MSE();
linx0576 6:005ff6a49217 486 // COMPARE();
linx0576 8:057ff6060e39 487
linx0576 8:057ff6060e39 488 for(abc=0; abc<samplenum; abc++)
linx0576 8:057ff6060e39 489 { a1 = a[abc]; b1 = b[abc]; sum = sum+a[abc];
linx0576 6:005ff6a49217 490 arm_sub_f32(&a1, &stmean, &SubOutST, 1);
linx0576 6:005ff6a49217 491 arm_mult_f32(&SubOutST, &SubOutST, &SquareOutST, 1);
linx0576 6:005ff6a49217 492 sum_st = sum_st+SquareOutST;
linx0576 6:005ff6a49217 493 arm_sub_f32(&a1, &b1, &SubOutMSE, 1);
linx0576 6:005ff6a49217 494 arm_mult_f32(&SubOutMSE, &SubOutMSE, &SquareOutMSE, 1);
linx0576 6:005ff6a49217 495 sum_mse = sum_mse+SquareOutMSE;
zsaiyed 4:e1ec41710eb4 496 }
linx0576 6:005ff6a49217 497 stmean = sum/samplenum;
linx0576 6:005ff6a49217 498 stst = sqrt(sum_st/samplenum);
linx0576 8:057ff6060e39 499 stmse = sum_mse/samplenum;
linx0576 8:057ff6060e39 500
linx0576 8:057ff6060e39 501 // if (stmse>0) // if error, send to user, and store MSE to log
linx0576 8:057ff6060e39 502 // { if (mselog[0]==NULL)
linx0576 8:057ff6060e39 503 // { time_t seconds = time(NULL);
linx0576 8:057ff6060e39 504 // strftime(log[0], 32, "%b %d %Y %I:%M %p\n", localtime(&seconds));
linx0576 8:057ff6060e39 505 // mselog[0] = stmse;
linx0576 8:057ff6060e39 506 // }
linx0576 8:057ff6060e39 507 // }
linx0576 8:057ff6060e39 508
linx0576 8:057ff6060e39 509 for ( t1=0; t1<t; t1++)
linx0576 8:057ff6060e39 510 { ps = ain3.read();
linx0576 8:057ff6060e39 511 if (ps==1) { wait(0.5); TFT.cls(); stage=0; }
linx0576 8:057ff6060e39 512 else { wait(1); }
linx0576 6:005ff6a49217 513 }
linx0576 8:057ff6060e39 514 }
linx0576 6:005ff6a49217 515 }
linx0576 1:f1f3dfff9107 516 }
zsaiyed 5:2ee2c7546568 517 }
linx0576 6:005ff6a49217 518