check program for MCP3425 16-Bit Analog-to-Digital Converter

Dependencies:   MCP3425

Committer:
kenjiArai
Date:
Sun Mar 18 01:08:39 2018 +0000
Revision:
0:c82cfd2d165f
check program for MCP3425 16-Bit Analog-to-Digital Converter(1st release)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:c82cfd2d165f 1 /*
kenjiArai 0:c82cfd2d165f 2 * Mbed Application program
kenjiArai 0:c82cfd2d165f 3 * check program for MCP3425 16-Bit Analog-to-Digital Converter
kenjiArai 0:c82cfd2d165f 4 * http://www.microchip.com/wwwproducts/en/MCP3425
kenjiArai 0:c82cfd2d165f 5 * http://akizukidenshi.com/catalog/g/gK-08018/
kenjiArai 0:c82cfd2d165f 6 *
kenjiArai 0:c82cfd2d165f 7 * Copyright (c) 2018 Kenji Arai / JH1PJL
kenjiArai 0:c82cfd2d165f 8 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:c82cfd2d165f 9 * http://mbed.org/users/kenjiArai/
kenjiArai 0:c82cfd2d165f 10 * Modify: March 17th, 2018
kenjiArai 0:c82cfd2d165f 11 * Revised: March 18th, 2018
kenjiArai 0:c82cfd2d165f 12 */
kenjiArai 0:c82cfd2d165f 13
kenjiArai 0:c82cfd2d165f 14 // Include --------------------------------------------------------------------
kenjiArai 0:c82cfd2d165f 15 #include "mbed.h"
kenjiArai 0:c82cfd2d165f 16 #include "MCP3425.h"
kenjiArai 0:c82cfd2d165f 17
kenjiArai 0:c82cfd2d165f 18 // Definition -----------------------------------------------------------------
kenjiArai 0:c82cfd2d165f 19 //#define EXAMPLE_0
kenjiArai 0:c82cfd2d165f 20 //#define EXAMPLE_1
kenjiArai 0:c82cfd2d165f 21 #define EXAMPLE_2
kenjiArai 0:c82cfd2d165f 22 //#define EXAMPLE_3
kenjiArai 0:c82cfd2d165f 23 //#define EXAMPLE_4
kenjiArai 0:c82cfd2d165f 24 //#define EXAMPLE_5
kenjiArai 0:c82cfd2d165f 25
kenjiArai 0:c82cfd2d165f 26 // Object ---------------------------------------------------------------------
kenjiArai 0:c82cfd2d165f 27 Serial pc(USBTX, USBRX); // Communication with Host
kenjiArai 0:c82cfd2d165f 28 MCP3425 adc(I2C_SDA, I2C_SCL); //setup max31855 interface
kenjiArai 0:c82cfd2d165f 29 Timer t;
kenjiArai 0:c82cfd2d165f 30
kenjiArai 0:c82cfd2d165f 31 // RAM ------------------------------------------------------------------------
kenjiArai 0:c82cfd2d165f 32
kenjiArai 0:c82cfd2d165f 33 // ROM / Constant data --------------------------------------------------------
kenjiArai 0:c82cfd2d165f 34
kenjiArai 0:c82cfd2d165f 35 // Function prototypes --------------------------------------------------------
kenjiArai 0:c82cfd2d165f 36
kenjiArai 0:c82cfd2d165f 37 //------------------------------------------------------------------------------
kenjiArai 0:c82cfd2d165f 38 // Control Program
kenjiArai 0:c82cfd2d165f 39 //------------------------------------------------------------------------------
kenjiArai 0:c82cfd2d165f 40 #ifdef EXAMPLE_0
kenjiArai 0:c82cfd2d165f 41 int main() {
kenjiArai 0:c82cfd2d165f 42 // Default parameter setting
kenjiArai 0:c82cfd2d165f 43 // Continuous Conversion + 15 SPS (16 bits) + Gain x1
kenjiArai 0:c82cfd2d165f 44 while(true){
kenjiArai 0:c82cfd2d165f 45 printf("ADC: %6.5f [V]\r\n", adc.read_voltage());
kenjiArai 0:c82cfd2d165f 46 wait(0.2f);
kenjiArai 0:c82cfd2d165f 47 }
kenjiArai 0:c82cfd2d165f 48 }
kenjiArai 0:c82cfd2d165f 49 #endif
kenjiArai 0:c82cfd2d165f 50
kenjiArai 0:c82cfd2d165f 51 #ifdef EXAMPLE_1
kenjiArai 0:c82cfd2d165f 52 int main()
kenjiArai 0:c82cfd2d165f 53 {
kenjiArai 0:c82cfd2d165f 54 while(true) {
kenjiArai 0:c82cfd2d165f 55 pc.printf("ADC= %d\r\n", adc.read_16bit());
kenjiArai 0:c82cfd2d165f 56 }
kenjiArai 0:c82cfd2d165f 57 }
kenjiArai 0:c82cfd2d165f 58 #endif
kenjiArai 0:c82cfd2d165f 59
kenjiArai 0:c82cfd2d165f 60 #ifdef EXAMPLE_2
kenjiArai 0:c82cfd2d165f 61 int main()
kenjiArai 0:c82cfd2d165f 62 {
kenjiArai 0:c82cfd2d165f 63 mcp3425_config_t my_config;
kenjiArai 0:c82cfd2d165f 64 float dt;
kenjiArai 0:c82cfd2d165f 65 uint32_t conv_time;
kenjiArai 0:c82cfd2d165f 66
kenjiArai 0:c82cfd2d165f 67 my_config.pga_gain = PGA_GAIN_1;
kenjiArai 0:c82cfd2d165f 68 //my_config.pga_gain = PGA_GAIN_2;
kenjiArai 0:c82cfd2d165f 69 //my_config.pga_gain = PGA_GAIN_4;
kenjiArai 0:c82cfd2d165f 70 //my_config.pga_gain = PGA_GAIN_8;
kenjiArai 0:c82cfd2d165f 71 //my_config.sample_rate = SAMPLE_RATE_240SPS_12BIT;
kenjiArai 0:c82cfd2d165f 72 //my_config.sample_rate = SAMPLE_RATE_60SPS_14BIT;
kenjiArai 0:c82cfd2d165f 73 my_config.sample_rate = SAMPLE_RATE_15SPS_16BIT;
kenjiArai 0:c82cfd2d165f 74 my_config.conversion_mode = CONV_MODE_CONTINUOUS;
kenjiArai 0:c82cfd2d165f 75 adc.set_config(&my_config);
kenjiArai 0:c82cfd2d165f 76 adc.set_offset_volt(0.00037f);
kenjiArai 0:c82cfd2d165f 77 adc.set_vref_compensation(0.99303f);
kenjiArai 0:c82cfd2d165f 78 while(true) {
kenjiArai 0:c82cfd2d165f 79 t.reset();
kenjiArai 0:c82cfd2d165f 80 t.start();
kenjiArai 0:c82cfd2d165f 81 dt = adc.read_voltage();
kenjiArai 0:c82cfd2d165f 82 conv_time = t.read_us();
kenjiArai 0:c82cfd2d165f 83 pc.printf("ADC= %6.5f [V], Cnv.time= %d [uS]\r\n", dt, conv_time);
kenjiArai 0:c82cfd2d165f 84 wait(0.5f);
kenjiArai 0:c82cfd2d165f 85 }
kenjiArai 0:c82cfd2d165f 86 }
kenjiArai 0:c82cfd2d165f 87 #endif
kenjiArai 0:c82cfd2d165f 88
kenjiArai 0:c82cfd2d165f 89 #ifdef EXAMPLE_3
kenjiArai 0:c82cfd2d165f 90 int main()
kenjiArai 0:c82cfd2d165f 91 {
kenjiArai 0:c82cfd2d165f 92 adc.frequency(400000U);
kenjiArai 0:c82cfd2d165f 93 while(true) {
kenjiArai 0:c82cfd2d165f 94 pc.printf("ADC= %d\r\n", adc.read_16bit());
kenjiArai 0:c82cfd2d165f 95 }
kenjiArai 0:c82cfd2d165f 96 }
kenjiArai 0:c82cfd2d165f 97 #endif
kenjiArai 0:c82cfd2d165f 98
kenjiArai 0:c82cfd2d165f 99 #ifdef EXAMPLE_4
kenjiArai 0:c82cfd2d165f 100 int main()
kenjiArai 0:c82cfd2d165f 101 {
kenjiArai 0:c82cfd2d165f 102 mcp3425_config_t my_config;
kenjiArai 0:c82cfd2d165f 103 uint16_t dt;
kenjiArai 0:c82cfd2d165f 104 uint32_t conv_time;
kenjiArai 0:c82cfd2d165f 105
kenjiArai 0:c82cfd2d165f 106 my_config.pga_gain = PGA_GAIN_1;
kenjiArai 0:c82cfd2d165f 107 my_config.sample_rate = SAMPLE_RATE_240SPS_12BIT;
kenjiArai 0:c82cfd2d165f 108 //my_config.sample_rate = SAMPLE_RATE_60SPS_14BIT;
kenjiArai 0:c82cfd2d165f 109 //my_config.sample_rate = SAMPLE_RATE_15SPS_16BIT;
kenjiArai 0:c82cfd2d165f 110 my_config.conversion_mode = CONV_MODE_ONE_SHOT;
kenjiArai 0:c82cfd2d165f 111 //my_config.conversion_mode = CONV_MODE_CONTINUOUS;
kenjiArai 0:c82cfd2d165f 112 adc.set_config(&my_config);
kenjiArai 0:c82cfd2d165f 113 while(true) {
kenjiArai 0:c82cfd2d165f 114 t.reset();
kenjiArai 0:c82cfd2d165f 115 t.start();
kenjiArai 0:c82cfd2d165f 116 dt = adc.read_16bit();
kenjiArai 0:c82cfd2d165f 117 conv_time = t.read_us();
kenjiArai 0:c82cfd2d165f 118 pc.printf("ADC= %6d, Conv. time= %d [uS]\r\n", dt, conv_time);
kenjiArai 0:c82cfd2d165f 119 wait(0.5f);
kenjiArai 0:c82cfd2d165f 120 }
kenjiArai 0:c82cfd2d165f 121 }
kenjiArai 0:c82cfd2d165f 122 #endif
kenjiArai 0:c82cfd2d165f 123
kenjiArai 0:c82cfd2d165f 124 #ifdef EXAMPLE_5
kenjiArai 0:c82cfd2d165f 125 int main()
kenjiArai 0:c82cfd2d165f 126 {
kenjiArai 0:c82cfd2d165f 127 mcp3425_config_t my_config;
kenjiArai 0:c82cfd2d165f 128 uint16_t dt;
kenjiArai 0:c82cfd2d165f 129 uint32_t conv_time;
kenjiArai 0:c82cfd2d165f 130
kenjiArai 0:c82cfd2d165f 131 //my_config.pga_gain = PGA_GAIN_1;
kenjiArai 0:c82cfd2d165f 132 //my_config.pga_gain = PGA_GAIN_2;
kenjiArai 0:c82cfd2d165f 133 //my_config.pga_gain = PGA_GAIN_4;
kenjiArai 0:c82cfd2d165f 134 my_config.pga_gain = PGA_GAIN_8;
kenjiArai 0:c82cfd2d165f 135 my_config.sample_rate = SAMPLE_RATE_15SPS_16BIT;
kenjiArai 0:c82cfd2d165f 136 my_config.conversion_mode = CONV_MODE_CONTINUOUS;
kenjiArai 0:c82cfd2d165f 137 adc.set_config(&my_config);
kenjiArai 0:c82cfd2d165f 138 adc.frequency(400000U);
kenjiArai 0:c82cfd2d165f 139 while(true) {
kenjiArai 0:c82cfd2d165f 140 t.reset();
kenjiArai 0:c82cfd2d165f 141 t.start();
kenjiArai 0:c82cfd2d165f 142 dt = adc.read_16bit();
kenjiArai 0:c82cfd2d165f 143 conv_time = t.read_us();
kenjiArai 0:c82cfd2d165f 144 pc.printf("ADC= %6d, Conv. time= %d [uS]\r\n", dt, conv_time);
kenjiArai 0:c82cfd2d165f 145 wait(0.5f);
kenjiArai 0:c82cfd2d165f 146 }
kenjiArai 0:c82cfd2d165f 147 }
kenjiArai 0:c82cfd2d165f 148 #endif