for Danillo

Dependencies:   MBed_Adafruit-GPS-Library SDFileSystem mbed

Committer:
ncfronk
Date:
Tue Nov 18 08:50:58 2014 +0000
Revision:
1:f5770d9636b4
Child:
2:abcf77d0e77d
gps does not work concurrently with sampling;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ncfronk 1:f5770d9636b4 1 #include "mbed.h"
ncfronk 1:f5770d9636b4 2 #include "math.h"
ncfronk 1:f5770d9636b4 3
ncfronk 1:f5770d9636b4 4 #define SAMPLE_LENGTH 512
ncfronk 1:f5770d9636b4 5 #define NUM_TAPS 513
ncfronk 1:f5770d9636b4 6 #define CARRIER_FREQ 225
ncfronk 1:f5770d9636b4 7 #define TIME_CONST 0.00006
ncfronk 1:f5770d9636b4 8 #define PI 3.14159265
ncfronk 1:f5770d9636b4 9
ncfronk 1:f5770d9636b4 10 float firCoeffs[NUM_TAPS] = { -0.0192878684408550, -0.000565436854162197, -0.000574062372234321, -0.000581179079003090, -0.000589412242712984, -0.000596329290925752,
ncfronk 1:f5770d9636b4 11 -0.000604183313496965, -0.000610787449621752, -0.000618254890021300, -0.000624441235452662, -0.000631532852699149, -0.000637317640388987, -0.000644060044878972, -0.000649408145295391,
ncfronk 1:f5770d9636b4 12 -0.000655730318423711, -0.000660536584899437, -0.000666350155348239, -0.000670543670441799, -0.000675811138190482, -0.000679345019980268, -0.000684011485494165, -0.000686779420740873,
ncfronk 1:f5770d9636b4 13 -0.000690735948708760, -0.000692604062270113, -0.000695783521327534, -0.000696695831913496, -0.000699146857491809, -0.000699128468616956, -0.000700978318797988, -0.000700085972408138,
ncfronk 1:f5770d9636b4 14 -0.000701562144359961, -0.000699960260396518, -0.000701552559161197, -0.000699587125715329, -0.000702084347004260, -0.000699951609455988, -0.000704184938277025, -0.000700822488823546,
ncfronk 1:f5770d9636b4 15 -0.000707053158406025, -0.000689238102101884, -0.000675432749281130, -0.000692284271988876, -0.000679003259712778, -0.000679427972422059, -0.000670867964963519, -0.000668435478754011,
ncfronk 1:f5770d9636b4 16 -0.000660330946718933, -0.000656187894249034, -0.000647892827216824, -0.000642486260779654, -0.000633714444974831, -0.000627154674611770, -0.000617702529114801, -0.000610043338194475,
ncfronk 1:f5770d9636b4 17 -0.000599831070682668, -0.000591137773968283, -0.000580109977377959, -0.000570367122683910, -0.000558402454183533, -0.000547524082087984, -0.000534508605134922, -0.000522458425410067,
ncfronk 1:f5770d9636b4 18 -0.000508372396429405, -0.000495193607822494, -0.000480069347179249, -0.000465821362319299, -0.000449698934449484, -0.000434475552201623, -0.000417460223522498, -0.000401443504121743,
ncfronk 1:f5770d9636b4 19 -0.000383669251697455, -0.000366972910244881, -0.000348312520886679, -0.000330677260377738, -0.000310488418329100, -0.000291306404219105, -0.000268590084163264, -0.000247735016213375,
ncfronk 1:f5770d9636b4 20 -0.000223063752779904, -0.000208020109997019, -0.000182718834161682, -0.000158038013340163, -0.000135672987348502, -0.000110658422989979, -8.63859218366082e-05, -6.07302747179699e-05,
ncfronk 1:f5770d9636b4 21 -3.52380267488923e-05, -8.75000381957480e-06, 1.79220776252956e-05, 4.53634810869086e-05, 7.31488512081353e-05, 0.000101522460573350, 0.000130337162460535, 0.000159652043314615,
ncfronk 1:f5770d9636b4 22 0.000189518312913980, 0.000219864413943603, 0.000250843940298056, 0.000282270121591107, 0.000314346397337869, 0.000346811034408436, 0.000379918194843229, 0.000413368163653855,
ncfronk 1:f5770d9636b4 23 0.000447462473702899, 0.000481854744689647, 0.000516877376372632, 0.000552121769556217, 0.000587977722826699, 0.000623999763683269, 0.000660700340823140, 0.000697608811340494,
ncfronk 1:f5770d9636b4 24 0.000735367166639595, 0.000773394513145455, 0.000812374375990954, 0.000851487293223158, 0.000891382011561606, 0.000931001117497454, 0.000970883568971010, 0.00101069578059601,
ncfronk 1:f5770d9636b4 25 0.00105169774350639, 0.00109588295343421, 0.00113549685886290, 0.00117866383169451, 0.00122111516589616, 0.00126425191781228, 0.00130756685560331, 0.00135135745612168,
ncfronk 1:f5770d9636b4 26 0.00139547947313276, 0.00143990979242900, 0.00148466890906943, 0.00152967223986802, 0.00157503442488970, 0.00162066455214233, 0.00166668113637550, 0.00171297190814002,
ncfronk 1:f5770d9636b4 27 0.00175961611250325, 0.00180649714239756, 0.00185367729128575, 0.00190106604757396, 0.00194872602458623, 0.00199658259647564, 0.00204468151104454, 0.00209294223259948,
ncfronk 1:f5770d9636b4 28 0.00214139247713316, 0.00218996963721177, 0.00223871049041842, 0.00228761026923322, 0.00233669674897580, 0.00238601381783270, 0.00243548525436868, 0.00248518758501967,
ncfronk 1:f5770d9636b4 29 0.00253485686222383, 0.00258470295716680, 0.00263426676950411, 0.00268414140692153, 0.00273361748949242, 0.00278404942218042, 0.00283412527109201, 0.00288512840396260,
ncfronk 1:f5770d9636b4 30 0.00293445800039565, 0.00298408012351935, 0.00303527354743087, 0.00308448377238342, 0.00313512165505945, 0.00318474186231553, 0.00323506931441536, 0.00328460350198885,
ncfronk 1:f5770d9636b4 31 0.00333460199814310, 0.00338400592135627, 0.00343378958762444, 0.00348308365845938, 0.00353265733443406, 0.00358174124596574, 0.00363100325859950, 0.00367976183349975,
ncfronk 1:f5770d9636b4 32 0.00372865317317631, 0.00377704959506895, 0.00382555699048792, 0.00387355440986243, 0.00392161316870967, 0.00396912079239840, 0.00401664308061543, 0.00406360815542227,
ncfronk 1:f5770d9636b4 33 0.00411058555257416, 0.00415703554738502, 0.00420348722135172, 0.00424939516950231, 0.00429522177839473, 0.00434042896145653, 0.00438546971668745, 0.00442986742204268,
ncfronk 1:f5770d9636b4 34 0.00447414198154179, 0.00451784282884279, 0.00456156022215696, 0.00460464825220905, 0.00464779963068343, 0.00468955284268770, 0.00473169248365623, 0.00477223280278857,
ncfronk 1:f5770d9636b4 35 0.00481424852813673, 0.00485403860423785, 0.00489420623498588, 0.00493373299658250, 0.00497262699146714, 0.00501099496582253, 0.00504887367893452, 0.00508624698184808,
ncfronk 1:f5770d9636b4 36 0.00512316386346786, 0.00515946810910305, 0.00519528393985568, 0.00523039315379049, 0.00526503059762880, 0.00529893784256351, 0.00533241509486141, 0.00536513893964146,
ncfronk 1:f5770d9636b4 37 0.00539742537221889, 0.00542889931428335, 0.00545989970145767, 0.00549004893072241, 0.00551972419584414, 0.00554855435612888, 0.00557692734453731, 0.00560444087154133,
ncfronk 1:f5770d9636b4 38 0.00563147234239205, 0.00565757686128727, 0.00568316642545793, 0.00570777861250159, 0.00573192298998399, 0.00575509504545748, 0.00577790201469266, 0.00579969134709878,
ncfronk 1:f5770d9636b4 39 0.00582115054736086, 0.00584139221452850, 0.00586128734004678, 0.00587972989282672, 0.00589808690052833, 0.00591540333198250, 0.00593205379805961, 0.00594813880209655,
ncfronk 1:f5770d9636b4 40 0.00596267377455868, 0.00597741589424509, 0.00599039453248084, 0.00600314980390327, 0.00601494155132523, 0.00602610113531495, 0.00603636342822522, 0.00604578641469852,
ncfronk 1:f5770d9636b4 41 0.00605437894886202, 0.00606211163669993, 0.00606910653387789, 0.00607525672904290, 0.00608068579068155, 0.00608523210616189, 0.00608901297897988, 0.00609187619324112,
ncfronk 1:f5770d9636b4 42 0.00609396152547327, 0.00609514946463964, 0.00609558653157114, 0.00609514946463964, 0.00609396152547327, 0.00609187619324112, 0.00608901297897988, 0.00608523210616189,
ncfronk 1:f5770d9636b4 43 0.00608068579068155, 0.00607525672904290, 0.00606910653387789, 0.00606211163669993, 0.00605437894886202, 0.00604578641469852, 0.00603636342822522, 0.00602610113531495,
ncfronk 1:f5770d9636b4 44 0.00601494155132523, 0.00600314980390327, 0.00599039453248084, 0.00597741589424509, 0.00596267377455868, 0.00594813880209655, 0.00593205379805961, 0.00591540333198250,
ncfronk 1:f5770d9636b4 45 0.00589808690052833, 0.00587972989282672, 0.00586128734004678, 0.00584139221452850, 0.00582115054736086, 0.00579969134709878, 0.00577790201469266, 0.00575509504545748,
ncfronk 1:f5770d9636b4 46 0.00573192298998399, 0.00570777861250159, 0.00568316642545793, 0.00565757686128727, 0.00563147234239205, 0.00560444087154133, 0.00557692734453731, 0.00554855435612888,
ncfronk 1:f5770d9636b4 47 0.00551972419584414, 0.00549004893072241, 0.00545989970145767, 0.00542889931428335, 0.00539742537221889, 0.00536513893964146, 0.00533241509486141, 0.00529893784256351,
ncfronk 1:f5770d9636b4 48 0.00526503059762880, 0.00523039315379049, 0.00519528393985568, 0.00515946810910305, 0.00512316386346786, 0.00508624698184808, 0.00504887367893452, 0.00501099496582253,
ncfronk 1:f5770d9636b4 49 0.00497262699146714, 0.00493373299658250, 0.00489420623498588, 0.00485403860423785, 0.00481424852813673, 0.00477223280278857, 0.00473169248365623, 0.00468955284268770,
ncfronk 1:f5770d9636b4 50 0.00464779963068343, 0.00460464825220905, 0.00456156022215696, 0.00451784282884279, 0.00447414198154179, 0.00442986742204268, 0.00438546971668745, 0.00434042896145653,
ncfronk 1:f5770d9636b4 51 0.00429522177839473, 0.00424939516950231, 0.00420348722135172, 0.00415703554738502, 0.00411058555257416, 0.00406360815542227, 0.00401664308061543, 0.00396912079239840,
ncfronk 1:f5770d9636b4 52 0.00392161316870967, 0.00387355440986243, 0.00382555699048792, 0.00377704959506895, 0.00372865317317631, 0.00367976183349975, 0.00363100325859950, 0.00358174124596574,
ncfronk 1:f5770d9636b4 53 0.00353265733443406, 0.00348308365845938, 0.00343378958762444, 0.00338400592135627, 0.00333460199814310, 0.00328460350198885, 0.00323506931441536, 0.00318474186231553,
ncfronk 1:f5770d9636b4 54 0.00313512165505945, 0.00308448377238342, 0.00303527354743087, 0.00298408012351935, 0.00293445800039565, 0.00288512840396260, 0.00283412527109201, 0.00278404942218042,
ncfronk 1:f5770d9636b4 55 0.00273361748949242, 0.00268414140692153, 0.00263426676950411, 0.00258470295716680, 0.00253485686222383, 0.00248518758501967, 0.00243548525436868, 0.00238601381783270,
ncfronk 1:f5770d9636b4 56 0.00233669674897580, 0.00228761026923322, 0.00223871049041842, 0.00218996963721177, 0.00214139247713316, 0.00209294223259948, 0.00204468151104454, 0.00199658259647564,
ncfronk 1:f5770d9636b4 57 0.00194872602458623, 0.00190106604757396, 0.00185367729128575, 0.00180649714239756, 0.00175961611250325, 0.00171297190814002, 0.00166668113637550, 0.00162066455214233,
ncfronk 1:f5770d9636b4 58 0.00157503442488970, 0.00152967223986802, 0.00148466890906943, 0.00143990979242900, 0.00139547947313276, 0.00135135745612168, 0.00130756685560331, 0.00126425191781228,
ncfronk 1:f5770d9636b4 59 0.00122111516589616, 0.00117866383169451, 0.00113549685886290, 0.00109588295343421, 0.00105169774350639, 0.00101069578059601, 0.000970883568971010, 0.000931001117497454,
ncfronk 1:f5770d9636b4 60 0.000891382011561606, 0.000851487293223158, 0.000812374375990954, 0.000773394513145455, 0.000735367166639595, 0.000697608811340494, 0.000660700340823140, 0.000623999763683269,
ncfronk 1:f5770d9636b4 61 0.000587977722826699, 0.000552121769556217, 0.000516877376372632, 0.000481854744689647, 0.000447462473702899, 0.000413368163653855, 0.000379918194843229, 0.000346811034408436,
ncfronk 1:f5770d9636b4 62 0.000314346397337869, 0.000282270121591107, 0.000250843940298056, 0.000219864413943603, 0.000189518312913980, 0.000159652043314615, 0.000130337162460535, 0.000101522460573350,
ncfronk 1:f5770d9636b4 63 7.31488512081353e-05, 4.53634810869086e-05, 1.79220776252956e-05, -8.75000381957480e-06, -3.52380267488923e-05, -6.07302747179699e-05, -8.63859218366082e-05, -0.000110658422989979,
ncfronk 1:f5770d9636b4 64 -0.000135672987348502, -0.000158038013340163, -0.000182718834161682, -0.000208020109997019, -0.000223063752779904, -0.000247735016213375, -0.000268590084163264, -0.000291306404219105,
ncfronk 1:f5770d9636b4 65 -0.000310488418329100, -0.000330677260377738, -0.000348312520886679, -0.000366972910244881, -0.000383669251697455, -0.000401443504121743, -0.000417460223522498, -0.000434475552201623, -0.000449698934449484, -0.000465821362319299, -0.000480069347179249, -0.000495193607822494, -0.000508372396429405, -0.000522458425410067, -0.000534508605134922, -0.000547524082087984, -0.000558402454183533, -0.000570367122683910, -0.000580109977377959, -0.000591137773968283, -0.000599831070682668, -0.000610043338194475, -0.000617702529114801, -0.000627154674611770, -0.000633714444974831, -0.000642486260779654, -0.000647892827216824, -0.000656187894249034, -0.000660330946718933, -0.000668435478754011, -0.000670867964963519, -0.000679427972422059, -0.000679003259712778, -0.000692284271988876, -0.000675432749281130, -0.000689238102101884, -0.000707053158406025, -0.000700822488823546, -0.000704184938277025, -0.000699951609455988, -0.000702084347004260, -0.000699587125715329, -0.000701552559161197, -0.000699960260396518, -0.000701562144359961, -0.000700085972408138, -0.000700978318797988, -0.000699128468616956, -0.000699146857491809, -0.000696695831913496, -0.000695783521327534, -0.000692604062270113, -0.000690735948708760, -0.000686779420740873, -0.000684011485494165, -0.000679345019980268, -0.000675811138190482, -0.000670543670441799, -0.000666350155348239, -0.000660536584899437, -0.000655730318423711, -0.000649408145295391, -0.000644060044878972, -0.000637317640388987, -0.000631532852699149, -0.000624441235452662, -0.000618254890021300, -0.000610787449621752, -0.000604183313496965, -0.000596329290925752, -0.000589412242712984, -0.000581179079003090, -0.000574062372234321, -0.000565436854162197, -0.0192878684408550
ncfronk 1:f5770d9636b4 66 };
ncfronk 1:f5770d9636b4 67
ncfronk 1:f5770d9636b4 68 float filter( float *in, int sampleIndex)
ncfronk 1:f5770d9636b4 69 {
ncfronk 1:f5770d9636b4 70 unsigned int i, j, k;
ncfronk 1:f5770d9636b4 71 float out = 0;
ncfronk 1:f5770d9636b4 72 k = 0;
ncfronk 1:f5770d9636b4 73
ncfronk 1:f5770d9636b4 74 for( j = 0; j < NUM_TAPS; j++ ){
ncfronk 1:f5770d9636b4 75 k = (sampleIndex - j+SAMPLE_LENGTH-1)&(SAMPLE_LENGTH-1);
ncfronk 1:f5770d9636b4 76 out += in[ k ] * firCoeffs[ j ];
ncfronk 1:f5770d9636b4 77 }
ncfronk 1:f5770d9636b4 78 return out;
ncfronk 1:f5770d9636b4 79 }
ncfronk 1:f5770d9636b4 80
ncfronk 1:f5770d9636b4 81 //=------------------------------------------ DSP END ------------------------------------------------------------------------------
ncfronk 1:f5770d9636b4 82
ncfronk 1:f5770d9636b4 83 //-------------------------------------uiu----- QAM ------------------------------------------------------------------------------------
ncfronk 1:f5770d9636b4 84
ncfronk 1:f5770d9636b4 85 float qam_in(float *in, int sampleIndex, float *sI, float *sQ){
ncfronk 1:f5770d9636b4 86 float filteredSI = 0;
ncfronk 1:f5770d9636b4 87 float filteredSQ = 0;
ncfronk 1:f5770d9636b4 88 int k = 0;
ncfronk 1:f5770d9636b4 89 for(int i = 0; i < SAMPLE_LENGTH; i++){
ncfronk 1:f5770d9636b4 90 k = (sampleIndex - i+SAMPLE_LENGTH-1)&(SAMPLE_LENGTH-1);
ncfronk 1:f5770d9636b4 91 sI[k] = in[k]*cos(2*PI*CARRIER_FREQ*i*TIME_CONST);
ncfronk 1:f5770d9636b4 92 sQ[k] = -in[k]*sin(2*PI*CARRIER_FREQ*i*TIME_CONST);
ncfronk 1:f5770d9636b4 93 }
ncfronk 1:f5770d9636b4 94 filteredSI = filter(sI, sampleIndex);
ncfronk 1:f5770d9636b4 95 filteredSQ = filter(sQ, sampleIndex);
ncfronk 1:f5770d9636b4 96 return sqrt(filteredSI*filteredSI+filteredSQ*filteredSQ);
ncfronk 1:f5770d9636b4 97 }
ncfronk 1:f5770d9636b4 98
ncfronk 1:f5770d9636b4 99 //------------------------------------------- QAM END ------------------------------------------------------------------------------