Gianni Notari
/
ADC_fast_sample_and_send
Makes 100 samples on maximum sample rate and transmits it over UART
main.cpp@0:55ea5a2921b2, 2010-06-09 (annotated)
- Committer:
- gno
- Date:
- Wed Jun 09 12:54:21 2010 +0000
- Revision:
- 0:55ea5a2921b2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gno | 0:55ea5a2921b2 | 1 | #define SAMPLE_RATE 750000 |
gno | 0:55ea5a2921b2 | 2 | #define LENGTH_RESULT 100 |
gno | 0:55ea5a2921b2 | 3 | |
gno | 0:55ea5a2921b2 | 4 | #include "mbed.h" |
gno | 0:55ea5a2921b2 | 5 | #include "adc.h" |
gno | 0:55ea5a2921b2 | 6 | |
gno | 0:55ea5a2921b2 | 7 | //Initialise ADC to maximum SAMPLE_RATE and cclk divide set to 1 |
gno | 0:55ea5a2921b2 | 8 | ADC adc(SAMPLE_RATE, 1); |
gno | 0:55ea5a2921b2 | 9 | |
gno | 0:55ea5a2921b2 | 10 | Serial uart(USBTX, USBRX); // tx, rx |
gno | 0:55ea5a2921b2 | 11 | volatile int result[LENGTH_RESULT]; |
gno | 0:55ea5a2921b2 | 12 | |
gno | 0:55ea5a2921b2 | 13 | int main() { |
gno | 0:55ea5a2921b2 | 14 | // Init UART |
gno | 0:55ea5a2921b2 | 15 | // uart.baud(256000); |
gno | 0:55ea5a2921b2 | 16 | // uart.printf("Requested max sample rate is %u, actual max sample rate is %u.\n", SAMPLE_RATE, adc.actual_sample_rate()); |
gno | 0:55ea5a2921b2 | 17 | |
gno | 0:55ea5a2921b2 | 18 | //Set up ADC on pin 20 |
gno | 0:55ea5a2921b2 | 19 | adc.setup(p20,1); |
gno | 0:55ea5a2921b2 | 20 | //Measure pin 20 |
gno | 0:55ea5a2921b2 | 21 | adc.select(p20); |
gno | 0:55ea5a2921b2 | 22 | |
gno | 0:55ea5a2921b2 | 23 | // Vars |
gno | 0:55ea5a2921b2 | 24 | |
gno | 0:55ea5a2921b2 | 25 | int count; |
gno | 0:55ea5a2921b2 | 26 | // Program |
gno | 0:55ea5a2921b2 | 27 | |
gno | 0:55ea5a2921b2 | 28 | // AD conversion |
gno | 0:55ea5a2921b2 | 29 | for(count = 0; count < LENGTH_RESULT; count++){ |
gno | 0:55ea5a2921b2 | 30 | //Start ADC conversion |
gno | 0:55ea5a2921b2 | 31 | adc.start(); |
gno | 0:55ea5a2921b2 | 32 | //Wait for it to complete |
gno | 0:55ea5a2921b2 | 33 | while(!adc.done(p20)); |
gno | 0:55ea5a2921b2 | 34 | result[count] = adc.read(p20); |
gno | 0:55ea5a2921b2 | 35 | } |
gno | 0:55ea5a2921b2 | 36 | // Send over UART |
gno | 0:55ea5a2921b2 | 37 | for(count = 0; count < LENGTH_RESULT; count++){ |
gno | 0:55ea5a2921b2 | 38 | uart.printf("%04u.\n", result[count]); |
gno | 0:55ea5a2921b2 | 39 | } |
gno | 0:55ea5a2921b2 | 40 | } |
gno | 0:55ea5a2921b2 | 41 | |
gno | 0:55ea5a2921b2 | 42 | |
gno | 0:55ea5a2921b2 | 43 |