⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encoder_8c-source.html

📁 单片机的软件
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<a name="l00115"></a><a class="code" href="encoder_8h.html#a3">00115</a> <span class="keywordtype">void</span> <a class="code" href="encoder_8c.html#a2">encoderOff</a>(<span class="keywordtype">void</span>)00116 {00117     <span class="comment">// disable encoder interrupts</span>00118 <span class="preprocessor">    #ifdef ENC0_SIGNAL</span>00119 <span class="preprocessor"></span>        <span class="comment">// disable interrupts</span>00120         sbi(<a class="code" href="encoder_8h.html#a0">IMSK</a>, INT0);    <span class="comment">// ISMK is auto-defined in encoder.h</span>00121 <span class="preprocessor">    #endif</span>00122 <span class="preprocessor"></span><span class="preprocessor">    #ifdef ENC1_SIGNAL</span>00123 <span class="preprocessor"></span>        <span class="comment">// disable interrupts</span>00124         sbi(<a class="code" href="encoder_8h.html#a0">IMSK</a>, INT1);    <span class="comment">// ISMK is auto-defined in encoder.h</span>00125 <span class="preprocessor">    #endif</span>00126 <span class="preprocessor"></span><span class="preprocessor">    #ifdef ENC2_SIGNAL</span>00127 <span class="preprocessor"></span>        <span class="comment">// disable interrupts</span>00128         sbi(<a class="code" href="encoder_8h.html#a0">IMSK</a>, INT2);    <span class="comment">// ISMK is auto-defined in encoder.h</span>00129 <span class="preprocessor">    #endif</span>00130 <span class="preprocessor"></span><span class="preprocessor">    #ifdef ENC3_SIGNAL</span>00131 <span class="preprocessor"></span>        <span class="comment">// disable interrupts</span>00132         sbi(<a class="code" href="encoder_8h.html#a0">IMSK</a>, INT3);    <span class="comment">// ISMK is auto-defined in encoder.h</span>00133 <span class="preprocessor">    #endif</span>00134 <span class="preprocessor"></span>}00135 00136 <span class="comment">// encoderGetPosition() reads the current position of the encoder </span><a name="l00137"></a><a class="code" href="encoder_8h.html#a4">00137</a> s32 <a class="code" href="encoder_8c.html#a3">encoderGetPosition</a>(u08 encoderNum)00138 {00139     <span class="comment">// sanity check</span>00140     <span class="keywordflow">if</span>(encoderNum &lt; NUM_ENCODERS)00141         <span class="keywordflow">return</span> EncoderState[encoderNum].<a class="code" href="structstruct__EncoderState.html#o0">position</a>;00142     <span class="keywordflow">else</span>00143         <span class="keywordflow">return</span> 0;00144 }00145 00146 <span class="comment">// encoderSetPosition() sets the current position of the encoder</span><a name="l00147"></a><a class="code" href="encoder_8h.html#a5">00147</a> <span class="keywordtype">void</span> <a class="code" href="encoder_8c.html#a4">encoderSetPosition</a>(u08 encoderNum, s32 position)00148 {00149     <span class="comment">// sanity check</span>00150     <span class="keywordflow">if</span>(encoderNum &lt; NUM_ENCODERS)00151         EncoderState[encoderNum].<a class="code" href="structstruct__EncoderState.html#o0">position</a> = position;00152     <span class="comment">// else do nothing</span>00153 }00154 00155 <span class="preprocessor">#ifdef ENC0_SIGNAL</span>00156 <span class="preprocessor"></span><span class="comment">//! Encoder 0 interrupt handler</span>00157 <span class="comment"></span><a class="code" href="a2d_8c.html#a10">SIGNAL</a>(ENC0_SIGNAL)00158 {00159     <span class="comment">// encoder has generated a pulse</span>00160     <span class="comment">// check the relative phase of the input channels</span>00161     <span class="comment">// and update position accordingly</span>00162     <span class="keywordflow">if</span>( ((inb(ENC0_PHASEA_PORTIN) &amp; (1&lt;&lt;ENC0_PHASEA_PIN)) == 0) ^00163         ((inb(ENC0_PHASEB_PORTIN) &amp; (1&lt;&lt;ENC0_PHASEB_PIN)) == 0) )00164     {00165         EncoderState[0].<a class="code" href="structstruct__EncoderState.html#o0">position</a>++;00166     }00167     <span class="keywordflow">else</span>00168     {00169         EncoderState[0].<a class="code" href="structstruct__EncoderState.html#o0">position</a>--;00170     }00171 }00172 <span class="preprocessor">#endif</span>00173 <span class="preprocessor"></span>00174 <span class="preprocessor">#ifdef ENC1_SIGNAL</span>00175 <span class="preprocessor"></span><span class="comment">//! Encoder 1 interrupt handler</span>00176 <span class="comment"></span><a class="code" href="a2d_8c.html#a10">SIGNAL</a>(ENC1_SIGNAL)00177 {00178     <span class="comment">// encoder has generated a pulse</span>00179     <span class="comment">// check the relative phase of the input channels</span>00180     <span class="comment">// and update position accordingly</span>00181     <span class="keywordflow">if</span>( ((inb(ENC1_PHASEA_PORTIN) &amp; (1&lt;&lt;ENC1_PHASEA_PIN)) == 0) ^00182         ((inb(ENC1_PHASEB_PORTIN) &amp; (1&lt;&lt;ENC1_PHASEB_PIN)) == 0) )00183     {00184         EncoderState[1].<a class="code" href="structstruct__EncoderState.html#o0">position</a>++;00185     }00186     <span class="keywordflow">else</span>00187     {00188         EncoderState[1].<a class="code" href="structstruct__EncoderState.html#o0">position</a>--;00189     }00190 }00191 <span class="preprocessor">#endif</span>00192 <span class="preprocessor"></span>00193 <span class="preprocessor">#ifdef ENC2_SIGNAL</span>00194 <span class="preprocessor"></span><span class="comment">//! Encoder 2 interrupt handler</span>00195 <span class="comment"></span><a class="code" href="a2d_8c.html#a10">SIGNAL</a>(ENC2_SIGNAL)00196 {00197     <span class="comment">// encoder has generated a pulse</span>00198     <span class="comment">// check the relative phase of the input channels</span>00199     <span class="comment">// and update position accordingly</span>00200     <span class="keywordflow">if</span>( ((inb(ENC2_PHASEA_PORTIN) &amp; (1&lt;&lt;ENC2_PHASEA_PIN)) == 0) ^00201         ((inb(ENC2_PHASEB_PORTIN) &amp; (1&lt;&lt;ENC2_PHASEB_PIN)) == 0) )00202     {00203         EncoderState[2].<a class="code" href="structstruct__EncoderState.html#o0">position</a>++;00204     }00205     <span class="keywordflow">else</span>00206     {00207         EncoderState[2].<a class="code" href="structstruct__EncoderState.html#o0">position</a>--;00208     }00209 }00210 <span class="preprocessor">#endif</span>00211 <span class="preprocessor"></span>00212 <span class="preprocessor">#ifdef ENC3_SIGNAL</span>00213 <span class="preprocessor"></span><span class="comment">//! Encoder 3 interrupt handler</span>00214 <span class="comment"></span><a class="code" href="a2d_8c.html#a10">SIGNAL</a>(ENC3_SIGNAL)00215 {00216     <span class="comment">// encoder has generated a pulse</span>00217     <span class="comment">// check the relative phase of the input channels</span>00218     <span class="comment">// and update position accordingly</span>00219     <span class="keywordflow">if</span>( ((inb(ENC3_PHASEA_PORTIN) &amp; (1&lt;&lt;ENC3_PHASEA_PIN)) == 0) ^00220         ((inb(ENC3_PHASEB_PORTIN) &amp; (1&lt;&lt;ENC3_PHASEB_PIN)) == 0) )00221     {00222         EncoderState[3].<a class="code" href="structstruct__EncoderState.html#o0">position</a>++;00223     }00224     <span class="keywordflow">else</span>00225     {00226         EncoderState[3].<a class="code" href="structstruct__EncoderState.html#o0">position</a>--;00227     }00228 }00229 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Aug 22 04:29:27 2005 for Procyon AVRlib by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -