getting 5000 values from internal ADC, writes to two seperate files. Trying to write to external memory (23K256). Last part doesn\'t work

Dependencies:   mbed Ser23K256

Committer:
marcelvandekamp
Date:
Fri Mar 04 15:24:54 2011 +0000
Revision:
1:884d54e74205
Parent:
0:d2987bd5e0cf
V2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcelvandekamp 0:d2987bd5e0cf 1 #include "mbed.h"
marcelvandekamp 0:d2987bd5e0cf 2 #include "Ser23K256.h"
marcelvandekamp 0:d2987bd5e0cf 3
marcelvandekamp 0:d2987bd5e0cf 4 SPI spi(p11, p12, p13);
marcelvandekamp 0:d2987bd5e0cf 5 Ser23K256 sram(spi, p14);
marcelvandekamp 0:d2987bd5e0cf 6
marcelvandekamp 0:d2987bd5e0cf 7 LocalFileSystem local ("local");
marcelvandekamp 0:d2987bd5e0cf 8 #define AANTAL_SAMPLES 5000
marcelvandekamp 0:d2987bd5e0cf 9
marcelvandekamp 0:d2987bd5e0cf 10 InterruptIn Mswitch(p23);
marcelvandekamp 0:d2987bd5e0cf 11 AnalogIn Sense5(p20);
marcelvandekamp 0:d2987bd5e0cf 12 Ticker ADC_Timer;
marcelvandekamp 0:d2987bd5e0cf 13 Timer t;
marcelvandekamp 0:d2987bd5e0cf 14
marcelvandekamp 0:d2987bd5e0cf 15 float usCurrentValue;
marcelvandekamp 0:d2987bd5e0cf 16 float /* unsigned int*/ Samples[AANTAL_SAMPLES];
marcelvandekamp 0:d2987bd5e0cf 17 int teller=0;
marcelvandekamp 0:d2987bd5e0cf 18 Serial pc(USBTX, USBRX);
marcelvandekamp 0:d2987bd5e0cf 19
marcelvandekamp 0:d2987bd5e0cf 20 void Start_ADC();
marcelvandekamp 0:d2987bd5e0cf 21 void ADC_Interrupt();
marcelvandekamp 0:d2987bd5e0cf 22 void ADC_Stop();
marcelvandekamp 0:d2987bd5e0cf 23 void WriteVal();
marcelvandekamp 0:d2987bd5e0cf 24 void WriteExternal();
marcelvandekamp 0:d2987bd5e0cf 25 void ShowExternal();
marcelvandekamp 0:d2987bd5e0cf 26
marcelvandekamp 0:d2987bd5e0cf 27
marcelvandekamp 0:d2987bd5e0cf 28 int main() {
marcelvandekamp 0:d2987bd5e0cf 29
marcelvandekamp 0:d2987bd5e0cf 30 pc.baud(9600);
marcelvandekamp 0:d2987bd5e0cf 31 LPC_GPIOINT->IO0IntClr = (LPC_GPIOINT->IO0IntStatR | LPC_GPIOINT->IO0IntStatF);
marcelvandekamp 0:d2987bd5e0cf 32 LPC_GPIOINT->IO2IntClr = (LPC_GPIOINT->IO2IntStatR | LPC_GPIOINT->IO2IntStatF);
marcelvandekamp 0:d2987bd5e0cf 33
marcelvandekamp 0:d2987bd5e0cf 34 Mswitch.rise(&Start_ADC);
marcelvandekamp 0:d2987bd5e0cf 35 }
marcelvandekamp 0:d2987bd5e0cf 36
marcelvandekamp 0:d2987bd5e0cf 37 void Start_ADC() {
marcelvandekamp 0:d2987bd5e0cf 38 teller = 0;
marcelvandekamp 0:d2987bd5e0cf 39 t.reset();
marcelvandekamp 0:d2987bd5e0cf 40 t.start();
marcelvandekamp 0:d2987bd5e0cf 41 memset(Samples, 0, AANTAL_SAMPLES);
marcelvandekamp 0:d2987bd5e0cf 42 ADC_Timer.attach_us(&ADC_Interrupt, 200);
marcelvandekamp 0:d2987bd5e0cf 43 wait(0.0005);
marcelvandekamp 0:d2987bd5e0cf 44 }
marcelvandekamp 0:d2987bd5e0cf 45
marcelvandekamp 0:d2987bd5e0cf 46 void ADC_Interrupt() {
marcelvandekamp 0:d2987bd5e0cf 47
marcelvandekamp 0:d2987bd5e0cf 48 usCurrentValue= (Sense5.read_u16()&0xFFF);
marcelvandekamp 0:d2987bd5e0cf 49 Samples[teller] =(((usCurrentValue*3.3)/4095) - 2.38) / 0.17; // turning value into G's
marcelvandekamp 0:d2987bd5e0cf 50 teller = teller + 1;
marcelvandekamp 0:d2987bd5e0cf 51 if (teller == AANTAL_SAMPLES) {
marcelvandekamp 0:d2987bd5e0cf 52 ADC_Stop();
marcelvandekamp 0:d2987bd5e0cf 53 }
marcelvandekamp 0:d2987bd5e0cf 54 }
marcelvandekamp 0:d2987bd5e0cf 55
marcelvandekamp 0:d2987bd5e0cf 56 void ADC_Stop() {
marcelvandekamp 0:d2987bd5e0cf 57 ADC_Timer.detach();
marcelvandekamp 0:d2987bd5e0cf 58 t.stop();
marcelvandekamp 0:d2987bd5e0cf 59 pc.printf("meting gedaan, tijd: %f", t.read());
marcelvandekamp 0:d2987bd5e0cf 60 WriteVal();
marcelvandekamp 0:d2987bd5e0cf 61 }
marcelvandekamp 0:d2987bd5e0cf 62
marcelvandekamp 0:d2987bd5e0cf 63
marcelvandekamp 0:d2987bd5e0cf 64 void WriteVal() {
marcelvandekamp 0:d2987bd5e0cf 65 // Writing the values in array to file onto disk.
marcelvandekamp 0:d2987bd5e0cf 66 pc.printf("Writing to disk (be patient) \n\r");
marcelvandekamp 0:d2987bd5e0cf 67 FILE *fp = fopen("/local/testfile.txt", "w");
marcelvandekamp 0:d2987bd5e0cf 68
marcelvandekamp 0:d2987bd5e0cf 69 for (int i=0; i < AANTAL_SAMPLES; i++) {
marcelvandekamp 0:d2987bd5e0cf 70
marcelvandekamp 0:d2987bd5e0cf 71 fprintf(fp," %f ", Samples[i]);;
marcelvandekamp 0:d2987bd5e0cf 72 }
marcelvandekamp 0:d2987bd5e0cf 73 pc.printf("closing file");
marcelvandekamp 0:d2987bd5e0cf 74 fclose(fp);
marcelvandekamp 0:d2987bd5e0cf 75 wait(4);
marcelvandekamp 0:d2987bd5e0cf 76
marcelvandekamp 0:d2987bd5e0cf 77 FILE *fp2 = fopen("/local/Force.txt", "w");
marcelvandekamp 0:d2987bd5e0cf 78
marcelvandekamp 0:d2987bd5e0cf 79 for (int i=0; i < AANTAL_SAMPLES; i++) {
marcelvandekamp 0:d2987bd5e0cf 80
marcelvandekamp 0:d2987bd5e0cf 81 fprintf(fp2, "%f \n\r", 4.487 * Samples[i]* 9.8 + 44.00241);
marcelvandekamp 0:d2987bd5e0cf 82 }
marcelvandekamp 0:d2987bd5e0cf 83 pc.printf("closing file");
marcelvandekamp 0:d2987bd5e0cf 84 fclose(fp2);
marcelvandekamp 0:d2987bd5e0cf 85 wait(4.0);
marcelvandekamp 1:884d54e74205 86 WriteExternal();
marcelvandekamp 0:d2987bd5e0cf 87 pc.printf("written to ext");
marcelvandekamp 0:d2987bd5e0cf 88 wait(3);
marcelvandekamp 0:d2987bd5e0cf 89 ShowExternal();
marcelvandekamp 0:d2987bd5e0cf 90 main();
marcelvandekamp 0:d2987bd5e0cf 91 }
marcelvandekamp 0:d2987bd5e0cf 92
marcelvandekamp 0:d2987bd5e0cf 93 void WriteExternal() {
marcelvandekamp 0:d2987bd5e0cf 94
marcelvandekamp 0:d2987bd5e0cf 95 unsigned int buff[AANTAL_SAMPLES];
marcelvandekamp 0:d2987bd5e0cf 96
marcelvandekamp 0:d2987bd5e0cf 97 for (int i=0; i < AANTAL_SAMPLES; i++) {
marcelvandekamp 0:d2987bd5e0cf 98 sram.write (i, Samples[i]);
marcelvandekamp 0:d2987bd5e0cf 99 }
marcelvandekamp 0:d2987bd5e0cf 100 }
marcelvandekamp 0:d2987bd5e0cf 101
marcelvandekamp 0:d2987bd5e0cf 102 void ShowExternal() {
marcelvandekamp 0:d2987bd5e0cf 103
marcelvandekamp 0:d2987bd5e0cf 104 unsigned int buff[AANTAL_SAMPLES];
marcelvandekamp 0:d2987bd5e0cf 105 for (int i=0; i < AANTAL_SAMPLES; i++) {
marcelvandekamp 0:d2987bd5e0cf 106 buff[i] = sram.read(i);
marcelvandekamp 0:d2987bd5e0cf 107 pc.printf("%f \n\r",buff);
marcelvandekamp 0:d2987bd5e0cf 108 }
marcelvandekamp 0:d2987bd5e0cf 109 }