doc/doxygen/html/appli_8c-source.html
author etisserant
Mon, 02 Jul 2007 18:22:58 +0200
changeset 236 905677ed00f3
parent 215 f49e5a6b7804
child 240 34654679f262
permissions -rw-r--r--
Full preliminary implementation of TPDO transmit type:
- SYNC (N) (1-240)
- RTR only + SYNC (252)
- RTR only (253)
- EVENT, with timer and inhibit time (254 and 255)

User app have to call sendPDOevent(d) to eventually signal mapped data changes.
Callbacks added to 0x140N, TPDO comm parameters for on the fly timers values change.
TestMasterSlave updated.
<!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>CanFestival: examples/gene_SYNC_HCS12/appli.c Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.1 -->
<div class="tabs">
  <ul>
    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="dirs.html"><span>Directories</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    <li><a href="globals.html"><span>Globals</span></a></li>
  </ul></div>
<div class="nav">
<a class="el" href="dir_fc8d77725c328f9de5a130dceab5a508.html">examples</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_41bf73311d8b7aeee9ef2a2b73ffd4dc.html">gene_SYNC_HCS12</a></div>
<h1>appli.c</h1><a href="appli_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment">This file is part of CanFestival, a library implementing CanOpen Stack. </span>
<a name="l00003"></a>00003 <span class="comment"></span>
<a name="l00004"></a>00004 <span class="comment">Copyright (C): Edouard TISSERANT and Francis DUPIN</span>
<a name="l00005"></a>00005 <span class="comment"></span>
<a name="l00006"></a>00006 <span class="comment">See COPYING file for copyrights details.</span>
<a name="l00007"></a>00007 <span class="comment"></span>
<a name="l00008"></a>00008 <span class="comment">This library is free software; you can redistribute it and/or</span>
<a name="l00009"></a>00009 <span class="comment">modify it under the terms of the GNU Lesser General Public</span>
<a name="l00010"></a>00010 <span class="comment">License as published by the Free Software Foundation; either</span>
<a name="l00011"></a>00011 <span class="comment">version 2.1 of the License, or (at your option) any later version.</span>
<a name="l00012"></a>00012 <span class="comment"></span>
<a name="l00013"></a>00013 <span class="comment">This library is distributed in the hope that it will be useful,</span>
<a name="l00014"></a>00014 <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00015"></a>00015 <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00016"></a>00016 <span class="comment">Lesser General Public License for more details.</span>
<a name="l00017"></a>00017 <span class="comment"></span>
<a name="l00018"></a>00018 <span class="comment">You should have received a copy of the GNU Lesser General Public</span>
<a name="l00019"></a>00019 <span class="comment">License along with this library; if not, write to the Free Software</span>
<a name="l00020"></a>00020 <span class="comment">Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span>
<a name="l00021"></a>00021 <span class="comment">*/</span>
<a name="l00022"></a>00022 
<a name="l00023"></a>00023 <span class="comment">// Uncomment if you don't need console informations.</span>
<a name="l00024"></a><a class="code" href="appli_8c.html#4f52c00ab0d519e2965ebaa533975904">00024</a> <span class="preprocessor">#define DEBUG_WAR_CONSOLE_ON</span>
<a name="l00025"></a><a class="code" href="appli_8c.html#bb416887a32f7e4333e095356774f07f">00025</a> <span class="preprocessor"></span><span class="preprocessor">#define DEBUG_ERR_CONSOLE_ON</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;stddef.h&gt;</span> <span class="comment">/* for NULL */</span>
<a name="l00028"></a>00028 
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="portsaccess_8h.html">asm-m68hc12/portsaccess.h</a>&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;<a class="code" href="ports__def_8h.html">asm-m68hc12/ports_def.h</a>&gt;</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;<a class="code" href="ports_8h.html">asm-m68hc12/ports.h</a>&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include  &lt;<a class="code" href="interrupt_8h.html">interrupt.h</a>&gt;</span>
<a name="l00033"></a>00033 
<a name="l00034"></a>00034 <span class="preprocessor">#include "../include/data.h"</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;<a class="code" href="win32_2applicfg_8h.html">applicfg.h</a>&gt;</span>
<a name="l00036"></a>00036 
<a name="l00037"></a>00037 
<a name="l00038"></a>00038 
<a name="l00039"></a>00039 <span class="preprocessor">#include "../include/hcs12/candriver.h"</span>
<a name="l00040"></a>00040 <span class="preprocessor">#include "../include/hcs12/canOpenDriver.h"</span>
<a name="l00041"></a>00041 <span class="preprocessor">#include "../include/def.h"</span>
<a name="l00042"></a>00042 <span class="preprocessor">#include "../include/can.h"</span>
<a name="l00043"></a>00043 <span class="preprocessor">#include "../include/objdictdef.h"</span>
<a name="l00044"></a>00044 <span class="preprocessor">#include "../include/objacces.h"</span>
<a name="l00045"></a>00045 <span class="preprocessor">#include "../include/sdo.h"</span>
<a name="l00046"></a>00046 <span class="preprocessor">#include "../include/pdo.h"</span>
<a name="l00047"></a>00047 <span class="preprocessor">#include "../include/timer.h"</span>
<a name="l00048"></a>00048 <span class="preprocessor">#include "../include/lifegrd.h"</span>
<a name="l00049"></a>00049 <span class="preprocessor">#include "../include/sync.h"</span>
<a name="l00050"></a>00050 
<a name="l00051"></a>00051 <span class="preprocessor">#include "../include/nmtSlave.h"</span>
<a name="l00052"></a>00052 
<a name="l00053"></a>00053 <span class="comment">// File created by the GUI </span>
<a name="l00054"></a>00054 <span class="preprocessor">#include "<a class="code" href="objdict_8h.html">objdict.h</a>"</span>
<a name="l00055"></a>00055 
<a name="l00056"></a>00056 
<a name="l00057"></a>00057 
<a name="l00058"></a>00058 
<a name="l00059"></a>00059 
<a name="l00060"></a>00060 <span class="comment">// HCS12 configuration</span>
<a name="l00061"></a>00061 <span class="comment">// -----------------------------------------------------</span>
<a name="l00062"></a>00062 
<a name="l00063"></a><a class="code" href="appli_8c.html#a5385c49943465978358d459b4fc430f">00063</a> <span class="keyword">enum</span> <a class="code" href="appli_8c.html#a5385c49943465978358d459b4fc430f">E_CanBaudrate</a> 
<a name="l00064"></a>00064 {
<a name="l00065"></a>00065    <a class="code" href="appli_8c.html#a5385c49943465978358d459b4fc430f8d90575842d76640697deb1398f7023c">CAN_BAUDRATE_250K</a>,
<a name="l00066"></a>00066    <a class="code" href="appli_8c.html#a5385c49943465978358d459b4fc430f07239165beed5e840aed12e7f46af89b">CAN_BAUDRATE_500K</a>,
<a name="l00067"></a>00067    <a class="code" href="appli_8c.html#a5385c49943465978358d459b4fc430ff84d248d0fb707925b35c9ec18624809">CAN_BAUDRATE_1M</a>,
<a name="l00068"></a>00068 };
<a name="l00069"></a>00069 
<a name="l00070"></a>00070 
<a name="l00071"></a><a class="code" href="appli_8c.html#43fd1d8fc333eddd19554acb6cc2baf8">00071</a> <span class="keyword">const</span> <a class="code" href="structcanBusTime.html">canBusTime</a> <a class="code" href="appli_8c.html#43fd1d8fc333eddd19554acb6cc2baf8">CAN_Baudrates</a>[] =
<a name="l00072"></a>00072 {
<a name="l00073"></a>00073    {
<a name="l00074"></a>00074       1,  <span class="comment">/* clksrc: Use the bus clock : 16 MHz, the freq. of the quartz's board        */</span>
<a name="l00075"></a>00075       3,  <span class="comment">/* brp :  chose btw 0 and 63 (6 bits).  freq time quantum = 16MHz / (brp + 1) */</span>
<a name="l00076"></a>00076       0,  <span class="comment">/* sjw : chose btw 0 and 3 (2 bits). Sync on (sjw + 1 ) time quantum          */</span>
<a name="l00077"></a>00077       0,  <span class="comment">/* samp : chose btw 0 and 3 (2 bits) (samp + 1 ) samples per bit              */</span>
<a name="l00078"></a>00078       1,  <span class="comment">/* tseg2 : chose btw 0 and 7 (3 bits) Segment 2 width = (tseg2 + 1)  tq       */</span>
<a name="l00079"></a>00079      12,  <span class="comment">/* tseg1 : chose btw 0 and 15 (4 bits) Segment 1 width = (tseg1 + 1)  tq      */</span>
<a name="l00080"></a>00080 
<a name="l00081"></a>00081       <span class="comment">/*</span>
<a name="l00082"></a>00082 <span class="comment">      With these values, </span>
<a name="l00083"></a>00083 <span class="comment">      - The width of the bit time is 16 time quantum :</span>
<a name="l00084"></a>00084 <span class="comment">          - 1 tq for the SYNC segment (could not be modified)</span>
<a name="l00085"></a>00085 <span class="comment">          - 13 tq for the TIME 1 segment (tseg1 = 12)</span>
<a name="l00086"></a>00086 <span class="comment">          - 2 tq for the TIME 2 segment (tseg2 = 1)</span>
<a name="l00087"></a>00087 <span class="comment">      - Because the bus clock of the MSCAN is 16 MHZ, and the </span>
<a name="l00088"></a>00088 <span class="comment">        freq of the time quantum is 4 MHZ (brp = 3+1), and  there are 16 tq in the bit time,</span>
<a name="l00089"></a>00089 <span class="comment">        so the freq of the bit time is 250 kHz.</span>
<a name="l00090"></a>00090 <span class="comment">      */</span>
<a name="l00091"></a>00091    },
<a name="l00092"></a>00092 
<a name="l00093"></a>00093    {
<a name="l00094"></a>00094       1,  <span class="comment">/* clksrc: Use the bus clock : 16 MHz, the freq. of the quartz's board        */</span>
<a name="l00095"></a>00095       1,  <span class="comment">/* brp :  chose btw 0 and 63 (6 bits).  freq time quantum = 16MHz / (brp + 1) */</span>
<a name="l00096"></a>00096       0,  <span class="comment">/* sjw : chose btw 0 and 3 (2 bits). Sync on (sjw + 1 ) time quantum          */</span>
<a name="l00097"></a>00097       0,  <span class="comment">/* samp : chose btw 0 and 3 (2 bits) (samp + 1 ) samples per bit              */</span>
<a name="l00098"></a>00098       1,  <span class="comment">/* tseg2 : chose btw 0 and 7 (3 bits) Segment 2 width = (tseg2 + 1)  tq       */</span>
<a name="l00099"></a>00099      12,  <span class="comment">/* tseg1 : chose btw 0 and 15 (4 bits) Segment 1 width = (tseg1 + 1)  tq      */</span>
<a name="l00100"></a>00100 
<a name="l00101"></a>00101       <span class="comment">/*</span>
<a name="l00102"></a>00102 <span class="comment">      With these values, </span>
<a name="l00103"></a>00103 <span class="comment">      - The width of the bit time is 16 time quantum :</span>
<a name="l00104"></a>00104 <span class="comment">          - 1 tq for the SYNC segment (could not be modified)</span>
<a name="l00105"></a>00105 <span class="comment">          - 13 tq for the TIME 1 segment (tseg1 = 12)</span>
<a name="l00106"></a>00106 <span class="comment">          - 2 tq for the TIME 2 segment (tseg2 = 1)</span>
<a name="l00107"></a>00107 <span class="comment">      - Because the bus clock of the MSCAN is 16 MHZ, and the </span>
<a name="l00108"></a>00108 <span class="comment">        freq of the time quantum is 8 MHZ (brp = 1+1), and  there are 16 tq in the bit time,</span>
<a name="l00109"></a>00109 <span class="comment">        so the freq of the bit time is 500 kHz.</span>
<a name="l00110"></a>00110 <span class="comment">      */</span>
<a name="l00111"></a>00111     },
<a name="l00112"></a>00112 
<a name="l00113"></a>00113         {
<a name="l00114"></a>00114       1,  <span class="comment">/* clksrc: Use the bus clock : 16 MHz, the freq. of the quartz's board        */</span>
<a name="l00115"></a>00115       1,  <span class="comment">/* brp :  chose btw 0 and 63 (6 bits).  freq time quantum = 16MHz / (brp + 1) */</span>
<a name="l00116"></a>00116       0,  <span class="comment">/* sjw : chose btw 0 and 3 (2 bits). Sync on (sjw + 1 ) time quantum          */</span>
<a name="l00117"></a>00117       0,  <span class="comment">/* samp : chose btw 0 and 3 (2 bits) (samp +MSG_WAR(0x3F33, "Je suis le noeud ", getNodeId());    1 ) samples per bit              */</span>
<a name="l00118"></a>00118       1,  <span class="comment">/* tseg2 : chose btw 0 and 7 (3 bits) Segment 2 width = (tseg2 + 1)  tq       */</span>
<a name="l00119"></a>00119       4,  <span class="comment">/* tseg1 : chose btw 0 and 15 (4 bits) Segment 1 width = (tseg1 + 1)  tq      */</span>
<a name="l00120"></a>00120 
<a name="l00121"></a>00121       <span class="comment">/*</span>
<a name="l00122"></a>00122 <span class="comment">      With these values, </span>
<a name="l00123"></a>00123 <span class="comment">      - The width of the bit time is 16 time quantum :</span>
<a name="l00124"></a>00124 <span class="comment">          - 1 tq for the SYNC segment (could not be modified)</span>
<a name="l00125"></a>00125 <span class="comment">          - 5 tq for the TIME 1 segment (tseg1 = 4)</span>
<a name="l00126"></a>00126 <span class="comment">          - 2 tq for the TIME 2 segment (tseg2 = 1)</span>
<a name="l00127"></a>00127 <span class="comment">      - Because the bus clock of the MSCAN is 16 MHZ, and the </span>
<a name="l00128"></a>00128 <span class="comment">        freq of the time quantum is 8 MHZ (brp = 1+1), and  there are 8 tq in the bit time,</span>
<a name="l00129"></a>00129 <span class="comment">        so the freq of the bit time is 1 MHz.</span>
<a name="l00130"></a>00130 <span class="comment">      */</span>
<a name="l00131"></a>00131     }
<a name="l00132"></a>00132 };
<a name="l00133"></a>00133 
<a name="l00134"></a>00134 
<a name="l00135"></a>00135 
<a name="l00136"></a>00136 
<a name="l00137"></a>00137 <span class="comment">/**************************prototypes*****************************************/</span>
<a name="l00138"></a>00138 
<a name="l00139"></a>00139 <span class="comment">//Init can bus and Canopen</span>
<a name="l00140"></a>00140 <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#8d772d897083e5a5c5f41878cfea50b8">initCanopencapteur</a> (<span class="keywordtype">void</span>);
<a name="l00141"></a>00141 <span class="comment">// Init the sensor</span>
<a name="l00142"></a>00142 <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#ff8c2bab7ede63d3529f62b4fa3aca8c">initSensor</a>(<span class="keywordtype">void</span>);
<a name="l00143"></a>00143 <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#c17a18fa3b7965bf6e850effaba7179a">initPortB</a>(<span class="keywordtype">void</span>);
<a name="l00144"></a>00144 <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#b7c33a91e5101b8d7371482fcfd6111d">initPortH</a>(<span class="keywordtype">void</span>);
<a name="l00145"></a>00145 
<a name="l00146"></a>00146 
<a name="l00147"></a>00147 <span class="comment">//------------------------------------------------------------------------------</span>
<a name="l00148"></a>00148 <span class="comment">//Initialisation of the port B for the leds.</span>
<a name="l00149"></a><a class="code" href="appli_8c.html#c17a18fa3b7965bf6e850effaba7179a">00149</a> <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#c17a18fa3b7965bf6e850effaba7179a">initPortB</a>(<span class="keywordtype">void</span>)
<a name="l00150"></a>00150 {
<a name="l00151"></a>00151   <span class="comment">// Port B is output</span>
<a name="l00152"></a>00152   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#924a54df722121bc98383bdec5ae1898">DDRB</a>)= 0XFF;
<a name="l00153"></a>00153   <span class="comment">// RAZ</span>
<a name="l00154"></a>00154   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#09a0c85cd3da09d9cdf63a5ac4c39f77">PORTB</a>) = 0xFF;
<a name="l00155"></a>00155 }
<a name="l00156"></a>00156 
<a name="l00157"></a>00157 <span class="comment">//------------------------------------------------------------------------------</span>
<a name="l00158"></a>00158 <span class="comment">// Init of port H to choose the CAN rate by switch, and the nodeId</span>
<a name="l00159"></a><a class="code" href="appli_8c.html#b7c33a91e5101b8d7371482fcfd6111d">00159</a> <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#b7c33a91e5101b8d7371482fcfd6111d">initPortH</a>(<span class="keywordtype">void</span>)
<a name="l00160"></a>00160 {
<a name="l00161"></a>00161   <span class="comment">// Port H is input</span>
<a name="l00162"></a>00162   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#1522fe4fdbaf2658e713ab782de9c3aa">DDRH</a>)= 0X00;
<a name="l00163"></a>00163   <span class="comment">// Enable pull device</span>
<a name="l00164"></a>00164   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#580827b8a3a5753e681acc0a31dd24d1">PERH</a>) = 0XFF;
<a name="l00165"></a>00165   <span class="comment">// Choose the pull-up device</span>
<a name="l00166"></a>00166   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#dee7f267a39162b3b98ad8c89fd3c9ab">PPSH</a>) = 0X00;
<a name="l00167"></a>00167 }
<a name="l00168"></a>00168 
<a name="l00169"></a>00169 <span class="comment">//------------------------------------------------------------------------------</span>
<a name="l00170"></a><a class="code" href="appli_8c.html#ff8c2bab7ede63d3529f62b4fa3aca8c">00170</a> <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#ff8c2bab7ede63d3529f62b4fa3aca8c">initSensor</a>(<span class="keywordtype">void</span>)
<a name="l00171"></a>00171 { 
<a name="l00172"></a>00172   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> baudrate = 0; 
<a name="l00173"></a>00173   <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> nodeId = 0; 
<a name="l00174"></a>00174   <span class="comment">// Init led control</span>
<a name="l00175"></a>00175   <a class="code" href="appli_8c.html#c17a18fa3b7965bf6e850effaba7179a">initPortB</a>(); 
<a name="l00176"></a>00176   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#09a0c85cd3da09d9cdf63a5ac4c39f77">PORTB</a>) &amp;= ~ 0x01; <span class="comment">//One led ON</span>
<a name="l00177"></a>00177   <a class="code" href="appli_8c.html#b7c33a91e5101b8d7371482fcfd6111d">initPortH</a>();
<a name="l00178"></a>00178   
<a name="l00179"></a>00179     <span class="comment">/* Defining the node Id */</span>
<a name="l00180"></a>00180   <span class="comment">// Uncomment to have a fixed nodeId</span>
<a name="l00181"></a>00181   <span class="comment">//setNodeId(&amp;gene_SYNC_Data, 0x03);</span>
<a name="l00182"></a>00182   
<a name="l00183"></a>00183   <span class="comment">// Comment below to have a fixed nodeId</span>
<a name="l00184"></a>00184   nodeId = ~(<a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#e195e4b974f64e9b64a49fdab0d4aa72">PTH</a>)) &amp; 0x3F;
<a name="l00185"></a>00185   <span class="keywordflow">if</span> (nodeId == 0) {
<a name="l00186"></a>00186         <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3F33, <span class="stringliteral">"Using default nodeId :  "</span>, <a class="code" href="states_8c.html#3020f2e5762f6e389a21382ec827b6a6">getNodeId</a>(&amp;<a class="code" href="objdict_8c.html#f8bdf9fcfcd90a3000da3036277bcd39">gene_SYNC_Data</a>));
<a name="l00187"></a>00187   }
<a name="l00188"></a>00188   <span class="keywordflow">else</span>  
<a name="l00189"></a>00189     <a class="code" href="states_8c.html#d47a53979b9311a374d029f7923abbe1">setNodeId</a>(&amp;<a class="code" href="objdict_8c.html#f8bdf9fcfcd90a3000da3036277bcd39">gene_SYNC_Data</a>, nodeId);
<a name="l00190"></a>00190   
<a name="l00191"></a>00191   <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3F33, <span class="stringliteral">"My nodeId is :  "</span>, <a class="code" href="states_8c.html#3020f2e5762f6e389a21382ec827b6a6">getNodeId</a>(&amp;<a class="code" href="objdict_8c.html#f8bdf9fcfcd90a3000da3036277bcd39">gene_SYNC_Data</a>));
<a name="l00192"></a>00192   
<a name="l00193"></a>00193   <a class="code" href="structcanBusInit.html">canBusInit</a> bi0 = {
<a name="l00194"></a>00194     0,    <span class="comment">/* no low power                 */</span> 
<a name="l00195"></a>00195     0,    <span class="comment">/* no time stamp                */</span>
<a name="l00196"></a>00196     1,    <span class="comment">/* enable MSCAN                 */</span>
<a name="l00197"></a>00197     0,    <span class="comment">/* clock source : oscillator (In fact, it is not used)   */</span>
<a name="l00198"></a>00198     0,    <span class="comment">/* no loop back                 */</span>
<a name="l00199"></a>00199     0,    <span class="comment">/* no listen only               */</span>
<a name="l00200"></a>00200     0,    <span class="comment">/* no low pass filter for wk up */</span>
<a name="l00201"></a>00201         <a class="code" href="appli_8c.html#43fd1d8fc333eddd19554acb6cc2baf8">CAN_Baudrates</a>[<a class="code" href="appli_8c.html#a5385c49943465978358d459b4fc430f8d90575842d76640697deb1398f7023c">CAN_BAUDRATE_250K</a>],
<a name="l00202"></a>00202     {
<a name="l00203"></a>00203       0x00,    <span class="comment">/* Filter on 16 bits. See Motorola Block Guide V02.14 fig 4-3 */</span>
<a name="l00204"></a>00204       0x00, 0xFF, <span class="comment">/* filter 0 hight accept all msg      */</span>
<a name="l00205"></a>00205       0x00, 0xFF, <span class="comment">/* filter 0 low accept all msg        */</span>
<a name="l00206"></a>00206       0x00, 0xFF, <span class="comment">/* filter 1 hight filter all of  msg  */</span>
<a name="l00207"></a>00207       0x00, 0xFF, <span class="comment">/* filter 1 low filter all of  msg    */</span>
<a name="l00208"></a>00208       0x00, 0xFF, <span class="comment">/* filter 2 hight filter most of  msg */</span>
<a name="l00209"></a>00209       0x00, 0xFF, <span class="comment">/* filter 2 low filter most of  msg   */</span>
<a name="l00210"></a>00210       0x00, 0xFF, <span class="comment">/* filter 3 hight filter most of  msg */</span>
<a name="l00211"></a>00211       0x00, 0xFF, <span class="comment">/* filter 3 low filter most of  msg   */</span>
<a name="l00212"></a>00212     }
<a name="l00213"></a>00213   };
<a name="l00214"></a>00214   
<a name="l00215"></a>00215   <span class="comment">//Init the HCS12 microcontroler for CanOpen </span>
<a name="l00216"></a>00216   <a class="code" href="canOpenDriver_8c.html#c71399958d35a7f703416f025603ee26">initHCS12</a>();
<a name="l00217"></a>00217    
<a name="l00218"></a>00218   <span class="comment">// Chose the CAN rate (On our board, whe have switch for all purpose)</span>
<a name="l00219"></a>00219   <span class="comment">//  7    8</span>
<a name="l00220"></a>00220   <span class="comment">//  ON   ON   =&gt; 1000 kpbs</span>
<a name="l00221"></a>00221   <span class="comment">//  OFF  ON   =&gt;  500 kpbs</span>
<a name="l00222"></a>00222   <span class="comment">//  ON   OFF  =&gt;  250 kpbs</span>
<a name="l00223"></a>00223   
<a name="l00224"></a>00224   baudrate = ~(<a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#e195e4b974f64e9b64a49fdab0d4aa72">PTH</a>)) &amp; 0xC0;
<a name="l00225"></a>00225   
<a name="l00226"></a>00226   <span class="comment">// Uncomment to have a fixed baudrate of 250 kbps</span>
<a name="l00227"></a>00227   <span class="comment">//baudrate = 1;</span>
<a name="l00228"></a>00228   
<a name="l00229"></a>00229   <span class="keywordflow">switch</span> (baudrate) {
<a name="l00230"></a>00230   <span class="keywordflow">case</span> 0x40:
<a name="l00231"></a>00231     bi0.<a class="code" href="structcanBusInit.html#fc9eb7ca2f89001dca552e3f956beb73">clk</a> = <a class="code" href="appli_8c.html#43fd1d8fc333eddd19554acb6cc2baf8">CAN_Baudrates</a>[<a class="code" href="appli_8c.html#a5385c49943465978358d459b4fc430f8d90575842d76640697deb1398f7023c">CAN_BAUDRATE_250K</a>];
<a name="l00232"></a>00232     <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3F30, <span class="stringliteral">"CAN 250 kbps "</span>, 0);
<a name="l00233"></a>00233     <span class="keywordflow">break</span>;
<a name="l00234"></a>00234   <span class="keywordflow">case</span> 0x80:
<a name="l00235"></a>00235     bi0.<a class="code" href="structcanBusInit.html#fc9eb7ca2f89001dca552e3f956beb73">clk</a> = <a class="code" href="appli_8c.html#43fd1d8fc333eddd19554acb6cc2baf8">CAN_Baudrates</a>[<a class="code" href="appli_8c.html#a5385c49943465978358d459b4fc430f07239165beed5e840aed12e7f46af89b">CAN_BAUDRATE_500K</a>];
<a name="l00236"></a>00236     <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3F31, <span class="stringliteral">"CAN 500 kbps "</span>, 0);
<a name="l00237"></a>00237     <span class="keywordflow">break</span>;
<a name="l00238"></a>00238   <span class="keywordflow">case</span> 0xC0:
<a name="l00239"></a>00239     bi0.<a class="code" href="structcanBusInit.html#fc9eb7ca2f89001dca552e3f956beb73">clk</a> = <a class="code" href="appli_8c.html#43fd1d8fc333eddd19554acb6cc2baf8">CAN_Baudrates</a>[<a class="code" href="appli_8c.html#a5385c49943465978358d459b4fc430ff84d248d0fb707925b35c9ec18624809">CAN_BAUDRATE_1M</a>];
<a name="l00240"></a>00240     <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3F31, <span class="stringliteral">"CAN 1000 kbps "</span>, 0);
<a name="l00241"></a>00241     <span class="keywordflow">break</span>;   
<a name="l00242"></a>00242   <span class="keywordflow">default</span>:
<a name="l00243"></a>00243     bi0.<a class="code" href="structcanBusInit.html#fc9eb7ca2f89001dca552e3f956beb73">clk</a> = <a class="code" href="appli_8c.html#43fd1d8fc333eddd19554acb6cc2baf8">CAN_Baudrates</a>[<a class="code" href="appli_8c.html#a5385c49943465978358d459b4fc430f8d90575842d76640697deb1398f7023c">CAN_BAUDRATE_250K</a>];
<a name="l00244"></a>00244     <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x2F32, <span class="stringliteral">"CAN BAUD RATE NOT DEFINED =&gt; 250 kbps "</span>, 0);
<a name="l00245"></a>00245   }
<a name="l00246"></a>00246 
<a name="l00247"></a>00247    
<a name="l00248"></a>00248 
<a name="l00249"></a>00249   <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3F33, <span class="stringliteral">"SYNC signal generator "</span>, 0);
<a name="l00250"></a>00250 
<a name="l00251"></a>00251   <a class="code" href="can__peak__win32_8c.html#9f623ce2d3a68e90dfdb1ff0d54a9b57">canInit</a>(<a class="code" href="candriver_8h.html#aec12501ba547723b21fd74636ea045a">CANOPEN_LINE_NUMBER_USED</a>, bi0);  <span class="comment">//initialize filters...</span>
<a name="l00252"></a>00252   <a class="code" href="canOpenDriver_8c.html#02922529b60419a94afe8f369dda070b">initTimer</a>(); <span class="comment">// Init hcs12 timer used by CanFestival. (see timerhw.c)</span>
<a name="l00253"></a>00253   <a class="code" href="interrupt_8c.html#987ce601d6d4c8eedd68b58db3b7811a">unlock</a>(); <span class="comment">// Allow interruptions  </span>
<a name="l00254"></a>00254 }
<a name="l00255"></a>00255 
<a name="l00256"></a>00256 
<a name="l00257"></a>00257 
<a name="l00258"></a>00258 
<a name="l00259"></a>00259 
<a name="l00260"></a>00260 
<a name="l00261"></a>00261 <span class="comment">//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$</span>
<a name="l00262"></a>00262 <span class="comment">// FUNCTIONS WHICH ARE PART OF CANFESTIVAL and *must* be implemented here.</span>
<a name="l00263"></a>00263 
<a name="l00264"></a>00264 <span class="comment">//------------------------------------------------------------------------------</span>
<a name="l00265"></a><a class="code" href="objdict_8h.html#ec227d00c96cd255df85389fdae21f8f">00265</a> <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#07f58b5c2d6a07142f3e6e695798646b">gene_SYNC_heartbeatError</a>( <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> heartbeatID )
<a name="l00266"></a>00266 {
<a name="l00267"></a>00267   
<a name="l00268"></a>00268   <a class="code" href="hcs12_2applicfg_8h.html#99178e2619db849578b20df5aa241844">MSG_ERR</a>(0x1F00, <span class="stringliteral">"HeartBeat not received from node : "</span>, heartbeatID);
<a name="l00269"></a>00269 }
<a name="l00270"></a>00270 
<a name="l00271"></a>00271 <span class="comment">//------------------------------------------------------------------------------</span>
<a name="l00272"></a><a class="code" href="objdict_8h.html#7b7bf51feb35fc1d708cf5cde9f1f5a7">00272</a> <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#5249682c125c7e4ad9583bf63c20b5fa">gene_SYNC_initialisation</a>()
<a name="l00273"></a>00273 {  
<a name="l00274"></a>00274   <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a> (0x3F00, <span class="stringliteral">"Entering in INIT "</span>, 0); 
<a name="l00275"></a>00275   <a class="code" href="appli_8c.html#ff8c2bab7ede63d3529f62b4fa3aca8c">initSensor</a>();  
<a name="l00276"></a>00276 
<a name="l00277"></a>00277   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#09a0c85cd3da09d9cdf63a5ac4c39f77">PORTB</a>) &amp;= ~ 0x01; <span class="comment">// led  0         : ON</span>
<a name="l00278"></a>00278   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#09a0c85cd3da09d9cdf63a5ac4c39f77">PORTB</a>) |=   0x0E; <span class="comment">// leds 1, 2, 3   : OFF</span>
<a name="l00279"></a>00279   
<a name="l00280"></a>00280 }
<a name="l00281"></a>00281 
<a name="l00282"></a>00282 
<a name="l00283"></a>00283 <span class="comment">//------------------------------------------------------------------------------</span>
<a name="l00284"></a><a class="code" href="objdict_8h.html#398570bf126805099a8b551500c34f40">00284</a> <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#ccd49c1b2614c38aeac93733ede6cd91">gene_SYNC_preOperational</a>()
<a name="l00285"></a>00285 {
<a name="l00286"></a>00286   <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a> (0x3F01, <span class="stringliteral">"Entering in PRE-OPERATIONAL "</span>, 0); 
<a name="l00287"></a>00287   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#09a0c85cd3da09d9cdf63a5ac4c39f77">PORTB</a>) &amp;= ~ 0x03; <span class="comment">// leds 0, 1      : ON</span>
<a name="l00288"></a>00288   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#09a0c85cd3da09d9cdf63a5ac4c39f77">PORTB</a>) |=   0x0C; <span class="comment">// leds 2, 3      : OFF</span>
<a name="l00289"></a>00289     <span class="comment">/* default values for the msg CAN filters */</span>
<a name="l00290"></a>00290   <span class="comment">/* Accept all */</span>
<a name="l00291"></a>00291     {
<a name="l00292"></a>00292           <a class="code" href="structcanBusFilterInit.html">canBusFilterInit</a> filterConfiguration = 
<a name="l00293"></a>00293           {
<a name="l00294"></a>00294           0x01,  <span class="comment">/* Filter on 16 bits. See Motorola Block Guide V02.14 */</span>
<a name="l00295"></a>00295       <span class="comment">/*canidarx, canidmrx */</span>                        
<a name="l00296"></a>00296       0x00, 0xFF,          <span class="comment">/* filter 0 */</span>
<a name="l00297"></a>00297       0x00, 0xFF,                  <span class="comment">/* filter 0 */</span>
<a name="l00298"></a>00298       0x00, 0xFF,          <span class="comment">/* filter 1 */</span>
<a name="l00299"></a>00299       0x00, 0xFF,                  <span class="comment">/* filter 1 */</span>
<a name="l00300"></a>00300       0x00, 0xFF,          <span class="comment">/* filter 2 */</span>
<a name="l00301"></a>00301       0x00, 0xFF,                  <span class="comment">/* filter 2 */</span>
<a name="l00302"></a>00302       0x00, 0xFF,          <span class="comment">/* filter 3 */</span>
<a name="l00303"></a>00303       0x00, 0xFF,              <span class="comment">/* filter 3 */</span>
<a name="l00304"></a>00304          };
<a name="l00305"></a>00305          <a class="code" href="canOpenDriver_8c.html#751a41c9747b96ab400b5599370cea83">canChangeFilter</a>(<a class="code" href="candriver_8h.html#aec12501ba547723b21fd74636ea045a">CANOPEN_LINE_NUMBER_USED</a>, filterConfiguration);
<a name="l00306"></a>00306    } 
<a name="l00307"></a>00307    <span class="comment">// Reset the automatic change by SDO</span>
<a name="l00308"></a>00308    <a class="code" href="objdict_8c.html#c6a202de14ed5a1ba3f7bef3c1408ee0">applyDownloadedFilters</a> = 0;
<a name="l00309"></a>00309    
<a name="l00310"></a>00310 }
<a name="l00311"></a>00311 
<a name="l00312"></a>00312 
<a name="l00313"></a>00313 <span class="comment">//------------------------------------------------------------------------------</span>
<a name="l00314"></a><a class="code" href="objdict_8h.html#0c4a1f975f361d0a6f744c3254743594">00314</a> <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#688e52d5ec8da35ad5c61b4337df495d">gene_SYNC_operational</a>()
<a name="l00315"></a>00315 { 
<a name="l00316"></a>00316    <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a> (0x3F02, <span class="stringliteral">"Entering in OPERATIONAL "</span>, 0); 
<a name="l00317"></a>00317    <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#09a0c85cd3da09d9cdf63a5ac4c39f77">PORTB</a>) &amp;= ~ 0x07; <span class="comment">// leds 0, 1, 2   : ON</span>
<a name="l00318"></a>00318    <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#09a0c85cd3da09d9cdf63a5ac4c39f77">PORTB</a>) |=   0x08; <span class="comment">// leds 3         : OFF</span>
<a name="l00319"></a>00319    
<a name="l00320"></a>00320    <span class="comment">// Filtering the CAN received msgs.</span>
<a name="l00321"></a>00321    <span class="comment">// 2 ways</span>
<a name="l00322"></a>00322    <span class="comment">// First :applying an automatic filter</span>
<a name="l00323"></a>00323    <span class="comment">// Second : The values of the filtering registers are mapped in the object dictionary,</span>
<a name="l00324"></a>00324    <span class="comment">// So that a filtering configuration can be downloaded by SDO in pre-operational mode</span>
<a name="l00325"></a>00325         
<a name="l00326"></a>00326         <span class="keywordflow">if</span> (<a class="code" href="objdict_8c.html#c6a202de14ed5a1ba3f7bef3c1408ee0">applyDownloadedFilters</a> == 0) {<span class="comment">// No downloaded configuration to apply</span>
<a name="l00327"></a>00327                 <a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> accept1 = 0x0000; <span class="comment">// Accept NMT</span>
<a name="l00328"></a>00328                 <a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> <a class="code" href="objdict_8c.html#c917a1516c699e38ca1335671fed3ccb">mask1</a> = 0x0FFF;   <span class="comment">// Mask NMT</span>
<a name="l00329"></a>00329                 <a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> accept2 = 0xE000; <span class="comment">// Accept NMT error control (heartbeat, nodeguard)</span>
<a name="l00330"></a>00330                 <a class="code" href="hcs12_2applicfg_8h.html#5528eeccf214bfe021532622d78c6a96">UNS16</a> <a class="code" href="objdict_8c.html#7dc98c2ef9a08148e275949b376282cb">mask2</a> = 0x0FFF;   <span class="comment">// Mask NMT error control (heartbeat, nodeguard)</span>
<a name="l00331"></a>00331                 
<a name="l00332"></a>00332                 <a class="code" href="structcanBusFilterInit.html">canBusFilterInit</a> filterConfiguration = 
<a name="l00333"></a>00333                                 {<span class="comment">// filters 3 and 4 not used, so configured like filter 1.</span>
<a name="l00334"></a>00334                         0x01,  <span class="comment">/* Filter on 16 bits. See Motorola Block Guide V02.14 */</span>
<a name="l00335"></a>00335             <span class="comment">/*canidarx, canidmrx */</span>                        
<a name="l00336"></a>00336                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(accept1 &gt;&gt; 8), (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(mask1 &gt;&gt; 8),    <span class="comment">/* filter 1 id10...3*/</span>
<a name="l00337"></a>00337                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)accept1       , (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)mask1,                     <span class="comment">/* filter 1 id2 ... */</span>
<a name="l00338"></a>00338                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(accept2 &gt;&gt; 8), (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(mask2 &gt;&gt; 8),    <span class="comment">/* filter 2 id10...3*/</span>
<a name="l00339"></a>00339                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)accept2       , (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)mask2,                     <span class="comment">/* filter 2 id2 ... */</span>
<a name="l00340"></a>00340                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(accept1 &gt;&gt; 8), (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(mask1 &gt;&gt; 8),    <span class="comment">/* filter 3 id10...3*/</span>
<a name="l00341"></a>00341                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)accept1       , (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)mask1,                     <span class="comment">/* filter 3 id2 ... */</span>
<a name="l00342"></a>00342                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(accept1 &gt;&gt; 8), (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(mask1 &gt;&gt; 8),    <span class="comment">/* filter 4 id10...3*/</span>
<a name="l00343"></a>00343                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)accept1       , (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)mask1                      <span class="comment">/* filter 4 id2 ... */</span>           
<a name="l00344"></a>00344                         };
<a name="l00345"></a>00345                         <a class="code" href="canOpenDriver_8c.html#751a41c9747b96ab400b5599370cea83">canChangeFilter</a>(<a class="code" href="candriver_8h.html#aec12501ba547723b21fd74636ea045a">CANOPEN_LINE_NUMBER_USED</a>, filterConfiguration);
<a name="l00346"></a>00346                         <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a> (0x3F03, <span class="stringliteral">"Internal CAN Rcv filter applied "</span>, 0); 
<a name="l00347"></a>00347         } 
<a name="l00348"></a>00348           <span class="keywordflow">else</span> { <span class="comment">// Apply filters downnloaded</span>
<a name="l00349"></a>00349                         <a class="code" href="structcanBusFilterInit.html">canBusFilterInit</a> filterConfiguration = 
<a name="l00350"></a>00350                                 {<span class="comment">// filters 3 and 4 not used, so configured like filter 1.</span>
<a name="l00351"></a>00351                         0x01,  <span class="comment">/* Filter on 16 bits. See Motorola Block Guide V02.14 */</span>
<a name="l00352"></a>00352             <span class="comment">/*canidarx, canidmrx */</span>                        
<a name="l00353"></a>00353                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)( <a class="code" href="objdict_8c.html#254f99d099ca6f0a734e77c0226eb46c">acceptanceFilter1</a>&gt;&gt; 8), (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(<a class="code" href="objdict_8c.html#c917a1516c699e38ca1335671fed3ccb">mask1</a> &gt;&gt; 8),    <span class="comment">/* filter 1 id10...3*/</span>
<a name="l00354"></a>00354                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)<a class="code" href="objdict_8c.html#254f99d099ca6f0a734e77c0226eb46c">acceptanceFilter1</a>       , (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)<a class="code" href="objdict_8c.html#c917a1516c699e38ca1335671fed3ccb">mask1</a>,                   <span class="comment">/* filter 1 id2 ... */</span>
<a name="l00355"></a>00355                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(<a class="code" href="objdict_8c.html#f6ce36bd51988682a6c1c6b6bb48d358">acceptanceFilter2</a> &gt;&gt; 8), (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(<a class="code" href="objdict_8c.html#7dc98c2ef9a08148e275949b376282cb">mask2</a> &gt;&gt; 8),     <span class="comment">/* filter 2 id10...3*/</span>
<a name="l00356"></a>00356                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)<a class="code" href="objdict_8c.html#f6ce36bd51988682a6c1c6b6bb48d358">acceptanceFilter2</a>       , (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)<a class="code" href="objdict_8c.html#7dc98c2ef9a08148e275949b376282cb">mask2</a>,                   <span class="comment">/* filter 2 id2 ... */</span>
<a name="l00357"></a>00357                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(<a class="code" href="objdict_8c.html#f6b4d7c56fb80e2b64b649b89b2ed9ca">acceptanceFilter3</a> &gt;&gt; 8), (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(<a class="code" href="objdict_8c.html#017e60df8f7a5ae5e2dddaf458045e8d">mask3</a> &gt;&gt; 8),    <span class="comment">/* filter 3 id10...3*/</span>
<a name="l00358"></a>00358                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)<a class="code" href="objdict_8c.html#f6b4d7c56fb80e2b64b649b89b2ed9ca">acceptanceFilter3</a>       , (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)<a class="code" href="objdict_8c.html#017e60df8f7a5ae5e2dddaf458045e8d">mask3</a>,                   <span class="comment">/* filter 3 id2 ... */</span>
<a name="l00359"></a>00359                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(<a class="code" href="objdict_8c.html#58c4e3e229107296a48ea47a91afea95">acceptanceFilter4</a> &gt;&gt; 8), (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)(<a class="code" href="objdict_8c.html#e0007c46695fc121ef6c2a6e6a511d17">mask4</a> &gt;&gt; 8),    <span class="comment">/* filter 4 id10...3*/</span>
<a name="l00360"></a>00360                 (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)<a class="code" href="objdict_8c.html#58c4e3e229107296a48ea47a91afea95">acceptanceFilter4</a>       , (<a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a>)<a class="code" href="objdict_8c.html#e0007c46695fc121ef6c2a6e6a511d17">mask4</a>                    <span class="comment">/* filter 4 id2 ... */</span>           
<a name="l00361"></a>00361                         };
<a name="l00362"></a>00362                         <a class="code" href="canOpenDriver_8c.html#751a41c9747b96ab400b5599370cea83">canChangeFilter</a>(<a class="code" href="candriver_8h.html#aec12501ba547723b21fd74636ea045a">CANOPEN_LINE_NUMBER_USED</a>, filterConfiguration);                 
<a name="l00363"></a>00363                         <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a> (0x3F04, <span class="stringliteral">"Downloaded CAN Rcv filter applied "</span>, 0); 
<a name="l00364"></a>00364         }
<a name="l00365"></a>00365 }
<a name="l00366"></a>00366 
<a name="l00367"></a>00367 <span class="comment">//------------------------------------------------------------------------------</span>
<a name="l00368"></a><a class="code" href="objdict_8h.html#22a7ae3e04ad4cccdbee597ce4a31843">00368</a> <span class="keywordtype">void</span> <a class="code" href="appli_8c.html#00e6a6d0f2186f329263023a7f1de155">gene_SYNC_stopped</a>()
<a name="l00369"></a>00369 {
<a name="l00370"></a>00370   <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a> (0x3F02, <span class="stringliteral">"Entering in STOPPED "</span>, 0); 
<a name="l00371"></a>00371   <a class="code" href="portsaccess_8h.html#cdf97ea78c88c125dbbe6f2409de6ec1">IO_PORTS_8</a>(<a class="code" href="ports__def_8h.html#09a0c85cd3da09d9cdf63a5ac4c39f77">PORTB</a>) |=   0x0E; <span class="comment">// leds 1, 2, 3, 4   : OFF</span>
<a name="l00372"></a>00372 }
<a name="l00373"></a>00373 
<a name="l00374"></a>00374 <span class="comment">// End functions which are part of Canfestival</span>
<a name="l00375"></a>00375 <span class="comment">//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$</span>
<a name="l00376"></a>00376 
<a name="l00377"></a>00377 
<a name="l00378"></a>00378 <span class="comment">/******************************************************************************/</span>
<a name="l00379"></a>00379 <span class="comment">/********************************* MAIN ***************************************/</span>
<a name="l00380"></a>00380 <span class="comment">/******************************************************************************/</span>
<a name="l00381"></a>00381 
<a name="l00382"></a>00382  
<a name="l00383"></a><a class="code" href="appli_8c.html#ef83014be811ae964a5ef7f0af7b46a2">00383</a> <a class="code" href="hcs12_2applicfg_8h.html#539234687760592d01a8b0d3357bc00e">UNS8</a> <a class="code" href="appli_8c.html#ef83014be811ae964a5ef7f0af7b46a2">main</a> (<span class="keywordtype">void</span>)
<a name="l00384"></a>00384 {
<a name="l00385"></a>00385 
<a name="l00386"></a>00386   <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3F34, <span class="stringliteral">"Entering in the main "</span>, 0);
<a name="l00387"></a>00387   <span class="comment">//----------------------------- INITIALISATION --------------------------------</span>
<a name="l00388"></a>00388   <a class="code" href="objdict_8c.html#f8bdf9fcfcd90a3000da3036277bcd39">gene_SYNC_Data</a>.<a class="code" href="structstruct__CO__Data.html#2ec2bc87656945d2c7dda7ebe662b245">heartbeatError</a> = <a class="code" href="appli_8c.html#07f58b5c2d6a07142f3e6e695798646b">gene_SYNC_heartbeatError</a>;
<a name="l00389"></a>00389   <a class="code" href="objdict_8c.html#f8bdf9fcfcd90a3000da3036277bcd39">gene_SYNC_Data</a>.<a class="code" href="structstruct__CO__Data.html#b45e9ca46cffe7924c35ae136db6a2b6">initialisation</a> = <a class="code" href="appli_8c.html#5249682c125c7e4ad9583bf63c20b5fa">gene_SYNC_initialisation</a>;
<a name="l00390"></a>00390   <a class="code" href="objdict_8c.html#f8bdf9fcfcd90a3000da3036277bcd39">gene_SYNC_Data</a>.<a class="code" href="structstruct__CO__Data.html#d7c66fb721e3f6279a6ff03bf91d82e2">preOperational</a> = <a class="code" href="appli_8c.html#ccd49c1b2614c38aeac93733ede6cd91">gene_SYNC_preOperational</a>;
<a name="l00391"></a>00391   <a class="code" href="objdict_8c.html#f8bdf9fcfcd90a3000da3036277bcd39">gene_SYNC_Data</a>.<a class="code" href="structstruct__CO__Data.html#d7c66fb721e3f6279a6ff03bf91d82e2">preOperational</a> = <a class="code" href="appli_8c.html#688e52d5ec8da35ad5c61b4337df495d">gene_SYNC_operational</a>;
<a name="l00392"></a>00392   <a class="code" href="objdict_8c.html#f8bdf9fcfcd90a3000da3036277bcd39">gene_SYNC_Data</a>.<a class="code" href="structstruct__CO__Data.html#89dd7dd17f9dd16b7a06c3cf30c2ca02">stopped</a> = <a class="code" href="appli_8c.html#00e6a6d0f2186f329263023a7f1de155">gene_SYNC_stopped</a>;
<a name="l00393"></a>00393 
<a name="l00394"></a>00394   
<a name="l00395"></a>00395   <span class="comment">/* Put the node in Initialisation mode */</span>
<a name="l00396"></a>00396   <a class="code" href="hcs12_2applicfg_8h.html#5f4e5133c4c3113931684d3aba518bba">MSG_WAR</a>(0x3F35, <span class="stringliteral">"Will entering in INIT "</span>, 0);
<a name="l00397"></a>00397   <a class="code" href="states_8c.html#0a5004efd1dedbee82a4f21ec5c44fb5">setState</a>(&amp;<a class="code" href="objdict_8c.html#f8bdf9fcfcd90a3000da3036277bcd39">gene_SYNC_Data</a>, <a class="code" href="states_8h.html#3136d2815abe9d284f985e0a7ec68646eb3ae26d7a1629aa0fc6c83f46306cf5">Initialisation</a>);
<a name="l00398"></a>00398 
<a name="l00399"></a>00399   <span class="comment">//----------------------------- START -----------------------------------------</span>
<a name="l00400"></a>00400   <span class="comment">/* Put the node in pre-operational mode */</span>
<a name="l00401"></a>00401   <span class="comment">//MSG_WAR(0x3F36, "va passer en pre-op", 0);</span>
<a name="l00402"></a>00402   <span class="comment">//setState(&amp;gene_SYNC_Data, Pre_operational);</span>
<a name="l00403"></a>00403 
<a name="l00404"></a>00404         <span class="comment">// Loop of receiving messages</span>
<a name="l00405"></a>00405   <span class="keywordflow">while</span> (1) {
<a name="l00406"></a>00406         <a class="code" href="structMessage.html">Message</a> m;
<a name="l00407"></a>00407         <span class="keywordflow">if</span> (<a class="code" href="canOpenDriver_8c.html#0bf58f014d47581c9ffd1b2db9a858d7">f_can_receive</a>(0, &amp;m)) {
<a name="l00408"></a>00408           <span class="comment">//MSG_WAR(0x3F36, "Msg received", m.cob_id.w);</span>
<a name="l00409"></a>00409           <a class="code" href="interrupt_8c.html#eb99ff49b4a6d5157416f9b5bd0d9c2c">lock</a>(); <span class="comment">// Not to have interruptions by timer, which can corrupt the data</span>
<a name="l00410"></a>00410           <a class="code" href="states_8c.html#3f8975650604cc23582f19a43fd4e518">canDispatch</a>(&amp;<a class="code" href="objdict_8c.html#f8bdf9fcfcd90a3000da3036277bcd39">gene_SYNC_Data</a>, &amp;m);
<a name="l00411"></a>00411           <a class="code" href="interrupt_8c.html#987ce601d6d4c8eedd68b58db3b7811a">unlock</a>();
<a name="l00412"></a>00412         }  
<a name="l00413"></a>00413         }
<a name="l00414"></a>00414 
<a name="l00415"></a>00415   <span class="keywordflow">return</span> (0); 
<a name="l00416"></a>00416 }
<a name="l00417"></a>00417 
<a name="l00418"></a>00418 
<a name="l00419"></a>00419 
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Jun 8 08:51:39 2007 for CanFestival by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
</body>
</html>