satnogs-rotator-firmware/doxygen_files/html/as5601_8h_source.html

103 lines
32 KiB
HTML

<!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.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>satnogs-rotator-firmware: libraries/as5601.h 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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></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">satnogs-rotator-firmware
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_bc0718b08fb2015b8e59c47b2805f60c.html">libraries</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">as5601.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="as5601_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#ifndef AS5601_H_</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#define AS5601_H_</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;Wire.h&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="as5601_8h.html#a8b7500a141450a9df212017430c0df9e"> 17</a></span>&#160;<span class="preprocessor">#define I2C_FREQ 100000</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="as5601_8h.html#a25c5389b80876b6074ce88c6572b2296"> 19</a></span>&#160;<span class="preprocessor">#define AS5601_ID 0x36</span></div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="as5601_8h.html#a0f32fbf0619653f8582cfbb9b5022868"> 20</a></span>&#160;<span class="preprocessor">#define RAW_ANG_HIGH 0x0C</span></div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="as5601_8h.html#a60e1d311be398853144f59e1d2a37be1"> 21</a></span>&#160;<span class="preprocessor">#define RAW_ANG_LOW 0x0D</span></div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="as5601_8h.html#a1f7e79cfe81dc06414550fa52418941e"> 22</a></span>&#160;<span class="preprocessor">#define STATUS_REG 0x0B</span></div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="as5601_8h.html#a6b14c0a97e1a526bf898cd24de183afb"> 23</a></span>&#160;<span class="preprocessor">#define AGC 0x1A</span></div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="as5601_8h.html#a44cb76675b777aed3142556943702c80"> 24</a></span>&#160;<span class="preprocessor">#define MAGNITUDE_HIGH 0x1B</span></div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="as5601_8h.html#a27977fa09cf94bdf6e6f0f3d78d29c2e"> 25</a></span>&#160;<span class="preprocessor">#define MAGNITUDE_LOW 0x1C</span></div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="as5601_8h.html#a50a238669bcc55ea8d1e6cdc48cf0193"> 26</a></span>&#160;<span class="preprocessor">#define CONF_HIGH 0x07</span></div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="as5601_8h.html#a5a7b8dcb28f171791bc1d12c6fd88a7f"> 27</a></span>&#160;<span class="preprocessor">#define CONF_LOW 0x08</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classAS5601.html"> 35</a></span>&#160;<span class="keyword">class </span><a class="code" href="classAS5601.html">AS5601</a> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classAS5601.html#a51af9d44432ad5ccaa764a98d2450ec3"> 43</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAS5601.html#a51af9d44432ad5ccaa764a98d2450ec3">Begin</a>() {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; Wire.begin();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Wire.setClock(<a class="code" href="as5601_8h.html#a8b7500a141450a9df212017430c0df9e">I2C_FREQ</a>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classAS5601.html#a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5"> 59</a></span>&#160; uint8_t <a class="code" href="classAS5601.html#a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5">get_pos</a>(<span class="keywordtype">double</span> *new_pos) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; uint16_t raw_angle;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; uint8_t status_val;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">float</span> raw_pos = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">float</span> delta_raw_pos = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">float</span> real_pos = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; raw_angle = <a class="code" href="classAS5601.html#a2d48c32082d4bfa19bde77d614cc78dc">i2c_word_transaction</a>(<a class="code" href="as5601_8h.html#a25c5389b80876b6074ce88c6572b2296">AS5601_ID</a>, <a class="code" href="as5601_8h.html#a0f32fbf0619653f8582cfbb9b5022868">RAW_ANG_HIGH</a>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// Read Status Bits</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; status_val = <a class="code" href="classAS5601.html#afcac1b1abeeea88e465694373136168a">i2c_byte_transaction</a>(<a class="code" href="as5601_8h.html#a25c5389b80876b6074ce88c6572b2296">AS5601_ID</a>, <a class="code" href="as5601_8h.html#a1f7e79cfe81dc06414550fa52418941e">STATUS_REG</a>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">// Check the status register</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span> ((status_val &amp; 0x20) &amp;&amp; !(status_val &amp; 0x10)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; &amp;&amp; !(status_val &amp; 0x08)) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="comment">// Convert raw value to angle in deg</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; raw_pos = (float) raw_angle * 0.0879;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Unwrap the angle</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; delta_raw_pos = <a class="code" href="classAS5601.html#a104f193f38617cb45e2af426f10971af">_raw_prev_pos</a> - raw_pos;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (delta_raw_pos &gt; 180)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="classAS5601.html#a6524caff1a797ace0b48dfcad375f37a">_n</a>++;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (delta_raw_pos &lt; -180)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="classAS5601.html#a6524caff1a797ace0b48dfcad375f37a">_n</a>--;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// Calculate the real angle</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; real_pos = - ((raw_pos + 360 * <a class="code" href="classAS5601.html#a6524caff1a797ace0b48dfcad375f37a">_n</a>) / <a class="code" href="classAS5601.html#a6523b0a1e1d9451b1df96398e7212b90">_enc_ratio</a>) - <a class="code" href="classAS5601.html#a9b2058241b8e88142e6376ac5a8abeb4">_angle_offset</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classAS5601.html#a104f193f38617cb45e2af426f10971af">_raw_prev_pos</a> = raw_pos;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; *new_pos = (double)real_pos;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> status_val;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classAS5601.html#ad8192e27c57aaef265e0649876ca6bf2"> 96</a></span>&#160; uint8_t <a class="code" href="classAS5601.html#ad8192e27c57aaef265e0649876ca6bf2">get_agc</a>() {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classAS5601.html#afcac1b1abeeea88e465694373136168a">i2c_byte_transaction</a>(<a class="code" href="as5601_8h.html#a25c5389b80876b6074ce88c6572b2296">AS5601_ID</a>, <a class="code" href="as5601_8h.html#a6b14c0a97e1a526bf898cd24de183afb">AGC</a>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classAS5601.html#a6fd828b9871407420fb8a277d13e769c"> 106</a></span>&#160; uint16_t <a class="code" href="classAS5601.html#a6fd828b9871407420fb8a277d13e769c">get_magnitude</a>() {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classAS5601.html#a2d48c32082d4bfa19bde77d614cc78dc">i2c_word_transaction</a>(<a class="code" href="as5601_8h.html#a25c5389b80876b6074ce88c6572b2296">AS5601_ID</a>, <a class="code" href="as5601_8h.html#a44cb76675b777aed3142556943702c80">MAGNITUDE_HIGH</a>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classAS5601.html#abfce6bb3f9888bca6c8527ea0d4fad88"> 116</a></span>&#160; uint16_t <a class="code" href="classAS5601.html#abfce6bb3f9888bca6c8527ea0d4fad88">get_conf</a>() {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classAS5601.html#a2d48c32082d4bfa19bde77d614cc78dc">i2c_word_transaction</a>(<a class="code" href="as5601_8h.html#a25c5389b80876b6074ce88c6572b2296">AS5601_ID</a>, <a class="code" href="as5601_8h.html#a50a238669bcc55ea8d1e6cdc48cf0193">CONF_HIGH</a>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classAS5601.html#af760a7dd400974baf9daebad22920bdb"> 129</a></span>&#160; uint8_t <a class="code" href="classAS5601.html#af760a7dd400974baf9daebad22920bdb">set_zero</a>() {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">double</span> current_pos;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; uint8_t status_val = <a class="code" href="classAS5601.html#a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5">get_pos</a>(&amp;current_pos);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classAS5601.html#a9b2058241b8e88142e6376ac5a8abeb4">_angle_offset</a> = current_pos;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> status_val;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classAS5601.html#a865a4971a787bbdb9ff64fd31e2eb348"> 141</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAS5601.html#a865a4971a787bbdb9ff64fd31e2eb348">init_zero</a>() {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classAS5601.html#a9b2058241b8e88142e6376ac5a8abeb4">_angle_offset</a> = 0.0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">/**************************************************************************/</span></div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classAS5601.html#aeb9eb168d26d44261dc37d4ca54ae24f"> 152</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classAS5601.html#aeb9eb168d26d44261dc37d4ca54ae24f">set_gear_ratio</a>(uint8_t enc_ratio) {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classAS5601.html#a6523b0a1e1d9451b1df96398e7212b90">_enc_ratio</a> = enc_ratio;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classAS5601.html#a9b2058241b8e88142e6376ac5a8abeb4"> 157</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classAS5601.html#a9b2058241b8e88142e6376ac5a8abeb4">_angle_offset</a> = 0;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classAS5601.html#a6524caff1a797ace0b48dfcad375f37a"> 158</a></span>&#160; int32_t <a class="code" href="classAS5601.html#a6524caff1a797ace0b48dfcad375f37a">_n</a> = 0;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classAS5601.html#a104f193f38617cb45e2af426f10971af"> 159</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classAS5601.html#a104f193f38617cb45e2af426f10971af">_raw_prev_pos</a> = 0;</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classAS5601.html#a6523b0a1e1d9451b1df96398e7212b90"> 160</a></span>&#160; uint8_t <a class="code" href="classAS5601.html#a6523b0a1e1d9451b1df96398e7212b90">_enc_ratio</a> = 0;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classAS5601.html#afcac1b1abeeea88e465694373136168a"> 162</a></span>&#160; uint8_t <a class="code" href="classAS5601.html#afcac1b1abeeea88e465694373136168a">i2c_byte_transaction</a>(uint8_t i2c_address, uint8_t i2c_register) {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; Wire.beginTransmission(i2c_address);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; Wire.write(i2c_register);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; Wire.endTransmission();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; Wire.requestFrom(i2c_address, (uint8_t) 1);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">while</span> (Wire.available() == 0)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; ;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> Wire.read();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classAS5601.html#a2d48c32082d4bfa19bde77d614cc78dc"> 172</a></span>&#160; uint16_t <a class="code" href="classAS5601.html#a2d48c32082d4bfa19bde77d614cc78dc">i2c_word_transaction</a>(uint8_t i2c_address,uint8_t i2c_register) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; uint8_t word_high = <a class="code" href="classAS5601.html#afcac1b1abeeea88e465694373136168a">i2c_byte_transaction</a>(i2c_address, i2c_register);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; uint8_t word_low = <a class="code" href="classAS5601.html#afcac1b1abeeea88e465694373136168a">i2c_byte_transaction</a>(i2c_address, i2c_register + 1);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> ((word_high &lt;&lt; 8) | word_low);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;};</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* AS5601_H_ */</span><span class="preprocessor"></span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="ttc" id="classAS5601_html_abfce6bb3f9888bca6c8527ea0d4fad88"><div class="ttname"><a href="classAS5601.html#abfce6bb3f9888bca6c8527ea0d4fad88">AS5601::get_conf</a></div><div class="ttdeci">uint16_t get_conf()</div><div class="ttdoc">Get the configuration register. </div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00116">as5601.h:116</a></div></div>
<div class="ttc" id="classAS5601_html_a6524caff1a797ace0b48dfcad375f37a"><div class="ttname"><a href="classAS5601.html#a6524caff1a797ace0b48dfcad375f37a">AS5601::_n</a></div><div class="ttdeci">int32_t _n</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00158">as5601.h:158</a></div></div>
<div class="ttc" id="classAS5601_html_aeb9eb168d26d44261dc37d4ca54ae24f"><div class="ttname"><a href="classAS5601.html#aeb9eb168d26d44261dc37d4ca54ae24f">AS5601::set_gear_ratio</a></div><div class="ttdeci">void set_gear_ratio(uint8_t enc_ratio)</div><div class="ttdoc">Set the gear ratio between encoder and measure axis. </div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00152">as5601.h:152</a></div></div>
<div class="ttc" id="as5601_8h_html_a25c5389b80876b6074ce88c6572b2296"><div class="ttname"><a href="as5601_8h.html#a25c5389b80876b6074ce88c6572b2296">AS5601_ID</a></div><div class="ttdeci">#define AS5601_ID</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00019">as5601.h:19</a></div></div>
<div class="ttc" id="classAS5601_html_afcac1b1abeeea88e465694373136168a"><div class="ttname"><a href="classAS5601.html#afcac1b1abeeea88e465694373136168a">AS5601::i2c_byte_transaction</a></div><div class="ttdeci">uint8_t i2c_byte_transaction(uint8_t i2c_address, uint8_t i2c_register)</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00162">as5601.h:162</a></div></div>
<div class="ttc" id="as5601_8h_html_a44cb76675b777aed3142556943702c80"><div class="ttname"><a href="as5601_8h.html#a44cb76675b777aed3142556943702c80">MAGNITUDE_HIGH</a></div><div class="ttdeci">#define MAGNITUDE_HIGH</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00024">as5601.h:24</a></div></div>
<div class="ttc" id="classAS5601_html_a104f193f38617cb45e2af426f10971af"><div class="ttname"><a href="classAS5601.html#a104f193f38617cb45e2af426f10971af">AS5601::_raw_prev_pos</a></div><div class="ttdeci">float _raw_prev_pos</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00159">as5601.h:159</a></div></div>
<div class="ttc" id="classAS5601_html_af760a7dd400974baf9daebad22920bdb"><div class="ttname"><a href="classAS5601.html#af760a7dd400974baf9daebad22920bdb">AS5601::set_zero</a></div><div class="ttdeci">uint8_t set_zero()</div><div class="ttdoc">Set zero by setting offset angle. </div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00129">as5601.h:129</a></div></div>
<div class="ttc" id="as5601_8h_html_a8b7500a141450a9df212017430c0df9e"><div class="ttname"><a href="as5601_8h.html#a8b7500a141450a9df212017430c0df9e">I2C_FREQ</a></div><div class="ttdeci">#define I2C_FREQ</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00017">as5601.h:17</a></div></div>
<div class="ttc" id="classAS5601_html_a6fd828b9871407420fb8a277d13e769c"><div class="ttname"><a href="classAS5601.html#a6fd828b9871407420fb8a277d13e769c">AS5601::get_magnitude</a></div><div class="ttdeci">uint16_t get_magnitude()</div><div class="ttdoc">Get the magnitude value of the internal CORDIC output. </div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00106">as5601.h:106</a></div></div>
<div class="ttc" id="classAS5601_html"><div class="ttname"><a href="classAS5601.html">AS5601</a></div><div class="ttdoc">Class that functions for interacting with AS5601 magnetic rotary position sensor. ...</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00035">as5601.h:35</a></div></div>
<div class="ttc" id="classAS5601_html_a9b2058241b8e88142e6376ac5a8abeb4"><div class="ttname"><a href="classAS5601.html#a9b2058241b8e88142e6376ac5a8abeb4">AS5601::_angle_offset</a></div><div class="ttdeci">double _angle_offset</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00157">as5601.h:157</a></div></div>
<div class="ttc" id="as5601_8h_html_a50a238669bcc55ea8d1e6cdc48cf0193"><div class="ttname"><a href="as5601_8h.html#a50a238669bcc55ea8d1e6cdc48cf0193">CONF_HIGH</a></div><div class="ttdeci">#define CONF_HIGH</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00026">as5601.h:26</a></div></div>
<div class="ttc" id="classAS5601_html_ad8192e27c57aaef265e0649876ca6bf2"><div class="ttname"><a href="classAS5601.html#ad8192e27c57aaef265e0649876ca6bf2">AS5601::get_agc</a></div><div class="ttdeci">uint8_t get_agc()</div><div class="ttdoc">Calculate the automatic gain control (AGC) </div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00096">as5601.h:96</a></div></div>
<div class="ttc" id="as5601_8h_html_a6b14c0a97e1a526bf898cd24de183afb"><div class="ttname"><a href="as5601_8h.html#a6b14c0a97e1a526bf898cd24de183afb">AGC</a></div><div class="ttdeci">#define AGC</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00023">as5601.h:23</a></div></div>
<div class="ttc" id="classAS5601_html_a6523b0a1e1d9451b1df96398e7212b90"><div class="ttname"><a href="classAS5601.html#a6523b0a1e1d9451b1df96398e7212b90">AS5601::_enc_ratio</a></div><div class="ttdeci">uint8_t _enc_ratio</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00160">as5601.h:160</a></div></div>
<div class="ttc" id="classAS5601_html_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5"><div class="ttname"><a href="classAS5601.html#a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5">AS5601::get_pos</a></div><div class="ttdeci">uint8_t get_pos(double *new_pos)</div><div class="ttdoc">Calculate an unwrap the position. </div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00059">as5601.h:59</a></div></div>
<div class="ttc" id="as5601_8h_html_a0f32fbf0619653f8582cfbb9b5022868"><div class="ttname"><a href="as5601_8h.html#a0f32fbf0619653f8582cfbb9b5022868">RAW_ANG_HIGH</a></div><div class="ttdeci">#define RAW_ANG_HIGH</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00020">as5601.h:20</a></div></div>
<div class="ttc" id="classAS5601_html_a51af9d44432ad5ccaa764a98d2450ec3"><div class="ttname"><a href="classAS5601.html#a51af9d44432ad5ccaa764a98d2450ec3">AS5601::Begin</a></div><div class="ttdeci">void Begin()</div><div class="ttdoc">Initialize the I2C bus. </div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00043">as5601.h:43</a></div></div>
<div class="ttc" id="as5601_8h_html_a1f7e79cfe81dc06414550fa52418941e"><div class="ttname"><a href="as5601_8h.html#a1f7e79cfe81dc06414550fa52418941e">STATUS_REG</a></div><div class="ttdeci">#define STATUS_REG</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00022">as5601.h:22</a></div></div>
<div class="ttc" id="classAS5601_html_a865a4971a787bbdb9ff64fd31e2eb348"><div class="ttname"><a href="classAS5601.html#a865a4971a787bbdb9ff64fd31e2eb348">AS5601::init_zero</a></div><div class="ttdeci">void init_zero()</div><div class="ttdoc">Reset zero position set the offset to zero. </div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00141">as5601.h:141</a></div></div>
<div class="ttc" id="classAS5601_html_a2d48c32082d4bfa19bde77d614cc78dc"><div class="ttname"><a href="classAS5601.html#a2d48c32082d4bfa19bde77d614cc78dc">AS5601::i2c_word_transaction</a></div><div class="ttdeci">uint16_t i2c_word_transaction(uint8_t i2c_address, uint8_t i2c_register)</div><div class="ttdef"><b>Definition:</b> <a href="as5601_8h_source.html#l00172">as5601.h:172</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>