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

📄 main_8c.html

📁 Atmel算法(pid)-步进电机驱动源码 HOWTO,不好用你找我,绝对ok!
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<!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>AVR447: Sine wave driving of three phase motor: main.c File Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.4.4 --><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>Motor control implementation. <p>This file contains the full implementation of the motor control, except the PID-controller.<p><dl compact><dt><b>Application note:</b></dt><dd>AVR447: Sinusoidal driving of three-phase permanent motor using ATmega48/88/168</dd></dl><dl compact><dt><b>Documentation</b></dt><dd>For comprehensive code documentation, supported compilers, compiler settings and supported devices see readme.html</dd></dl><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.8 </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/03/27 07:20:51 </dd></dl><br><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 &quot;<a class="el" href="stdint_8h-source.html">stdint.h</a>&quot;</code><br><code>#include &quot;<a class="el" href="PMSM_8h-source.html">PMSM.h</a>&quot;</code><br><code>#include &quot;<a class="el" href="PMSMtables_8h-source.html">PMSMtables.h</a>&quot;</code><br><p>Include dependency graph for main.c:<p><center><img src="main_8c__incl.png" border="0" usemap="#main.c_map" alt=""></center><map name="main.c_map"><area href="stdint_8h.html" shape="rect" coords="140,107,204,133" alt=""><area href="PMSM_8h.html" shape="rect" coords="136,157,208,184" alt=""><area href="PMSMtables_8h.html" shape="rect" coords="117,208,227,235" 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">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a27">ActualDirectionUpdate</a> (<a class="el" href="stdint_8h.html#a56">uint8_t</a> lastHall, const <a class="el" href="stdint_8h.html#a56">uint8_t</a> newHall)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates global actual direction flag based on the two latest hall values.  <a href="#a27"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__interrupt void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a43">ADCCompleteISR</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">AD conversion complete interrupt service routine.  <a href="#a43"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a14">ADCInit</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes the ADC.  <a href="#a14"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a31">AdjustSineTableIndex</a> (const <a class="el" href="stdint_8h.html#a58">uint16_t</a> increment)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Adjusts the sine table index according to the current increment.  <a href="#a31"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a24">BlockCommutate</a> (const <a class="el" href="stdint_8h.html#a56">uint8_t</a> direction, <a class="el" href="stdint_8h.html#a56">uint8_t</a> hall)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Performs block commutation according to running direction and hall sensor input.  <a href="#a24"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a21">BlockCommutationSetDuty</a> (const <a class="el" href="stdint_8h.html#a56">uint8_t</a> duty)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets duty cycle for block commutation.  <a href="#a21"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a15">CheckEmergencyShutdown</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Checks whether emergency shutdown is set at startup.  <a href="#a15"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a36">CommutationTicksUpdate</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates the 'tick' counter and checks for stopped motor.  <a href="#a36"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a26">DesiredDirectionUpdate</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates global desired direction flag.  <a href="#a26"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__interrupt void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a41">DirectionInputChangeISR</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Direction input change interrupt service routine.  <a href="#a41"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a35">DisablePWMOutputs</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disables PWM output pins.  <a href="#a35"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__interrupt void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a39">EmergencyInterruptISR</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Emergency shut-off interrupt service routine.  <a href="#a39"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a34">EnablePWMOutputs</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enables PWM output pins.  <a href="#a34"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a23">GetActualDirection</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the actual direction of the motor.  <a href="#a23"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a22">GetDesiredDirection</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the desired direction.  <a href="#a22"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a25">GetHall</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reads the hall sensor inputs.  <a href="#a25"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__interrupt void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a40">HallChangeISR</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Hall sensor change interrupt service routine.  <a href="#a40"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a29">InsertDeadband</a> (const <a class="el" href="stdint_8h.html#a56">uint8_t</a> compareValue, <a class="el" href="stdint_8h.html#a56">uint8_t</a> *compareHighPtr, <a class="el" href="stdint_8h.html#a56">uint8_t</a> *compareLowPtr)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the high and low values with deadband for a given compare value.  <a href="#a29"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a38">IsMotorSynchronized</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns the motor synchronized flag.  <a href="#a38"></a><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#a10">main</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Main function / initialization.  <a href="#a10"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a37">MotorSynchronizedUpdate</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates the global motor synchronized flag.  <a href="#a37"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a13">PinChangeIntInit</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize pin change interrupts.  <a href="#a13"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a11">PortsInit</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes I/O port directions and pull-up resistors.  <a href="#a11"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a28">ReverseRotationSignalUpdate</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates the reverse rotation signal output pin value.  <a href="#a28"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a32">SetAdvanceCommutation</a> (const <a class="el" href="stdint_8h.html#a56">uint8_t</a> advanceCommutation)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the lead angle.  <a href="#a32"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="stdint_8h.html#a58">uint16_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a30">SineTableIncrementCalculate</a> (const <a class="el" href="stdint_8h.html#a58">uint16_t</a> ticks)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Calculates the increment for sine table iteration.  <a href="#a30"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a16">SpeedController</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Speed regulator loop.  <a href="#a16"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a33">TachoOutputUpdate</a> (const <a class="el" href="stdint_8h.html#a56">uint8_t</a> hall)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates the tacho output pin signal.  <a href="#a33"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__interrupt void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a42">Timer1CaptureISR</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Timer1 Capture Evente interrupt service routine.  <a href="#a42"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a12">TimersInit</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes and synchronizes Timers.  <a href="#a12"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a18">TimersSetModeBlockCommutation</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures timers for block commutation.  <a href="#a18"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a19">TimersSetModeBrake</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures timers for braking and starts braking.  <a href="#a19"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a17">TimersSetModeSinusoidal</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Configures timers for sine wave generation.  <a href="#a17"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a20">TimersWaitForNextPWMCycle</a> (void)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Waits for the start of the next PWM cycle.  <a href="#a20"></a><br></td></tr><tr><td colspan="2"><br><h2>Variables</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__no_init __regvar volatile <br><a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a5">advanceCommutationSteps</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The lead angle or advance commutation angle.  <a href="#a5"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__no_init __regvar volatile <br><a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a4">amplitude</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The amplitude of the generated sine waves.  <a href="#a4"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__no_init __regvar volatile <br><a class="el" href="stdint_8h.html#a58">uint16_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a3">commutationTicks</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The number of 'ticks' between two hall sensor changes.  <a href="#a3"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">volatile <a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a7">current</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Current measurement.  <a href="#a7"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__no_init __regvar volatile <br><a class="el" href="stdint_8h.html#a58">uint16_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a1">sineTableIncrement</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Increment used for sine table iteration.  <a href="#a1"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__no_init __regvar volatile <br><a class="el" href="stdint_8h.html#a58">uint16_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a2">sineTableIndex</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Index into sine table.  <a href="#a2"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__no_init __regvar volatile <br><a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a6">sineTableNextSectorStart</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Index to the end of the current commutation sector.  <a href="#a6"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">volatile <a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a9">SpeedControllerRun</a> = FALSE</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Speed controller run flag.  <a href="#a9"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">volatile <a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a8">speedInput</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The most recent speed input measurement.  <a href="#a8"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">__io volatile <a class="el" href="structPMSMflags.html">PMSMflags_t</a> <br>fastFlags&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="main_8c.html#a0">x1e</a></td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Motor control flags placed in I/O space for fast access.  <a href="#a0"></a><br></td></tr></table><hr><h2>Function Documentation</h2><a class="anchor" name="a27"></a><!-- doxytag: member="main.c::ActualDirectionUpdate" ref="a27" args="(uint8_t lastHall, const uint8_t newHall)" --><p><table class="mdTable" cellpadding="2" cellspacing="0">  <tr>    <td class="mdRow">      <table cellpadding="0" cellspacing="0" border="0">        <tr>          <td class="md" nowrap valign="top">static void ActualDirectionUpdate           </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top"><a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td>          <td class="mdname" nowrap> <em>lastHall</em>, </td>        </tr>        <tr>          <td class="md" nowrap align="right"></td>          <td class="md"></td>          <td class="md" nowrap>const <a class="el" href="stdint_8h.html#a56">uint8_t</a>&nbsp;</td>          <td class="mdname" nowrap> <em>newHall</em></td>        </tr>        <tr>          <td class="md"></td>          <td class="md">)&nbsp;</td>          <td class="md" colspan="2"><code> [static]</code></td>        </tr>      </table>    </td>  </tr></table><table cellspacing="5" cellpadding="0" border="0">

⌨️ 快捷键说明

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