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

📄 main_8c.html

📁 使用AVR单片机控制步进电机的软件代码
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>AVR446 - Linear speed control of stepper motor: main.c File Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.7 --><div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div><h1>main.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>Demo of Linear speed ramp controller. <p>Demo of linear speed ramp controller. Control of stepper motor by the serial port. A menu gives the user status and shows the avaliable commands.<p><ul><li>File: <a class="el" href="main_8c.html">main.c</a></li><li>Compiler: IAR EWAAVR 4.11A</li><li>Supported devices: All devices with a 16 bit timer can be used. The example is written for ATmega48</li><li>AppNote: AVR446 - Linear speed control of stepper motor</li></ul><p><dl compact><dt><b>Author:</b></dt><dd>Atmel Corporation: <a href="http://www.atmel.com">http://www.atmel.com</a> <br> Support email: <a href="mailto:avr@atmel.com">avr@atmel.com</a></dd></dl><dl compact><dt><b>Name</b></dt><dd>RELEASE_1_0 </dd></dl><dl compact><dt><b>Revision</b></dt><dd>1.2 </dd></dl><dl compact><dt><b>RCSfile</b></dt><dd><a class="el" href="main_8c.html">main.c</a>,v </dd></dl><dl compact><dt><b>Date</b></dt><dd>2006/05/08 12:25:58 </dd></dl><p>Definition in file <a class="el" href="main_8c-source.html">main.c</a>.<p><code>#include &lt;ioavr.h&gt;</code><br><code>#include &lt;inavr.h&gt;</code><br><code>#include &lt;stdlib.h&gt;</code><br><code>#include "<a class="el" href="global_8h-source.html">global.h</a>"</code><br><code>#include "<a class="el" href="uart_8h-source.html">uart.h</a>"</code><br><code>#include "<a class="el" href="sm__driver_8h-source.html">sm_driver.h</a>"</code><br><code>#include "<a class="el" href="speed__cntr_8h-source.html">speed_cntr.h</a>"</code><br><p>Include dependency graph for main.c:<p><center><img src="main_8c__incl.png" border="0" usemap="#main.c_map" alt="Include dependency graph"></center><map name="main.c_map"><area href="global_8h.html" shape="rect" coords="266,7,335,34" alt=""><area href="uart_8h.html" shape="rect" coords="359,7,415,34" alt=""><area href="sm__driver_8h.html" shape="rect" coords="439,7,530,34" alt=""><area href="speed__cntr_8h.html" shape="rect" coords="554,7,652,34" alt=""></map><p><a href="main_8c-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a4">Init</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Init of peripheral devices.  <a href="#a4"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a5">main</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Demo of linear speed controller.  <a href="#a5"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a3">ShowData</a> (int position, int acceleration, int deceleration, int speed, int steps)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sends out data.  <a href="#a3"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a2">ShowHelp</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sends help message.  <a href="#a2"></a><br><br></td></tr><tr><td colspan=2><br><h2>Variables</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>__flash char&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a1">Help</a> [] = {"\n\r--------------------------------------------------------------\n\rAtmel AVR446 - Linear speed control of stepper motor\n\r\n\r? - Show help\n\ra [data] - Set acceleration (range: 71 - 32000)\n\rd [data] - Set deceleration (range: 71 - 32000)\n\rs [data] - Set speed (range: 12 - motor limit)\n\rm [data] - Move [data] steps (range: -64000 - 64000)\n\rmove [steps] [accel] [decel] [speed]\n\r - Move with all parameters given\n\r&lt;enter&gt; - Repeat last move\n\r\n\r acc/dec data given in 0.01*rad/sec^2 (100 = 1 rad/sec^2)\n\r speed data given in 0.01*rad/sec (100 = 1 rad/sec)\n\r--------------------------------------------------------------\n\r"}</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Help message.  <a href="#a1"></a><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="structGLOBAL__FLAGS.html">GLOBAL_FLAGS</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="main_8c.html#a0">status</a> = {FALSE, FALSE, 0}</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Global status flags.  <a href="#a0"></a><br><br></td></tr></table><hr><h2>Function Documentation</h2><a class="anchor" name="a4" doxytag="main.c::Init" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> void Init           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">void&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Init of peripheral devices. <p>Setup IO, uart, stepper, timer and interrupt. <p>Definition at line <a class="el" href="main_8c-source.html#l00042">42</a> of file <a class="el" href="main_8c-source.html">main.c</a>.<p>References <a class="el" href="uart_8c-source.html#l00045">InitUART()</a>, <a class="el" href="sm__driver_8c-source.html#l00049">sm_driver_Init_IO()</a>, <a class="el" href="sm__driver_8c-source.html#l00108">sm_driver_StepOutput()</a>, and <a class="el" href="speed__cntr_8c-source.html#l00143">speed_cntr_Init_Timer1()</a>.<p>Referenced by <a class="el" href="main_8c-source.html#l00062">main()</a>.<p><pre class="fragment"><div>00043 {00044   <span class="comment">// Init of IO pins</span>00045   <a class="code" href="sm__driver_8c.html#a6">sm_driver_Init_IO</a>();00046   <span class="comment">// Init of uart</span>00047   <a class="code" href="uart_8c.html#a6">InitUART</a>();00048 00049   <span class="comment">// Set stepper motor driver output</span>00050   <a class="code" href="sm__driver_8h.html#a12">sm_driver_StepOutput</a>(0);00051 00052   <span class="comment">// Init of Timer/Counter1</span>00053   <a class="code" href="speed__cntr_8c.html#a2">speed_cntr_Init_Timer1</a>();00054 00055   __enable_interrupt();00056 }</div></pre><p>Here is the call graph for this function:<p><center><img src="main_8c_a4_cgraph.png" border="0" usemap="#main_8c_a4_cgraph_map" alt=""></center><map name="main_8c_a4_cgraph_map"><area href="uart_8c.html#a6" shape="rect" coords="139,7,213,33" alt=""><area href="sm__driver_8c.html#a6" shape="rect" coords="112,57,240,84" alt=""><area href="sm__driver_8h.html#a12" shape="rect" coords="97,108,255,135" alt=""><area href="speed__cntr_8c.html#a2" shape="rect" coords="95,159,257,185" alt=""></map>    </td>  </tr></table><a class="anchor" name="a5" doxytag="main.c::main" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top"> void main           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">void&nbsp;</td>          <td class="mdname1" valign="top" nowrap>          </td>          <td class="md" valign="top">&nbsp;)&nbsp;</td>          <td class="md" nowrap></td>        </tr>      </table>    </td>  </tr></table><table cellspacing=5 cellpadding=0 border=0>  <tr>    <td>      &nbsp;    </td>    <td><p>Demo of linear speed controller. <p>Serial interface frontend to test linear speed controller. <p>Definition at line <a class="el" href="main_8c-source.html#l00062">62</a> of file <a class="el" href="main_8c-source.html">main.c</a>.<p>References <a class="el" href="global_8h-source.html#l00033">GLOBAL_FLAGS::cmd</a>, <a class="el" href="global_8h-source.html#l00025">FALSE</a>, <a class="el" href="main_8c-source.html#l00042">Init()</a>, <a class="el" href="global_8h-source.html#l00031">GLOBAL_FLAGS::running</a>, <a class="el" href="main_8c-source.html#l00190">ShowData()</a>, <a class="el" href="main_8c-source.html#l00173">ShowHelp()</a>, <a class="el" href="speed__cntr_8c-source.html#l00046">speed_cntr_Move()</a>, <a class="el" href="main_8c-source.html#l00033">status</a>, <a class="el" href="sm__driver_8c-source.html#l00045">stepPosition</a>, <a class="el" href="global_8h-source.html#l00024">TRUE</a>, <a class="el" href="uart_8c-source.html#l00135">uart_FlushRxBuffer()</a>, <a class="el" href="uart_8c-source.html#l00027">UART_RxBuffer</a>, and <a class="el" href="uart_8c-source.html#l00097">uart_SendString()</a>.<p><pre class="fragment"><div>00063 {00064   <span class="comment">// Number of steps to move.</span>00065   <span class="keywordtype">int</span> steps = 1000;00066   <span class="comment">// Accelration to use.</span>00067   <span class="keywordtype">int</span> acceleration = 100;00068   <span class="comment">// Deceleration to use.</span>00069   <span class="keywordtype">int</span> deceleration = 100;00070   <span class="comment">// Speed to use.</span>00071   <span class="keywordtype">int</span> speed = 800;00072   <span class="comment">// Tells if the received string was a valid command.</span>00073   <span class="keywordtype">char</span> okCmd = <a class="code" href="global_8h.html#a1">FALSE</a>;00074 00075   <a class="code" href="main_8c.html#a4">Init</a>();00076 00077   <span class="comment">// Outputs help screen.</span>00078   <a class="code" href="uart_8h.html#a9">uart_SendString</a>(<span class="stringliteral">"\n\r"</span>);00079   <a class="code" href="main_8c.html#a2">ShowHelp</a>();00080   <a class="code" href="main_8c.html#a3">ShowData</a>(stepPosition, acceleration, deceleration, speed, steps);00081 00082   <span class="keywordflow">while</span>(1) {00083     <span class="comment">// If a command is received, check the command and act on it.</span>00084     <span class="keywordflow">if</span>(<a class="code" href="main_8c.html#a0">status</a>.<a class="code" href="structGLOBAL__FLAGS.html#o0">cmd</a> == <a class="code" href="global_8h.html#a0">TRUE</a>){00085       <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[0] == <span class="charliteral">'m'</span>){00086         <span class="comment">// Move with...</span>00087         <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[1] == <span class="charliteral">' '</span>){00088           <span class="comment">// ...number of steps given.</span>00089           steps = atoi((<span class="keywordtype">char</span> <span class="keyword">const</span> *)UART_RxBuffer+2);00090           <a class="code" href="speed__cntr_8h.html#a12">speed_cntr_Move</a>(steps, acceleration, deceleration, speed);00091           okCmd = <a class="code" href="global_8h.html#a0">TRUE</a>;00092           <a class="code" href="uart_8h.html#a9">uart_SendString</a>(<span class="stringliteral">"\n\r  "</span>);00093         }00094         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[1] == <span class="charliteral">'o'</span>){00095           <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[2] == <span class="charliteral">'v'</span>){00096             <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[3] == <span class="charliteral">'e'</span>){00097               <span class="comment">// ...all parameters given</span>00098               <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[4] == <span class="charliteral">' '</span>){00099                 <span class="keywordtype">int</span> i = 6;00100                 steps = atoi((<span class="keywordtype">char</span> <span class="keyword">const</span> *)UART_RxBuffer+5);00101                 <span class="keywordflow">while</span>((<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[i] != <span class="charliteral">' '</span>) &amp;&amp; (<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[i] != 13)) i++;00102                 i++;00103                 acceleration = atoi((<span class="keywordtype">char</span> <span class="keyword">const</span> *)UART_RxBuffer+i);00104                 <span class="keywordflow">while</span>((<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[i] != <span class="charliteral">' '</span>) &amp;&amp; (<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[i] != 13)) i++;00105                 i++;00106                 deceleration = atoi((<span class="keywordtype">char</span> <span class="keyword">const</span> *)UART_RxBuffer+i);00107                 <span class="keywordflow">while</span>((<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[i] != <span class="charliteral">' '</span>) &amp;&amp; (<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[i] != 13)) i++;00108                 i++;00109                 speed = atoi((<span class="keywordtype">char</span> <span class="keyword">const</span> *)UART_RxBuffer+i);00110                 <a class="code" href="speed__cntr_8h.html#a12">speed_cntr_Move</a>(steps, acceleration, deceleration, speed);00111                 okCmd = <a class="code" href="global_8h.html#a0">TRUE</a>;00112                 <a class="code" href="uart_8h.html#a9">uart_SendString</a>(<span class="stringliteral">"\n\r  "</span>);00113               }00114             }00115           }00116         }00117       }00118       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[0] == <span class="charliteral">'a'</span>){00119         <span class="comment">// Set acceleration.</span>00120         <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[1] == <span class="charliteral">' '</span>){00121           acceleration = atoi((<span class="keywordtype">char</span> <span class="keyword">const</span> *)UART_RxBuffer+2);00122           okCmd = <a class="code" href="global_8h.html#a0">TRUE</a>;00123         }00124       }00125       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[0] == <span class="charliteral">'d'</span>){00126         <span class="comment">// Set deceleration.</span>00127         <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[1] == <span class="charliteral">' '</span>){00128           deceleration = atoi((<span class="keywordtype">char</span> <span class="keyword">const</span> *)UART_RxBuffer+2);00129           okCmd = <a class="code" href="global_8h.html#a0">TRUE</a>;00130         }00131       }00132       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[0] == <span class="charliteral">'s'</span>){00133         <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[1] == <span class="charliteral">' '</span>){00134           speed = atoi((<span class="keywordtype">char</span> <span class="keyword">const</span> *)UART_RxBuffer+2);00135           okCmd = <a class="code" href="global_8h.html#a0">TRUE</a>;00136         }00137       }00138       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[0] == 13){00139         <a class="code" href="speed__cntr_8h.html#a12">speed_cntr_Move</a>(steps, acceleration, deceleration, speed);00140         okCmd = <a class="code" href="global_8h.html#a0">TRUE</a>;00141       }00142       <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="uart_8c.html#a1">UART_RxBuffer</a>[0] == <span class="charliteral">'?'</span>){00143         <a class="code" href="main_8c.html#a2">ShowHelp</a>();00144         okCmd = <a class="code" href="global_8h.html#a0">TRUE</a>;00145       }00146 00147       <span class="comment">// Send help if invalid command is received.</span>00148       <span class="keywordflow">if</span>(okCmd != <a class="code" href="global_8h.html#a0">TRUE</a>)

⌨️ 快捷键说明

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