getting 5000 values from internal ADC, writes to two seperate files. Trying to write to external memory (23K256). Last part doesn\'t work
main.cpp@1:884d54e74205, 2011-03-04 (annotated)
- Committer:
- marcelvandekamp
- Date:
- Fri Mar 04 15:24:54 2011 +0000
- Revision:
- 1:884d54e74205
- Parent:
- 0:d2987bd5e0cf
V2
Who changed what in which revision?
User | Revision | Line number | New 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 | } |