Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 00002 #define SAMPLE_RATE 150000 00003 00004 #include "mbed.h" 00005 #include "adc.h" 00006 00007 //Initialise ADC to maximum SAMPLE_RATE and cclk divide set to 1 00008 ADC adc(SAMPLE_RATE, 1); 00009 00010 uint32_t adc_max, adc_av, adc_min; 00011 int snap = 0; 00012 00013 void min_max_av(int chan, uint32_t value) { 00014 static uint64_t adc_tot, counter = 0; 00015 static uint32_t adc_max_tmp, adc_min_tmp; 00016 00017 00018 int adc_value; 00019 00020 adc_value = adc.read(p20); 00021 //Update min, max and average records and totals 00022 if (adc_value > adc_max_tmp) adc_max_tmp = adc_value; 00023 if (adc_value < adc_min_tmp) adc_min_tmp = adc_value; 00024 adc_tot += adc_value; 00025 counter++; 00026 //If snapshot requested then sample data and reset average 00027 if (snap) { 00028 adc_max = adc_max_tmp; 00029 adc_av = (int)(adc_tot / counter); 00030 adc_min = adc_min_tmp; 00031 adc_max_tmp = 0; 00032 adc_min_tmp = 0xFFFF; 00033 adc_tot = 0; 00034 } 00035 if (snap) counter = 0; 00036 snap = 0; 00037 } 00038 00039 //Show a bargraph of ADC value 00040 void bar(int value) { 00041 int i, j; 00042 00043 j = (value * 50) / 4096; 00044 00045 if (j > 50) j = 50; 00046 if (j < 0) j = 0; 00047 00048 for (i = 0; i < j; i++) 00049 printf("="); 00050 printf("\n"); 00051 } 00052 00053 int main() { 00054 00055 printf("\nRequested max sample rate is %u, actual max sample rate is %u.\n", 00056 SAMPLE_RATE, adc.actual_sample_rate()); 00057 adc.append(min_max_av); 00058 00059 //Prepare for burst mode on all ADC pins 00060 adc.startmode(0,0); 00061 adc.burst(1); 00062 adc.setup(p20,1); 00063 adc.interrupt_state(p20,1); 00064 00065 printf("Burst mode, printing once per second...\n"); 00066 while (1) { 00067 snap = 1; 00068 wait(0.5); 00069 printf ("Min :"); 00070 bar(adc_min); 00071 printf ("Av :"); 00072 bar(adc_av); 00073 printf ("Max :"); 00074 bar(adc_max); 00075 printf("\n"); 00076 printf("......................................................\n"); 00077 wait(0.5); 00078 } 00079 }
Generated on Mon Jul 18 2022 10:50:02 by
1.7.2