An example of importing Embedded Coder code into the mbed IDE. Currently doesn't connect IO to PWM, ADC, and Encoder, instead provides random inputs and measures execution time.

Dependencies:   mbed-dsp mbed Nucleo_pmsmfoc

Dependents:   Nucleo_pmsmfoc

html/html/ert_main_c.html

Committer:
paulcox
Date:
2014-11-25
Revision:
2:bbc155b0b886

File content as of revision 2:bbc155b0b886:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="./js/coder_app.js"></script>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="./rtwreport_utils.js"></script>
<script type="text/javascript" src="./rtwannotate.js"></script>
<link rel="stylesheet" type="text/css" href="./css/coder_app.css"/>
</head>
<body onload="srcFileOnload();">
<pre id="code">
<table class="code" id="codeTbl">
<tr name="1" id="1">
<td>1</td><td><span class="ct">/*</span></td></tr>
<tr name="2" id="2">
<td>2</td><td><span class="ct"> * File: ert_main.c</span></td></tr>
<tr name="3" id="3">
<td>3</td><td><span class="ct"> *</span></td></tr>
<tr name="4" id="4">
<td>4</td><td><span class="ct"> * Code generated for Simulink model 'rtwdemo_pmsmfoc'.</span></td></tr>
<tr name="5" id="5">
<td>5</td><td><span class="ct"> *</span></td></tr>
<tr name="6" id="6">
<td>6</td><td><span class="ct"> * Model version                  : 1.2949</span></td></tr>
<tr name="7" id="7">
<td>7</td><td><span class="ct"> * Simulink Coder version         : 8.7 (R2014b) 11-Aug-2014</span></td></tr>
<tr name="8" id="8">
<td>8</td><td><span class="ct"> * C/C++ source code generated on : Sat Oct 11 02:05:41 2014</span></td></tr>
<tr name="9" id="9">
<td>9</td><td><span class="ct"> *</span></td></tr>
<tr name="10" id="10">
<td>10</td><td><span class="ct"> * Target selection: ert.tlc</span></td></tr>
<tr name="11" id="11">
<td>11</td><td><span class="ct"> * Embedded hardware selection: ARM Compatible-&gt;ARM Cortex</span></td></tr>
<tr name="12" id="12">
<td>12</td><td><span class="ct"> * Code generation objective: Execution efficiency</span></td></tr>
<tr name="13" id="13">
<td>13</td><td><span class="ct"> * Validation result: Not run</span></td></tr>
<tr name="14" id="14">
<td>14</td><td><span class="ct"> */</span></td></tr>
<tr name="15" id="15">
<td>15</td><td></td></tr>
<tr name="16" id="16">
<td>16</td><td><span class="pp">#include "rtwdemo_pmsmfoc.h"</span></td></tr>
<tr name="17" id="17">
<td>17</td><td><span class="pp">#include "rtwtypes.h"</span></td></tr>
<tr name="18" id="18">
<td>18</td><td></td></tr>
<tr name="19" id="19">
<td>19</td><td><span class="kw">volatile</span> <span class="kw">int</span> <a id="19c14" class="tk">IsrOverrun</a> = 0;</td></tr>
<tr name="20" id="20">
<td>20</td><td><span class="kw">static</span> <a id="20c8" class="tk">boolean_T</a> <a id="20c18" class="tk">OverrunFlag</a> = 0;</td></tr>
<tr name="21" id="21">
<td>21</td><td><span class="kw">void</span> <a id="21c6" class="tk">rt_OneStep</a>(<span class="kw">void</span>)</td></tr>
<tr name="22" id="22">
<td>22</td><td><span class="br">{</span></td></tr>
<tr name="23" id="23">
<td>23</td><td>  <span class="ct">/* '<a class="ct blk" blk_line="23">&lt;Root&gt;/motor_on</a>' */</span></td></tr>
<tr name="24" id="24">
<td>24</td><td>  <span class="kw">static</span> <a id="24c10" class="tk">uint16_T</a> <a id="24c19" class="tk">motor_on</a> = 0U;</td></tr>
<tr name="25" id="25">
<td>25</td><td></td></tr>
<tr name="26" id="26">
<td>26</td><td>  <span class="ct">/* '<a class="ct blk" blk_line="26">&lt;Root&gt;/command_type</a>' */</span></td></tr>
<tr name="27" id="27">
<td>27</td><td>  <span class="kw">static</span> <a id="27c10" class="tk">EnumCommandType</a> <a id="27c26" class="tk">command_type</a> = <a id="27c41" class="tk">Torque</a>;</td></tr>
<tr name="28" id="28">
<td>28</td><td></td></tr>
<tr name="29" id="29">
<td>29</td><td>  <span class="ct">/* '<a class="ct blk" blk_line="29">&lt;Root&gt;/command_value</a>' */</span></td></tr>
<tr name="30" id="30">
<td>30</td><td>  <span class="kw">static</span> <a id="30c10" class="tk">real32_T</a> <a id="30c19" class="tk">current_request</a> = 0.0F;</td></tr>
<tr name="31" id="31">
<td>31</td><td></td></tr>
<tr name="32" id="32">
<td>32</td><td>  <span class="ct">/* '<a class="ct blk" blk_line="32">&lt;Root&gt;/sensors</a>' */</span></td></tr>
<tr name="33" id="33">
<td>33</td><td>  <span class="kw">static</span> <a id="33c10" class="tk">SENSORS_STRUCT</a> <a id="33c25" class="tk">sensors</a> = <span class="br">{</span></td></tr>
<tr name="34" id="34">
<td>34</td><td>    <span class="br">{</span></td></tr>
<tr name="35" id="35">
<td>35</td><td>      0U, 0U <span class="br">}</span></td></tr>
<tr name="36" id="36">
<td>36</td><td>    ,                                  <span class="ct">/* adc_phase_currents */</span></td></tr>
<tr name="37" id="37">
<td>37</td><td>    0U,                                <span class="ct">/* encoder_valid */</span></td></tr>
<tr name="38" id="38">
<td>38</td><td>    0U                                 <span class="ct">/* encoder_counter */</span></td></tr>
<tr name="39" id="39">
<td>39</td><td>  <span class="br">}</span> ;</td></tr>
<tr name="40" id="40">
<td>40</td><td></td></tr>
<tr name="41" id="41">
<td>41</td><td>  <span class="ct">/* '<a class="ct blk" blk_line="41">&lt;Root&gt;/error</a>' */</span></td></tr>
<tr name="42" id="42">
<td>42</td><td>  <span class="kw">static</span> <a id="42c10" class="tk">EnumErrorType</a> <a id="42c24" class="tk">error</a>;</td></tr>
<tr name="43" id="43">
<td>43</td><td></td></tr>
<tr name="44" id="44">
<td>44</td><td>  <span class="ct">/* '<a class="ct blk" blk_line="44">&lt;Root&gt;/pwm_compare</a>' */</span></td></tr>
<tr name="45" id="45">
<td>45</td><td>  <span class="kw">static</span> <a id="45c10" class="tk">uint16_T</a> <a id="45c19" class="tk">pwm_compare</a>[3];</td></tr>
<tr name="46" id="46">
<td>46</td><td></td></tr>
<tr name="47" id="47">
<td>47</td><td>  <span class="ct">/* Check for overrun. Protect OverrunFlag against preemption */</span></td></tr>
<tr name="48" id="48">
<td>48</td><td>  <span class="kw">if</span> (<a id="48c7" class="tk">OverrunFlag</a>++) <span class="br">{</span></td></tr>
<tr name="49" id="49">
<td>49</td><td>    <a id="49c5" class="tk">IsrOverrun</a> = 1;</td></tr>
<tr name="50" id="50">
<td>50</td><td>    <a id="50c5" class="tk">OverrunFlag</a>--;</td></tr>
<tr name="51" id="51">
<td>51</td><td>    <span class="kw">return</span>;</td></tr>
<tr name="52" id="52">
<td>52</td><td>  <span class="br">}</span></td></tr>
<tr name="53" id="53">
<td>53</td><td></td></tr>
<tr name="54" id="54">
<td>54</td><td>  <a id="54c3" class="tk">__enable_irq</a>();</td></tr>
<tr name="55" id="55">
<td>55</td><td>  <a id="55c3" class="tk">error</a> = <a id="55c11" class="tk">Controller</a>(<a id="55c22" class="tk">motor_on</a>, <a id="55c32" class="tk">command_type</a>, <a id="55c46" class="tk">current_request</a>, &amp;<a id="55c64" class="tk">sensors</a>,</td></tr>
<tr name="56" id="56">
<td>56</td><td>                     <a id="56c22" class="tk">pwm_compare</a>);</td></tr>
<tr name="57" id="57">
<td>57</td><td></td></tr>
<tr name="58" id="58">
<td>58</td><td>  <span class="ct">/* Get model outputs here */</span></td></tr>
<tr name="59" id="59">
<td>59</td><td>  <a id="59c3" class="tk">__disable_irq</a>();</td></tr>
<tr name="60" id="60">
<td>60</td><td>  <a id="60c3" class="tk">OverrunFlag</a>--;</td></tr>
<tr name="61" id="61">
<td>61</td><td><span class="br">}</span></td></tr>
<tr name="62" id="62">
<td>62</td><td></td></tr>
<tr name="63" id="63">
<td>63</td><td><span class="kw">int</span> <a id="63c5" class="tk">main</a>(<span class="kw">void</span>)</td></tr>
<tr name="64" id="64">
<td>64</td><td><span class="br">{</span></td></tr>
<tr name="65" id="65">
<td>65</td><td>  <span class="kw">volatile</span> <a id="65c12" class="tk">boolean_T</a> <a id="65c22" class="tk">runModel</a> = 1;</td></tr>
<tr name="66" id="66">
<td>66</td><td>  <span class="kw">float</span> <a id="66c9" class="tk">modelBaseRate</a> = 4.0E-5;</td></tr>
<tr name="67" id="67">
<td>67</td><td>  <span class="kw">float</span> <a id="67c9" class="tk">systemClock</a> = 48;</td></tr>
<tr name="68" id="68">
<td>68</td><td>  ((<span class="kw">void</span>) 0);</td></tr>
<tr name="69" id="69">
<td>69</td><td>  <a id="69c3" class="tk">Controller_Init</a>();</td></tr>
<tr name="70" id="70">
<td>70</td><td>  <a id="70c3" class="tk">ARMCM_SysTick_Config</a>(<a id="70c24" class="tk">modelBaseRate</a>);</td></tr>
<tr name="71" id="71">
<td>71</td><td>  <a id="71c3" class="tk">runModel</a> =</td></tr>
<tr name="72" id="72">
<td>72</td><td>    ((<span class="kw">void</span>*) 0) == (<a id="72c21" class="tk">NULL</a>);</td></tr>
<tr name="73" id="73">
<td>73</td><td>  <a id="73c3" class="tk">__enable_irq</a>();</td></tr>
<tr name="74" id="74">
<td>74</td><td>  ;</td></tr>
<tr name="75" id="75">
<td>75</td><td>  <span class="kw">while</span> (<a id="75c10" class="tk">runModel</a>) <span class="br">{</span></td></tr>
<tr name="76" id="76">
<td>76</td><td>    <a id="76c5" class="tk">runModel</a> =</td></tr>
<tr name="77" id="77">
<td>77</td><td>      ((<span class="kw">void</span>*) 0) == (<a id="77c23" class="tk">NULL</a>);</td></tr>
<tr name="78" id="78">
<td>78</td><td>  <span class="br">}</span></td></tr>
<tr name="79" id="79">
<td>79</td><td></td></tr>
<tr name="80" id="80">
<td>80</td><td>  <span class="ct">/* Disable rt_OneStep() here */</span></td></tr>
<tr name="81" id="81">
<td>81</td><td><span class="pp">#ifdef</span> <a id="81c8" class="tk">EXT_MODE</a></td></tr>
<tr name="82" id="82">
<td>82</td><td></td></tr>
<tr name="83" id="83">
<td>83</td><td>  <a id="83c3" class="tk">wait_ms</a>(1000);</td></tr>
<tr name="84" id="84">
<td>84</td><td></td></tr>
<tr name="85" id="85">
<td>85</td><td><span class="pp">#endif</span></td></tr>
<tr name="86" id="86">
<td>86</td><td></td></tr>
<tr name="87" id="87">
<td>87</td><td>  (<span class="kw">void</span>) <a id="87c10" class="tk">systemClock</a>;</td></tr>
<tr name="88" id="88">
<td>88</td><td>  <span class="kw">return</span> 0;</td></tr>
<tr name="89" id="89">
<td>89</td><td><span class="br">}</span></td></tr>
<tr name="90" id="90">
<td>90</td><td></td></tr>
<tr name="91" id="91">
<td>91</td><td><span class="ct">/*</span></td></tr>
<tr name="92" id="92">
<td>92</td><td><span class="ct"> * File trailer for generated code.</span></td></tr>
<tr name="93" id="93">
<td>93</td><td><span class="ct"> *</span></td></tr>
<tr name="94" id="94">
<td>94</td><td><span class="ct"> * [EOF]</span></td></tr>
<tr name="95" id="95">
<td>95</td><td><span class="ct"> */</span></td></tr>
<tr name="96" id="96">
<td>96</td><td></td></tr>
</table>
</pre>
</body>
</html>