Final Code 12/19/2015

Dependencies:   Chemical_Sensor_DMA GPRS DPG_FINAL MBed_Adafruit-GPS-Library SDFileSystem Socket mbed

Committer:
DeWayneDennis
Date:
Fri Nov 06 20:53:59 2015 +0000
Revision:
21:3d922bea5d77
Parent:
19:404594768414
Child:
22:f46576c40722
added jared's DAC Code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bjcrofts 0:d7b2716c5a4f 1 #pragma once
bjcrofts 0:d7b2716c5a4f 2 #include "mbed.h"
bjcrofts 0:d7b2716c5a4f 3 #include "MBed_Adafruit_GPS.h"
bjcrofts 0:d7b2716c5a4f 4 #include "SDFileSystem.h"
bjcrofts 8:6b4a6bcd7694 5 #include "GSMLibrary.h"
bjcrofts 8:6b4a6bcd7694 6 #include "stdlib.h"
DeWayneDennis 19:404594768414 7 #include "GPRSInterface.h"
DeWayneDennis 21:3d922bea5d77 8 #include "Chemical_Sensor_DMA/pause.cpp"
DeWayneDennis 21:3d922bea5d77 9 #include "Chemical_Sensor_DMA/Sample/adc.h"
DeWayneDennis 21:3d922bea5d77 10 #include "Chemical_Sensor_DMA/Sample/pdb.h"
DeWayneDennis 21:3d922bea5d77 11 #include "Chemical_Sensor_DMA/SignalProcessing.h"
bjcrofts 0:d7b2716c5a4f 12
bjcrofts 0:d7b2716c5a4f 13 DigitalOut led_red(LED_RED);
bjcrofts 0:d7b2716c5a4f 14 Serial pc(USBTX, USBRX);
bjcrofts 0:d7b2716c5a4f 15 Timer t;
bjcrofts 8:6b4a6bcd7694 16 bool run = 0;
bjcrofts 14:97611177509b 17 bool fil = 0;
bjcrofts 0:d7b2716c5a4f 18
bjcrofts 0:d7b2716c5a4f 19 /**************************************************
bjcrofts 0:d7b2716c5a4f 20 ** SD FILE SYSTEM **
bjcrofts 0:d7b2716c5a4f 21 **************************************************/
bjcrofts 0:d7b2716c5a4f 22 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
DeWayneDennis 19:404594768414 23 FILE *fpLog;
DeWayneDennis 19:404594768414 24 FILE *fpData;
bjcrofts 0:d7b2716c5a4f 25 /**************************************************
bjcrofts 0:d7b2716c5a4f 26 ** GPS **
bjcrofts 0:d7b2716c5a4f 27 **************************************************/
bjcrofts 0:d7b2716c5a4f 28 Serial * gps_Serial;
bjcrofts 0:d7b2716c5a4f 29
bjcrofts 0:d7b2716c5a4f 30 /**************************************************
bjcrofts 0:d7b2716c5a4f 31 ** SENSOR INPUTS **
bjcrofts 0:d7b2716c5a4f 32 **************************************************/
bjcrofts 0:d7b2716c5a4f 33 bool takeSample = false;
DeWayneDennis 19:404594768414 34 void tick()
DeWayneDennis 19:404594768414 35 {
DeWayneDennis 19:404594768414 36 takeSample = true;
DeWayneDennis 19:404594768414 37 }
bjcrofts 0:d7b2716c5a4f 38
DeWayneDennis 19:404594768414 39 /*Global Variables*/
DeWayneDennis 19:404594768414 40 extern GPRSInterface eth;
bjcrofts 0:d7b2716c5a4f 41
DeWayneDennis 19:404594768414 42 /*End Global Variables*/
DeWayneDennis 21:3d922bea5d77 43 #define PDB_DACINTC0_TOE 0x01 // 0x01 -> PDB DAC interal trigger enabled
DeWayneDennis 21:3d922bea5d77 44 #define DAC0_DAT0 (uint16_t *)0x400CC000 // DAC word buffer base address
DeWayneDennis 21:3d922bea5d77 45
DeWayneDennis 21:3d922bea5d77 46 uint16_t *p1;
DeWayneDennis 21:3d922bea5d77 47 void setUpDac()
DeWayneDennis 19:404594768414 48 {
DeWayneDennis 21:3d922bea5d77 49 SIM_SCGC2 |= SIM_SCGC2_DAC0_MASK; // turn on clock to the DAC
DeWayneDennis 21:3d922bea5d77 50 SIM_SCGC6 |= SIM_SCGC6_DAC0_MASK; // turn on clock to the DAC
DeWayneDennis 21:3d922bea5d77 51 DAC0_C0 |= DAC_C0_DACEN_MASK ; // enable the DAC; must do before any of the following
DeWayneDennis 21:3d922bea5d77 52 DAC0_C2 = 9;//cycle through the first 10 values in the buffer
DeWayneDennis 21:3d922bea5d77 53 DAC0_C1 = 1;//enable the dac buffer
DeWayneDennis 21:3d922bea5d77 54 p1 = DAC0_DAT0;
DeWayneDennis 21:3d922bea5d77 55 for (int i = 0; i < 16; i++)//fill the buffer
DeWayneDennis 21:3d922bea5d77 56 {
DeWayneDennis 21:3d922bea5d77 57 *p1++ = (uint16_t) (cos(3.14159265359 * 2 * 10000 * .00001 * i) * 460.0 + 2870.0); // 3351.0
DeWayneDennis 21:3d922bea5d77 58 //printf("Pointer: %d\tValue: %d\n\r", (uint32_t)p1,(int) (cos(3.14159265359 * 2 * 10000 * .00001 * i) * 800.0 + 3103.0));
DeWayneDennis 21:3d922bea5d77 59 }
bjcrofts 0:d7b2716c5a4f 60
DeWayneDennis 21:3d922bea5d77 61 }
DeWayneDennis 21:3d922bea5d77 62 void initialize(){
DeWayneDennis 21:3d922bea5d77 63 for(int i = 0; i < 86; i++)
DeWayneDennis 21:3d922bea5d77 64 {
DeWayneDennis 21:3d922bea5d77 65 if(NVIC_GetPriority((IRQn_Type) i) == 0) NVIC_SetPriority((IRQn_Type) i, 2);
bjcrofts 0:d7b2716c5a4f 66 }
DeWayneDennis 21:3d922bea5d77 67
DeWayneDennis 21:3d922bea5d77 68 // Give hardware associated with
DeWayneDennis 21:3d922bea5d77 69 // sampling the highest priority
DeWayneDennis 21:3d922bea5d77 70 NVIC_SetPriority(ADC1_IRQn,0);
DeWayneDennis 21:3d922bea5d77 71 NVIC_SetPriority(ADC0_IRQn,0);
DeWayneDennis 21:3d922bea5d77 72 NVIC_SetPriority(PDB0_IRQn,0);
DeWayneDennis 21:3d922bea5d77 73 NVIC_SetPriority(DMA0_IRQn,0);
DeWayneDennis 21:3d922bea5d77 74 NVIC_SetPriority(DMA1_IRQn,0);
DeWayneDennis 21:3d922bea5d77 75 NVIC_SetPriority(DMA2_IRQn,0);
DeWayneDennis 21:3d922bea5d77 76
DeWayneDennis 21:3d922bea5d77 77 NVIC_SetPriority(ENET_1588_Timer_IRQn,1);
DeWayneDennis 21:3d922bea5d77 78 NVIC_SetPriority(ENET_Transmit_IRQn,1);
DeWayneDennis 21:3d922bea5d77 79 NVIC_SetPriority(ENET_Receive_IRQn,1);
DeWayneDennis 21:3d922bea5d77 80 NVIC_SetPriority(ENET_Error_IRQn,1);
DeWayneDennis 21:3d922bea5d77 81
DeWayneDennis 21:3d922bea5d77 82 adc_init(); // initialize ADCs (always initialize adc before dma)
DeWayneDennis 21:3d922bea5d77 83 setUpDac();
DeWayneDennis 21:3d922bea5d77 84 dma_init(); // initializes DMAs
DeWayneDennis 21:3d922bea5d77 85 pdb_init(); // initialize PDB0 as the timer for ADCs and DMA2
DeWayneDennis 21:3d922bea5d77 86
DeWayneDennis 21:3d922bea5d77 87 pdb_start();
bjcrofts 0:d7b2716c5a4f 88 }
DeWayneDennis 19:404594768414 89 int main ()
DeWayneDennis 19:404594768414 90 {
DeWayneDennis 21:3d922bea5d77 91 pc.printf("hello!!!\r\n");
DeWayneDennis 21:3d922bea5d77 92
DeWayneDennis 21:3d922bea5d77 93 initialize();
DeWayneDennis 21:3d922bea5d77 94
bjcrofts 0:d7b2716c5a4f 95 // GPS INITIALIZATION //////////////////////////////
bjcrofts 8:6b4a6bcd7694 96 gps_Serial = new Serial(PTC4,PTC3); ////Serial gsm(D1,D0);
DeWayneDennis 21:3d922bea5d77 97
bjcrofts 0:d7b2716c5a4f 98 Adafruit_GPS myGPS(gps_Serial);
bjcrofts 0:d7b2716c5a4f 99 char c;
DeWayneDennis 21:3d922bea5d77 100 /* myGPS.begin(9600);
bjcrofts 0:d7b2716c5a4f 101 myGPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
bjcrofts 0:d7b2716c5a4f 102 myGPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);
DeWayneDennis 21:3d922bea5d77 103 myGPS.sendCommand(PGCMD_ANTENNA);*/
bjcrofts 0:d7b2716c5a4f 104 ////////////////////////////////////////////////////
DeWayneDennis 21:3d922bea5d77 105
DeWayneDennis 21:3d922bea5d77 106 pc.printf("Compute Tables\r\n");
DeWayneDennis 21:3d922bea5d77 107
DeWayneDennis 21:3d922bea5d77 108 pre_compute_tables();
DeWayneDennis 21:3d922bea5d77 109
DeWayneDennis 21:3d922bea5d77 110 int startAddress = (int)&sample_array0[0];
DeWayneDennis 21:3d922bea5d77 111 int destinationIndex = (DMA_TCD0_DADDR-startAddress)/2;
DeWayneDennis 21:3d922bea5d77 112 int currentIndex;
DeWayneDennis 21:3d922bea5d77 113
DeWayneDennis 21:3d922bea5d77 114 pc.printf("Compute Tables\r\n");
bjcrofts 0:d7b2716c5a4f 115 float filteredLong = 0;
bjcrofts 0:d7b2716c5a4f 116 float filteredLongRef = 0;
DeWayneDennis 19:404594768414 117
DeWayneDennis 21:3d922bea5d77 118
DeWayneDennis 19:404594768414 119 fpData = fopen("/sd/data.txt", "a");
DeWayneDennis 19:404594768414 120 if (fpData != NULL) {
DeWayneDennis 19:404594768414 121 fprintf(fpData, "--------------- DCS ------------------");
bjcrofts 14:97611177509b 122 }
DeWayneDennis 21:3d922bea5d77 123 pc.printf("Start While Loop\r\n");
DeWayneDennis 19:404594768414 124
DeWayneDennis 19:404594768414 125 while(1) {
DeWayneDennis 21:3d922bea5d77 126 destinationIndex = (DMA_TCD0_DADDR-startAddress)/2;
DeWayneDennis 21:3d922bea5d77 127 while (currentIndex!=destinationIndex)
DeWayneDennis 21:3d922bea5d77 128 {
DeWayneDennis 21:3d922bea5d77 129 filter100K(sample_array0[currentIndex], sample_array1[currentIndex]);
DeWayneDennis 21:3d922bea5d77 130 currentIndex++;
DeWayneDennis 21:3d922bea5d77 131 if (currentIndex>=2000)
DeWayneDennis 21:3d922bea5d77 132 currentIndex = 0;
DeWayneDennis 21:3d922bea5d77 133
bjcrofts 0:d7b2716c5a4f 134 }
DeWayneDennis 21:3d922bea5d77 135
bjcrofts 0:d7b2716c5a4f 136 c = myGPS.read();
bjcrofts 0:d7b2716c5a4f 137 if ( myGPS.newNMEAreceived() ) {
bjcrofts 0:d7b2716c5a4f 138 if ( !myGPS.parse(myGPS.lastNMEA()) ) {
DeWayneDennis 19:404594768414 139 //continue;
bjcrofts 0:d7b2716c5a4f 140 }
bjcrofts 0:d7b2716c5a4f 141 }
DeWayneDennis 21:3d922bea5d77 142 gsm_tick();
DeWayneDennis 21:3d922bea5d77 143 filteredLong = getFiltered();
DeWayneDennis 21:3d922bea5d77 144 filteredLongRef = getFilteredRef();
DeWayneDennis 21:3d922bea5d77 145 run = 1;
DeWayneDennis 21:3d922bea5d77 146
DeWayneDennis 19:404594768414 147 if(run) {
bjcrofts 0:d7b2716c5a4f 148 led_red = !led_red;
bjcrofts 8:6b4a6bcd7694 149 run = 0;
DeWayneDennis 19:404594768414 150
DeWayneDennis 21:3d922bea5d77 151 printf("%f, ", filteredLong);
DeWayneDennis 21:3d922bea5d77 152 printf("%f, ", filteredLongRef);
DeWayneDennis 21:3d922bea5d77 153 printf("%f\r\n", filteredLong/filteredLongRef);
DeWayneDennis 21:3d922bea5d77 154 printf("%02d:%02d:%02d \r\n", myGPS.hour-6, myGPS.minute, myGPS.seconds);
DeWayneDennis 19:404594768414 155
DeWayneDennis 21:3d922bea5d77 156 if (myGPS.fix) printf("%5.2f%c, %5.2f%c\r\n", myGPS.latitude, myGPS.lat, myGPS.longitude, myGPS.lon);
DeWayneDennis 21:3d922bea5d77 157 else printf("No GPS fix\r\n");
DeWayneDennis 21:3d922bea5d77 158 printf("--------------------------------\r\n");
DeWayneDennis 19:404594768414 159
DeWayneDennis 19:404594768414 160 fpData = fopen("/sd/data.txt", "a");
DeWayneDennis 19:404594768414 161 if (fpData != NULL) {
DeWayneDennis 19:404594768414 162 fprintf(fpData, "%f, ", filteredLong);
DeWayneDennis 19:404594768414 163 fprintf(fpData, "%f\r\n", filteredLongRef);
DeWayneDennis 19:404594768414 164 fprintf(fpData, "%02d:%02d:%02d\r\n", myGPS.hour-6, myGPS.minute, myGPS.seconds);
DeWayneDennis 19:404594768414 165 if (myGPS.fix) fprintf(fpData, "%5.2f%c, %5.2f%c\r\n", myGPS.latitude, myGPS.lat, myGPS.longitude, myGPS.lon);
DeWayneDennis 19:404594768414 166 fclose(fpData);
DeWayneDennis 19:404594768414 167 }
DeWayneDennis 19:404594768414 168 if(myGPS.fix)
DeWayneDennis 19:404594768414 169 gsm_send_data(filteredLong, filteredLongRef, myGPS.hour-6, myGPS.minute, myGPS.seconds, myGPS.latitude, myGPS.lat, myGPS.longitude, myGPS.lon);
DeWayneDennis 19:404594768414 170 else
DeWayneDennis 19:404594768414 171 gsm_send_data(filteredLong, filteredLongRef,myGPS.hour-6, myGPS.minute, myGPS.seconds, 0, 0, 0, 0);
DeWayneDennis 19:404594768414 172 }
DeWayneDennis 21:3d922bea5d77 173
bjcrofts 0:d7b2716c5a4f 174 }
bjcrofts 0:d7b2716c5a4f 175 }