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
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->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"><Root>/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"><Root>/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"><Root>/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"><Root>/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"><Root>/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"><Root>/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>, &<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>