Kenji Arai
/
check_ADC_MCP3425
check program for MCP3425 16-Bit Analog-to-Digital Converter
main.cpp@0:c82cfd2d165f, 2018-03-18 (annotated)
- 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?
User | Revision | Line number | New 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 |