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

📄 encoder_8c-source.html

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