📄 encoder_8c-source.html
字号:
<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 < 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 < 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) & (1<<ENC0_PHASEA_PIN)) == 0) ^00163 ((inb(ENC0_PHASEB_PORTIN) & (1<<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) & (1<<ENC1_PHASEA_PIN)) == 0) ^00182 ((inb(ENC1_PHASEB_PORTIN) & (1<<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) & (1<<ENC2_PHASEA_PIN)) == 0) ^00201 ((inb(ENC2_PHASEB_PORTIN) & (1<<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) & (1<<ENC3_PHASEA_PIN)) == 0) ^00220 ((inb(ENC3_PHASEB_PORTIN) & (1<<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 <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 + -