Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
48241ad08This file is pinned to the selected release. Download the original to open it in your design tool.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IoT-MBBR (masterthesis): firmware/EFM32HG222F64_iot-mbbr/src/adc.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">IoT-MBBR (masterthesis)
</div>
<div id="projectbrief">Masterthesis upgrading a Moving Bed BioReactor with extra sensors and cloud connectivity.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('adc_8c_source.html','');});
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<div class="title">adc.c</div> </div>
</div><!--header-->
<div class="contents">
<a href="adc_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/***************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * @file adc.c</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * @brief ADC functionality for reading the (battery) voltage, internal temperature and CH4/5/6/7 voltages.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * @version 3.0</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * @author Brecht Van Eeckhoudt</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * ******************************************************************************</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * @section Versions</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> *</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * @li v1.0: Moved ADC functionality from `other.c` to this file.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * @li v1.1: Removed re-initialization dbprint messages.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * @li v1.2: Started using custom enum type and cleaned up some unnecessary statements after testing.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * @li v1.3: Changed error numbering.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * @li v1.4: Added timeout to `while` loop and changed types to `int32_t`.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * @li v1.5: Refined timout functionality.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * @li v2.0: Disabled peripheral clock before entering an `error` function, added</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * functionality to exit methods after `error` call and updated version number.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * @li v2.1: Removed `static` before the local variables (not necessary).</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * @li v3.0: Added CH4/5/6/7 measurement capabilities.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> * ******************************************************************************</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> *</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * @section License</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * **Copyright (C) 2020 - Brecht Van Eeckhoudt**</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> *</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * it under the terms of the **GNU General Public License** as published by</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * the Free Software Foundation, either **version 3** of the License, or</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"> *</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> * *A copy of the GNU General Public License can be found in the `LICENSE`</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"> * file along with this source code.*</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> *</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"> * @n</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"> *</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment"> * Some methods use code obtained from examples from [Silicon Labs' GitHub](https://github.com/SiliconLabs/peripheral_examples).</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"> * These sections are licensed under the Silabs License Agreement. See the file</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> * "Silabs_License_Agreement.txt" for details. Before using this software for</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> * any purpose, you must agree to the terms of that agreement.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment"> *</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <stdint.h></span> <span class="comment">/* (u)intXX_t */</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#include <stdbool.h></span> <span class="comment">/* "bool", "true", "false" */</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#include "em_device.h"</span> <span class="comment">/* Include necessary MCU-specific header file */</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "em_cmu.h"</span> <span class="comment">/* Clock management unit */</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include "em_adc.h"</span> <span class="comment">/* Analog to Digital Converter */</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#include "<a class="code" href="adc_8h.html">adc.h</a>"</span> <span class="comment">/* Corresponding header file */</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#include "<a class="code" href="debug__dbprint_8h.html">debug_dbprint.h</a>"</span> <span class="comment">/* Enable or disable printing to UART for debugging */</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "<a class="code" href="util_8h.html">util.h</a>"</span> <span class="comment">/* Utility functionality */</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">/* Local definitions */</span><span class="comment"></span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">/** Enable (1) or disable (0) printing the timeout counter value using DBPRINT */</span></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="adc_8c.html#a3ce97199df8725e09a70857d43c34b48"> 64</a></span> <span class="preprocessor">#define DBPRINT_TIMEOUT 0</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment"></span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">/** Maximum value for the counter before exiting a `while` loop */</span></div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="adc_8c.html#a2207a269d247f40650eb3463f3700b43"> 67</a></span> <span class="preprocessor">#define TIMEOUT_CONVERSION 70 // Before: 50</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">/* Local variables */</span></div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="adc_8c.html#a06188fb5171000378979416d8d695df8"> 71</a></span> <span class="keyword">volatile</span> <span class="keywordtype">bool</span> <a class="code" href="adc_8c.html#a06188fb5171000378979416d8d695df8">adcConversionComplete</a> = <span class="keyword">false</span>; <span class="comment">/* Volatile because it's modified by an interrupt service routine */</span></div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="adc_8c.html#a643802e6534a4094866de9f51719ab15"> 72</a></span> ADC_Init_TypeDef <a class="code" href="adc_8c.html#a643802e6534a4094866de9f51719ab15">init</a> = ADC_INIT_DEFAULT;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e"> 73</a></span> ADC_InitSingle_TypeDef <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a> = ADC_INITSINGLE_DEFAULT;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">/* Local prototype */</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">static</span> float32_t <a class="code" href="adc_8c.html#a6615c226917d25973e391ded79092b15">convertToCelsius</a> (<a class="code" href="vl53l1__types_8h.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> adcSample);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment"> * Method to initialize the ADC to later check the battery voltage or internal temperature.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> *</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"> * @param[in] peripheral</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment"> * Select the ADC peripheral to initialize.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="adc_8c.html#ab8a50016236d402e27a7e1b7f0f4cf52"> 87</a></span> <span class="keywordtype">void</span> <a class="code" href="adc_8c.html#ab8a50016236d402e27a7e1b7f0f4cf52">initADC</a> (<a class="code" href="adc_8h.html#a276c7770f520a2b96109d71d140ba4a5">ADC_Measurement_t</a> peripheral)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">/* Enable necessary clocks (just in case) */</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  CMU_ClockEnable(cmuClock_HFPER, <span class="keyword">true</span>); <span class="comment">/* ADC0 is a High Frequency Peripheral */</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  CMU_ClockEnable(cmuClock_ADC0, <span class="keyword">true</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">/* Set a timebase providing at least 1 us.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment"> * If the argument is "0" the currently defined HFPER clock setting is used. */</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="adc_8c.html#a643802e6534a4094866de9f51719ab15">init</a>.timebase = ADC_TimebaseCalc(0);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">/* Set a prescale value according to the ADC frequency (400 000 Hz) wanted.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"> * If the last argument is "0" the currently defined HFPER clock setting is for the calculation used. */</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="adc_8c.html#a643802e6534a4094866de9f51719ab15">init</a>.prescale = ADC_PrescaleCalc(400000, 0);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">/* Initialize ADC peripheral */</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  ADC_Init(ADC0, &<a class="code" href="adc_8c.html#a643802e6534a4094866de9f51719ab15">init</a>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">/* Setup single conversions */</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment">/* initSingle.acqTime = adcAcqTime16;</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment"> * The statement above was found in a SiLabs example but DRAMCO disabled it.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment"> * After testing this seemed to have no real effect so it was disabled.</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment"> * This is probably not necessary since a prescale value other than 0 (default) has been defined. */</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a536d05df6092745fa011adfed26e6312">INTERNAL_TEMPERATURE</a>) <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInpTemp; <span class="comment">/* Internal temperature */</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a33dfae05581973af118a10481e139aba">BATTERY_VOLTAGE</a>) <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInpVDDDiv3; <span class="comment">/* Internal VDD/3 */</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a703cf81b7a9530ba8650e0ee2f29d68e">CH1</a>)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInputCh4; <span class="comment">/* Channel 4 */</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.reference = adcRef2V5; <span class="comment">/* Internal 2V5 reference (1V25 default) */</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926ae574b39c34bd88c27ea641014831e53a">CH2</a>)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInputCh5; <span class="comment">/* Channel 5 */</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.reference = adcRef2V5; <span class="comment">/* Internal 2V5 reference (1V25 default) */</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926aaee6d12bf63ae430250764aa97e9e429">CH3</a>)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInputCh6; <span class="comment">/* Channel 6 */</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.reference = adcRef2V5; <span class="comment">/* Internal 2V5 reference (1V25 default) */</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926aad6a6b3e7230ebcbbb5a26385b11ade7">CH4</a>)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInputCh7; <span class="comment">/* Channel 7 */</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.reference = adcRef2V5; <span class="comment">/* Internal 2V5 reference (1V25 default) */</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="dbprint_8c.html#afbbbe6e04352a6b56d1d8a053ec4f941">dbcrit</a>(<span class="stringliteral">"Unknown ADC peripheral selected!"</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">/* Disable used clock */</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  CMU_ClockEnable(cmuClock_ADC0, <span class="keyword">false</span>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="util_8h.html#ab212081592c908bf57b591e3c6e7483d">error</a>(11);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">/* Exit function */</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  ADC_InitSingle(ADC0, &<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">/* Manually set some calibration values</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment"> * ADC0->CAL = (0x7C << _ADC_CAL_SINGLEOFFSET_SHIFT) | (0x1F << _ADC_CAL_SINGLEGAIN_SHIFT);</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment"> * The statement above was found in a SiLabs example but DRAMCO disabled it.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment"> * After testing this seemed to throw off the first measurement so it was disabled. */</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">/* Enable interrupt on completed conversion */</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  ADC_IntEnable(ADC0, ADC_IEN_SINGLE);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  NVIC_ClearPendingIRQ(ADC0_IRQn);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  NVIC_EnableIRQ(ADC0_IRQn);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">/* Disable used clock */</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  CMU_ClockEnable(cmuClock_ADC0, <span class="keyword">false</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a536d05df6092745fa011adfed26e6312">INTERNAL_TEMPERATURE</a>) <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"ADC0 initialized for internal temperature"</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a33dfae05581973af118a10481e139aba">BATTERY_VOLTAGE</a>) <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"ADC0 initialized for VBAT"</span>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a703cf81b7a9530ba8650e0ee2f29d68e">CH1</a>) <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"ADC0 initialized for CH1"</span>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926ae574b39c34bd88c27ea641014831e53a">CH2</a>) <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"ADC0 initialized for CH2"</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926aaee6d12bf63ae430250764aa97e9e429">CH3</a>) <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"ADC0 initialized for CH3"</span>);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926aad6a6b3e7230ebcbbb5a26385b11ade7">CH4</a>) <a class="code" href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a>(<span class="stringliteral">"ADC0 initialized for CH4"</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="comment"> * Method to read the battery voltage or internal temperature.</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="comment"> *</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="comment"> * @details</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment"> * This method re-initializes the ADC settings if necessary.@n</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment"> * **Negative internal temperatures work fine.**</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment"> *</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="comment"> * @param[in] peripheral</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="comment"> * Select the ADC peripheral to read from.</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment"> *</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="comment"> * @return</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="comment"> * The measured battery voltage or internal temperature.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="adc_8c.html#ac6cece90b77d0ba6c1afaf17f57bb790"> 189</a></span> <a class="code" href="vl53l1__types_8h.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> <a class="code" href="adc_8c.html#ac6cece90b77d0ba6c1afaf17f57bb790">readADC</a> (<a class="code" href="adc_8h.html#a276c7770f520a2b96109d71d140ba4a5">ADC_Measurement_t</a> peripheral)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="vl53l1__types_8h.html#a273cf69d639a59973b6019625df33e30">uint16_t</a> counter = 0; <span class="comment">/* Timeout counter */</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="vl53l1__types_8h.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> value = 0; <span class="comment">/* Value to eventually return */</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">/* Enable necessary clock */</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  CMU_ClockEnable(cmuClock_ADC0, <span class="keyword">true</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">/* Change ADC settings if necessary */</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a536d05df6092745fa011adfed26e6312">INTERNAL_TEMPERATURE</a>)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span> (<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input != adcSingleInpTemp)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInpTemp; <span class="comment">/* Internal temperature */</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.reference = adcRef1V25; <span class="comment">/* Internal 1V25 reference (default) */</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  ADC_InitSingle(ADC0, &<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a33dfae05581973af118a10481e139aba">BATTERY_VOLTAGE</a>)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span> (<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input != adcSingleInpVDDDiv3)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInpVDDDiv3; <span class="comment">/* Internal VDD/3 */</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.reference = adcRef1V25; <span class="comment">/* Internal 1V25 reference (default) */</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  ADC_InitSingle(ADC0, &<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a703cf81b7a9530ba8650e0ee2f29d68e">CH1</a>)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span> (<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input != adcSingleInputCh4)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInputCh4; <span class="comment">/* Channel 4 */</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.reference = adcRef2V5; <span class="comment">/* Internal 2V5 reference (1V25 default) */</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  ADC_InitSingle(ADC0, &<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926ae574b39c34bd88c27ea641014831e53a">CH2</a>)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">if</span> (<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input != adcSingleInputCh5)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInputCh5; <span class="comment">/* Channel 5 */</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.reference = adcRef2V5; <span class="comment">/* Internal 2V5 reference (1V25 default) */</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  ADC_InitSingle(ADC0, &<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926aaee6d12bf63ae430250764aa97e9e429">CH3</a>)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input != adcSingleInputCh6)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInputCh6; <span class="comment">/* Channel 6 */</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.reference = adcRef2V5; <span class="comment">/* Internal 2V5 reference (1V25 default) */</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  ADC_InitSingle(ADC0, &<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926aad6a6b3e7230ebcbbb5a26385b11ade7">CH4</a>)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">if</span> (<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input != adcSingleInputCh7)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.input = adcSingleInputCh7; <span class="comment">/* Channel 7 */</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>.reference = adcRef2V5; <span class="comment">/* Internal 2V5 reference (1V25 default) */</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  ADC_InitSingle(ADC0, &<a class="code" href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a>);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="dbprint_8c.html#afbbbe6e04352a6b56d1d8a053ec4f941">dbcrit</a>(<span class="stringliteral">"Unknown ADC peripheral selected!"</span>);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">/* Disable used clock */</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  CMU_ClockEnable(cmuClock_ADC0, <span class="keyword">false</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="util_8h.html#ab212081592c908bf57b591e3c6e7483d">error</a>(12);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">/* Exit function */</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">return</span> (0);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="comment">/* Set variable false just in case */</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="adc_8c.html#a06188fb5171000378979416d8d695df8">adcConversionComplete</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">/* Start single ADC conversion */</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  ADC_Start(ADC0, adcStartSingle);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">/* Wait until the conversion is completed */</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">while</span> ((counter < <a class="code" href="adc_8c.html#a2207a269d247f40650eb3463f3700b43">TIMEOUT_CONVERSION</a>) && !<a class="code" href="adc_8c.html#a06188fb5171000378979416d8d695df8">adcConversionComplete</a>) counter++;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">/* Exit the function if the maximum waiting time was reached */</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">if</span> (counter == <a class="code" href="adc_8c.html#a2207a269d247f40650eb3463f3700b43">TIMEOUT_CONVERSION</a>)</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="dbprint_8c.html#afbbbe6e04352a6b56d1d8a053ec4f941">dbcrit</a>(<span class="stringliteral">"Waiting time for ADC conversion reached!"</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">/* Disable used clock */</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  CMU_ClockEnable(cmuClock_ADC0, <span class="keyword">false</span>);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="util_8h.html#ab212081592c908bf57b591e3c6e7483d">error</a>(13);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">/* Exit function */</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> (0);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="preprocessor">#if DBPRINT_TIMEOUT == 1 </span><span class="comment">/* DBPRINT_TIMEOUT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="preprocessor">#if DEBUG_DBPRINT == 1 </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="dbprint_8c.html#ada27783fef89d9c9af4976baab87c477">dbwarnInt</a>(<span class="stringliteral">"ADC conversion ("</span>, counter, <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="preprocessor">#endif </span><span class="comment">/* DEBUG_DBPRINT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor">#endif </span><span class="comment">/* DBPRINT_TIMEOUT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">/* Get the ADC value */</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  value = ADC_DataSingleGet(ADC0);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="dbprint_8c.html#ada27783fef89d9c9af4976baab87c477">dbwarnInt</a>(<span class="stringliteral">"ADC value = "</span>, value, <span class="stringliteral">""</span>); <span class="comment">// Debugging</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="comment">/* Disable used clock */</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  CMU_ClockEnable(cmuClock_ADC0, <span class="keyword">false</span>);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">/* Calculate final value according to parameter */</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a536d05df6092745fa011adfed26e6312">INTERNAL_TEMPERATURE</a>)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  float32_t ft = <a class="code" href="adc_8c.html#a6615c226917d25973e391ded79092b15">convertToCelsius</a>(value)*1000;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  value = (<a class="code" href="vl53l1__types_8h.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>) ft;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a33dfae05581973af118a10481e139aba">BATTERY_VOLTAGE</a>)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="comment">/* 12 bit: 2^12 = 4096 */</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  float32_t fv = (value * 3.75) / 4.096;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  value = (<a class="code" href="vl53l1__types_8h.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>) fv;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a703cf81b7a9530ba8650e0ee2f29d68e">CH1</a> || peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926ae574b39c34bd88c27ea641014831e53a">CH2</a> || peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926aaee6d12bf63ae430250764aa97e9e429">CH3</a> || peripheral == <a class="code" href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926aad6a6b3e7230ebcbbb5a26385b11ade7">CH4</a>)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="comment">/* 2.5 = reference voltage</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="comment"> * 12 bit: 2^12 = 4096 (comma placement is for int32_t conversion...) */</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <a class="code" href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a>(<span class="stringliteral">"Here!"</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  float32_t fv = (value * 2.5) / 409.6;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  value = (<a class="code" href="vl53l1__types_8h.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a>) fv;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">return</span> (value);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment"> * Method to convert an ADC value to a temperature value.</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="comment"> *</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="comment"> * @note</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="comment"> * This is a static method because it's only internally used in this file</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="comment"> * and called by other methods if necessary.</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="comment"> *</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="comment"> * @param[in] adcSample</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="comment"> * The ADC sample to convert to a temperature value.</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="comment"> *</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="comment"> * @return</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="comment"> * The converted temperature value.</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="adc_8c.html#a6615c226917d25973e391ded79092b15"> 351</a></span> <span class="keyword">static</span> float32_t <a class="code" href="adc_8c.html#a6615c226917d25973e391ded79092b15">convertToCelsius</a> (<a class="code" href="vl53l1__types_8h.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> adcSample)</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  float32_t temp;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="comment">/* Factory calibration temperature from device information page. */</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="code" href="vl53l1__types_8h.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> cal_temp_0 = ((DEVINFO->CAL & _DEVINFO_CAL_TEMP_MASK)</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  >> _DEVINFO_CAL_TEMP_SHIFT);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="comment">/* Factory calibration value from device information page. */</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="vl53l1__types_8h.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a> cal_value_0 = ((DEVINFO->ADC0CAL2 & _DEVINFO_ADC0CAL2_TEMP1V25_MASK)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  >> _DEVINFO_ADC0CAL2_TEMP1V25_SHIFT);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="comment">/* Temperature gradient (from datasheet) */</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  float32_t t_grad = -6.27;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  temp = (cal_temp_0 - ((cal_value_0 - adcSample) / t_grad));</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">return</span> (temp);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="comment">/**************************************************************************/</span><span class="comment">/**</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="comment"> * @brief</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="comment"> * Interrupt Service Routine for ADC0.</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="adc_8c.html#a3611206d185a38b740457a748712c457"> 376</a></span> <span class="keywordtype">void</span> <a class="code" href="adc_8c.html#a3611206d185a38b740457a748712c457">ADC0_IRQHandler</a> (<span class="keywordtype">void</span>)</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="comment">/* Read interrupt flags */</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="vl53l1__types_8h.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a> flags = ADC_IntGet(ADC0);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="comment">/* Clear the ADC0 interrupt flags */</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  ADC_IntClear(ADC0, flags);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">/* Indicate that an ADC conversion has been completed */</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <a class="code" href="adc_8c.html#a06188fb5171000378979416d8d695df8">adcConversionComplete</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> }</div><div class="ttc" id="dbprint_8c_html_a5e059a469cca8341eb0a84e5c352f518"><div class="ttname"><a href="dbprint_8c.html#a5e059a469cca8341eb0a84e5c352f518">dbprintln</a></div><div class="ttdeci">void dbprintln(char *message)</div><div class="ttdoc">Print a string (char array) to USARTx and go to the next line. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00397">dbprint.c:397</a></div></div>
<div class="ttc" id="adc_8c_html_abb29b43e9ebffe8cabd440815ada000e"><div class="ttname"><a href="adc_8c.html#abb29b43e9ebffe8cabd440815ada000e">initSingle</a></div><div class="ttdeci">ADC_InitSingle_TypeDef initSingle</div><div class="ttdef"><b>Definition:</b> <a href="adc_8c_source.html#l00073">adc.c:73</a></div></div>
<div class="ttc" id="adc_8c_html_a3611206d185a38b740457a748712c457"><div class="ttname"><a href="adc_8c.html#a3611206d185a38b740457a748712c457">ADC0_IRQHandler</a></div><div class="ttdeci">void ADC0_IRQHandler(void)</div><div class="ttdoc">Interrupt Service Routine for ADC0. </div><div class="ttdef"><b>Definition:</b> <a href="adc_8c_source.html#l00376">adc.c:376</a></div></div>
<div class="ttc" id="adc_8h_html_a8d24200decb8cc61e4c749c435e80926aad6a6b3e7230ebcbbb5a26385b11ade7"><div class="ttname"><a href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926aad6a6b3e7230ebcbbb5a26385b11ade7">CH4</a></div><div class="ttdef"><b>Definition:</b> <a href="adc_8h_source.html#l00053">adc.h:53</a></div></div>
<div class="ttc" id="dbprint_8c_html_ada27783fef89d9c9af4976baab87c477"><div class="ttname"><a href="dbprint_8c.html#ada27783fef89d9c9af4976baab87c477">dbwarnInt</a></div><div class="ttdeci">void dbwarnInt(char *message1, int32_t value, char *message2)</div><div class="ttdoc">Print a warning value surrounded by two strings (char array) to USARTx. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00600">dbprint.c:600</a></div></div>
<div class="ttc" id="adc_8h_html_a8d24200decb8cc61e4c749c435e80926a703cf81b7a9530ba8650e0ee2f29d68e"><div class="ttname"><a href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a703cf81b7a9530ba8650e0ee2f29d68e">CH1</a></div><div class="ttdef"><b>Definition:</b> <a href="adc_8h_source.html#l00050">adc.h:50</a></div></div>
<div class="ttc" id="adc_8h_html"><div class="ttname"><a href="adc_8h.html">adc.h</a></div><div class="ttdoc">ADC functionality for reading the (battery) voltage and internal temperature. </div></div>
<div class="ttc" id="adc_8c_html_a2207a269d247f40650eb3463f3700b43"><div class="ttname"><a href="adc_8c.html#a2207a269d247f40650eb3463f3700b43">TIMEOUT_CONVERSION</a></div><div class="ttdeci">#define TIMEOUT_CONVERSION</div><div class="ttdef"><b>Definition:</b> <a href="adc_8c_source.html#l00067">adc.c:67</a></div></div>
<div class="ttc" id="dbprint_8c_html_acb5d4e1082c625ad85d835d4e053d4d8"><div class="ttname"><a href="dbprint_8c.html#acb5d4e1082c625ad85d835d4e053d4d8">dbinfo</a></div><div class="ttdeci">void dbinfo(char *message)</div><div class="ttdoc">Print an info string (char array) to USARTx and go to the next line. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00505">dbprint.c:505</a></div></div>
<div class="ttc" id="adc_8c_html_ac6cece90b77d0ba6c1afaf17f57bb790"><div class="ttname"><a href="adc_8c.html#ac6cece90b77d0ba6c1afaf17f57bb790">readADC</a></div><div class="ttdeci">int32_t readADC(ADC_Measurement_t peripheral)</div><div class="ttdoc">Method to read the battery voltage or internal temperature. </div><div class="ttdef"><b>Definition:</b> <a href="adc_8c_source.html#l00189">adc.c:189</a></div></div>
<div class="ttc" id="adc_8c_html_a6615c226917d25973e391ded79092b15"><div class="ttname"><a href="adc_8c.html#a6615c226917d25973e391ded79092b15">convertToCelsius</a></div><div class="ttdeci">static float32_t convertToCelsius(int32_t adcSample)</div><div class="ttdoc">Method to convert an ADC value to a temperature value. </div><div class="ttdef"><b>Definition:</b> <a href="adc_8c_source.html#l00351">adc.c:351</a></div></div>
<div class="ttc" id="adc_8c_html_a643802e6534a4094866de9f51719ab15"><div class="ttname"><a href="adc_8c.html#a643802e6534a4094866de9f51719ab15">init</a></div><div class="ttdeci">ADC_Init_TypeDef init</div><div class="ttdef"><b>Definition:</b> <a href="adc_8c_source.html#l00072">adc.c:72</a></div></div>
<div class="ttc" id="util_8h_html_ab212081592c908bf57b591e3c6e7483d"><div class="ttname"><a href="util_8h.html#ab212081592c908bf57b591e3c6e7483d">error</a></div><div class="ttdeci">void error(uint8_t number)</div><div class="ttdoc">Error method. </div><div class="ttdef"><b>Definition:</b> <a href="util_8c_source.html#l00122">util.c:122</a></div></div>
<div class="ttc" id="adc_8c_html_a06188fb5171000378979416d8d695df8"><div class="ttname"><a href="adc_8c.html#a06188fb5171000378979416d8d695df8">adcConversionComplete</a></div><div class="ttdeci">volatile bool adcConversionComplete</div><div class="ttdef"><b>Definition:</b> <a href="adc_8c_source.html#l00071">adc.c:71</a></div></div>
<div class="ttc" id="vl53l1__types_8h_html_a32f2e37ee053cf2ce8ca28d1f74630e5"><div class="ttname"><a href="vl53l1__types_8h.html#a32f2e37ee053cf2ce8ca28d1f74630e5">int32_t</a></div><div class="ttdeci">int int32_t</div><div class="ttdoc">Typedef defining 32 bit int type. The developer should modify this to suit the platform being deploye...</div><div class="ttdef"><b>Definition:</b> <a href="vl53l1__types_8h_source.html#l00083">vl53l1_types.h:83</a></div></div>
<div class="ttc" id="util_8h_html"><div class="ttname"><a href="util_8h.html">util.h</a></div><div class="ttdoc">Utility functionality. </div></div>
<div class="ttc" id="adc_8h_html_a8d24200decb8cc61e4c749c435e80926a33dfae05581973af118a10481e139aba"><div class="ttname"><a href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a33dfae05581973af118a10481e139aba">BATTERY_VOLTAGE</a></div><div class="ttdef"><b>Definition:</b> <a href="adc_8h_source.html#l00048">adc.h:48</a></div></div>
<div class="ttc" id="debug__dbprint_8h_html"><div class="ttname"><a href="debug__dbprint_8h.html">debug_dbprint.h</a></div><div class="ttdoc">Enable or disable printing to UART with dbprint. </div></div>
<div class="ttc" id="adc_8h_html_a8d24200decb8cc61e4c749c435e80926a536d05df6092745fa011adfed26e6312"><div class="ttname"><a href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926a536d05df6092745fa011adfed26e6312">INTERNAL_TEMPERATURE</a></div><div class="ttdef"><b>Definition:</b> <a href="adc_8h_source.html#l00049">adc.h:49</a></div></div>
<div class="ttc" id="adc_8c_html_ab8a50016236d402e27a7e1b7f0f4cf52"><div class="ttname"><a href="adc_8c.html#ab8a50016236d402e27a7e1b7f0f4cf52">initADC</a></div><div class="ttdeci">void initADC(ADC_Measurement_t peripheral)</div><div class="ttdoc">Method to initialize the ADC to later check the battery voltage or internal temperature. </div><div class="ttdef"><b>Definition:</b> <a href="adc_8c_source.html#l00087">adc.c:87</a></div></div>
<div class="ttc" id="adc_8h_html_a8d24200decb8cc61e4c749c435e80926ae574b39c34bd88c27ea641014831e53a"><div class="ttname"><a href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926ae574b39c34bd88c27ea641014831e53a">CH2</a></div><div class="ttdef"><b>Definition:</b> <a href="adc_8h_source.html#l00051">adc.h:51</a></div></div>
<div class="ttc" id="adc_8h_html_a8d24200decb8cc61e4c749c435e80926aaee6d12bf63ae430250764aa97e9e429"><div class="ttname"><a href="adc_8h.html#a8d24200decb8cc61e4c749c435e80926aaee6d12bf63ae430250764aa97e9e429">CH3</a></div><div class="ttdef"><b>Definition:</b> <a href="adc_8h_source.html#l00052">adc.h:52</a></div></div>
<div class="ttc" id="dbprint_8c_html_afbbbe6e04352a6b56d1d8a053ec4f941"><div class="ttname"><a href="dbprint_8c.html#afbbbe6e04352a6b56d1d8a053ec4f941">dbcrit</a></div><div class="ttdeci">void dbcrit(char *message)</div><div class="ttdoc">Print a critical error string (char array) in red to USARTx and go to the next line. </div><div class="ttdef"><b>Definition:</b> <a href="dbprint_8c_source.html#l00541">dbprint.c:541</a></div></div>
<div class="ttc" id="vl53l1__types_8h_html_a273cf69d639a59973b6019625df33e30"><div class="ttname"><a href="vl53l1__types_8h.html#a273cf69d639a59973b6019625df33e30">uint16_t</a></div><div class="ttdeci">unsigned short uint16_t</div><div class="ttdoc">Typedef defining 16 bit unsigned short type. The developer should modify this to suit the platform be...</div><div class="ttdef"><b>Definition:</b> <a href="vl53l1__types_8h_source.html#l00088">vl53l1_types.h:88</a></div></div>
<div class="ttc" id="adc_8h_html_a276c7770f520a2b96109d71d140ba4a5"><div class="ttname"><a href="adc_8h.html#a276c7770f520a2b96109d71d140ba4a5">ADC_Measurement_t</a></div><div class="ttdeci">enum adc_measurements ADC_Measurement_t</div></div>
<div class="ttc" id="vl53l1__types_8h_html_a435d1572bf3f880d55459d9805097f62"><div class="ttname"><a href="vl53l1__types_8h.html#a435d1572bf3f880d55459d9805097f62">uint32_t</a></div><div class="ttdeci">unsigned int uint32_t</div><div class="ttdoc">Typedef defining 32 bit unsigned int type. The developer should modify this to suit the platform bein...</div><div class="ttdef"><b>Definition:</b> <a href="vl53l1__types_8h_source.html#l00078">vl53l1_types.h:78</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_d9edf6c004b4a7ff14fe9ae7a92214ee.html">firmware</a></li><li class="navelem"><a class="el" href="dir_9a5a365c58dea0dc152d55f461feaba5.html">EFM32HG222F64_iot-mbbr</a></li><li class="navelem"><a class="el" href="dir_07cf71b65af3d7a9f5557ec1f8ea51c9.html">src</a></li><li class="navelem"><a class="el" href="adc_8c.html">adc.c</a></li>
<li class="footer">Generated on Thu Sep 3 2020 04:44:25 for IoT-MBBR (masterthesis) by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>
</div>
</body>
</html>