AVR port, thanks to Peter Christen, Comat AG.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/drivers/AVR/can_AVR.c Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,229 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+AVR Port: Andreas GLAUSER and Peter CHRISTEN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+//#define DEBUG_WAR_CONSOLE_ON
+//#define DEBUG_ERR_CONSOLE_ON
+
+#include "can_AVR.h"
+#include "canfestival.h"
+
+volatile unsigned char msg_received = 0;
+
+unsigned char canInit(unsigned int bitrate)
+/******************************************************************************
+Initialize the hardware to receive CAN messages and start the timer for the
+CANopen stack.
+INPUT bitrate bitrate in kilobit
+OUTPUT 1 if successful
+******************************************************************************/
+{
+ unsigned char i,k;
+ //- Pull-up on TxCAN & RxCAN one by one to use bit-addressing
+ CAN_PORT_DIR &= ~(1<<CAN_INPUT_PIN );
+ CAN_PORT_DIR &= ~(1<<CAN_OUTPUT_PIN);
+ CAN_PORT_OUT |= (1<<CAN_INPUT_PIN );
+ CAN_PORT_OUT |= (1<<CAN_OUTPUT_PIN);
+
+ Can_reset(); // Reset the CAN controller
+
+ if (bitrate <= 500)
+ {
+ // CANopen 10..500 kbit with 16 tq, sample point is at 14 tq
+ // all values are added to 1 by hardware
+ // Resynchronisation jump width (SJW) = 1 tq
+ // Propagation Time Segment (PRS) = 5 tq
+ // Phase Segment 1 (PHS1) = 8 tq
+ // Phase Segment 2 (PHS2) = 2 tq
+ // Total = 16 tq
+ CANBT1 = ((F_CPU/16/1000/bitrate-1) << BRP); // set bitrate
+ CANBT2 = ((1-1) << SJW) |((5-1) << PRS); // set SJW, PRS
+ CANBT3 = (((2-1) << PHS2) | ((8-1) << PHS1) | (1<<SMP)); // set PHS1, PHS2, 3 sample points
+ }
+ else
+ return 0;
+
+ // Reset all mailsboxes (MObs), filters are zero (accept all) by clear all MOb
+ // Set the lower MObs as rx buffer
+ for (i = 0; i < NB_MOB; i++)
+ {
+ Can_set_mob(i); // Change to MOb with the received message
+ Can_clear_mob(); // All MOb Registers=0
+ for (k = 0; k < NB_DATA_MAX; k++)
+ CANMSG = 0; // MOb data FIFO
+ if (i < NB_RX_MOB) // Is receive MOb
+ Can_config_rx_buffer(); // configure as receive buffer
+ }
+ // The tx MOb is still disabled, it will be set to tx mode when the first message will be sent
+ // Enable the general CAN interrupts
+ CANGIE = (1 << ENIT) | (1 << ENRX) | (1 << ENTX) | (0 << ENERR) | (0 << ENERG) | (0 << ENOVRT);
+ CANIE1 = 0x7F; // Enable the interrupts of all MObs (0..14)
+ CANIE2 = 0xFF;
+ Can_enable(); // Enable the CAN bus controller
+ return 1;
+}
+
+unsigned char canSend(CAN_PORT notused, Message *m)
+/******************************************************************************
+The driver send a CAN message passed from the CANopen stack
+INPUT CAN_PORT is not used (only 1 avaiable)
+ Message *m pointer to message to send
+OUTPUT 1 if hardware -> CAN frame
+******************************************************************************/
+{
+ unsigned char i;
+
+ for (i = START_TX_MOB; i < NB_MOB; i++) // Search the first free MOb
+ {
+ Can_set_mob(i); // Change to MOb
+ if ((CANCDMOB & CONMOB_MSK) == 0) // MOb disabled = free
+ {
+ break;
+ }
+ }
+ if (i < NB_MOB) // free MOb found
+ {
+ Can_set_mob(i); // Switch to the sending messagebox
+ Can_set_std_id(m->cob_id); // Set cob id
+ if (m->rtr) // Set remote transmission request
+ Can_set_rtr();
+ Can_set_dlc(m->len); // Set data lenght code
+
+ for (i= 0; i < (m->len); i++) // Add data bytes to the MOb
+ CANMSG = m->data[i];
+ // Start sending by writing the MB configuration register to transmit
+ Can_config_tx(); // Set the last MOb to transmit mode
+ return 1; // succesful
+ }
+ else
+ return 0; // not succesful
+}
+
+unsigned char canReceive(Message *m)
+/******************************************************************************
+The driver pass a received CAN message to the stack
+INPUT Message *m pointer to received CAN message
+OUTPUT 1 if a message received
+******************************************************************************/
+{
+ unsigned char i;
+
+ if (msg_received == 0)
+ return 0; // Nothing received
+
+ for (i = 0; i < NB_RX_MOB; i++) // Search the first MOb received
+ {
+ Can_set_mob(i); // Change to MOb
+ if ((CANCDMOB & CONMOB_MSK) == 0) // MOb disabled = received
+ {
+ msg_received--;
+ break;
+ }
+ }
+ if (i < NB_RX_MOB) // message found
+ {
+ Can_get_std_id(m->cob_id); // Get cob id
+ m->rtr = Can_get_rtr(); // Get remote transmission request
+ m->len = Can_get_dlc(); // Get data lenght code
+ for (i= 0; i < (m->len); i++) // get data bytes from the MOb
+ m->data[i] = CANMSG;
+ Can_config_rx_buffer(); // reset the MOb for receive
+ return 1; // message received
+ }
+ else // no message found
+ {
+ msg_received = 0; // reset counter
+ return 0; // no message received
+ }
+}
+
+#ifdef __IAR_SYSTEMS_ICC__
+#pragma type_attribute = __interrupt
+#pragma vector=CANIT_vect
+void CANIT_interrupt(void)
+#else // GCC
+ISR(CANIT_vect)
+#endif // GCC
+/******************************************************************************
+CAN Interrupt
+******************************************************************************/
+{
+ unsigned char i;
+
+ if (CANGIT & (1 << CANIT)) // is a messagebox interrupt
+ {
+ if ((CANSIT1 & TX_INT_MSK) == 0) // is a Rx interrupt
+ {
+ for (i = 0; (i < NB_RX_MOB) && (CANGIT & (1 << CANIT)); i++) // Search the first MOb received
+ {
+ Can_set_mob(i); // Change to MOb
+ if (CANSTMOB & MOB_RX_COMPLETED) // receive ok
+ {
+ Can_clear_status_mob(); // Clear status register
+ Can_mob_abort(); // disable the MOb = received
+ msg_received++;
+ }
+ else if (CANSTMOB & ~MOB_RX_COMPLETED) // error
+ {
+ Can_clear_status_mob(); // Clear status register
+ Can_config_rx_buffer(); // reconfigure as receive buffer
+ }
+ }
+ }
+ else // is a Tx interrupt
+ {
+ for (i = NB_RX_MOB; i < NB_MOB; i++) // Search the first MOb transmitted
+ {
+ Can_set_mob(i); // change to MOb
+ if (CANSTMOB) // transmission ok or error
+ {
+ Can_clear_status_mob(); // clear status register
+ CANCDMOB = 0; // disable the MOb
+ break;
+ }
+ }
+ }
+ }
+
+ // Bus Off Interrupt Flag
+ if (CANGIT & (1 << BOFFIT)) // Finaly clear the interrupt status register
+ {
+ CANGIT |= (1 << BOFFIT); // Clear the interrupt flag
+ }
+ else
+ CANGIT |= (1 << BXOK) | (1 << SERG) | (1 << CERG) | (1 << FERG) | (1 << AERG);// Finaly clear other interrupts
+}
+
+#ifdef __IAR_SYSTEMS_ICC__
+#pragma type_attribute = __interrupt
+#pragma vector=OVRIT_vect
+void OVRIT_interrupt(void)
+#else // GCC
+ISR(OVRIT_vect)
+#endif // GCC
+/******************************************************************************
+CAN Timer Interrupt
+******************************************************************************/
+{
+ CANGIT |= (1 << OVRTIM);
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/drivers/AVR/timer_AVR.c Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,93 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+AVR Port: Andreas GLAUSER and Peter CHRISTEN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+// AVR implementation of the CANopen timer driver, uses Timer 3 (16 bit)
+
+// Includes for the Canfestival driver
+#include "canfestival.h"
+#include "timer.h"
+
+// Define the timer registers
+#define TimerAlarm OCR3B
+#define TimerCounter TCNT3
+
+/************************** Modul variables **********************************/
+// Store the last timer value to calculate the elapsed time
+static TIMEVAL last_time_set = TIMEVAL_MAX;
+
+void initTimer(void)
+/******************************************************************************
+Initializes the timer, turn on the interrupt and put the interrupt time to zero
+INPUT void
+OUTPUT void
+******************************************************************************/
+{
+ TimerAlarm = 0; // Set it back to the zero
+ // Set timer 3 for CANopen operation tick 8us max, time is 524ms
+ TCCR3B = 1 << CS31 | 1 << CS30; // Timer 3 normal, mit CK/64
+ TIMSK3 = 1 << OCIE3B; // Enable the interrupt
+}
+
+void setTimer(TIMEVAL value)
+/******************************************************************************
+Set the timer for the next alarm.
+INPUT value TIMEVAL (unsigned long)
+OUTPUT void
+******************************************************************************/
+{
+ TimerAlarm += (int)value; // Add the desired time to timer interrupt time
+}
+
+TIMEVAL getElapsedTime(void)
+/******************************************************************************
+Return the elapsed time to tell the Stack how much time is spent since last call.
+INPUT void
+OUTPUT value TIMEVAL (unsigned long) the elapsed time
+******************************************************************************/
+{
+ unsigned int timer = TimerCounter; // Copy the value of the running timer
+ if (timer > last_time_set) // In case the timer value is higher than the last time.
+ return (timer - last_time_set); // Calculate the time difference
+ else if (timer < last_time_set)
+ return (last_time_set - timer); // Calculate the time difference
+ else
+ return TIMEVAL_MAX;
+}
+
+#ifdef __IAR_SYSTEMS_ICC__
+#pragma type_attribute = __interrupt
+#pragma vector=TIMER3_COMPB_vect
+void TIMER3_COMPB_interrupt(void)
+#else // GCC
+ISR(TIMER3_COMPB_vect)
+#endif // GCC
+/******************************************************************************
+Interruptserviceroutine Timer 3 Compare B for the CAN timer
+******************************************************************************/
+{
+ last_time_set = TimerCounter;
+ TimeDispatch(); // Call the time handler of the stack to adapt the elapsed time
+}
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/GCC/SlaveAVR.aps Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,1 @@
+<AVRStudio><MANAGEMENT><ProjectName>SlaveAVR</ProjectName><Created>16-Dec-2007 22:17:10</Created><LastEdit>29-Jan-2008 17:17:04</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>16-Dec-2007 22:17:10</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\SlaveAVR.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\GCC\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>JTAGICE mkII</CURRENT_TARGET><CURRENT_PART>AT90CAN128</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0><Variables>msg_received</Variables><Variables>i</Variables><Variables>pExpectedSize</Variables><Variables>pExpectedSize</Variables></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><modules><module></module></modules><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\drivers\AVR\can_AVR.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\dcf.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\timer.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\emcy.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\lifegrd.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\nmtSlave.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\objacces.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\pdo.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\sdo.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\states.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\sync.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\ObjDict.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\main.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\nmtMaster.c</SOURCEFILE><SOURCEFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\drivers\AVR\timer_AVR.c</SOURCEFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\can_AVR.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\applicfg.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\canfestival.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\can.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\data.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\dcf.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\def.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\emcy.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\lifegrd.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\nmtMaster.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\nmtSlave.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\objacces.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\objdictdef.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\pdo.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\sdo.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\states.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\sync.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\sysdep.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\timer.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\ObjDict.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\hardware.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\timerscfg.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\can_drv.h</HEADERFILE><HEADERFILE>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\config.h</HEADERFILE><OTHERFILE>default\SlaveAVR.map</OTHERFILE><OTHERFILE>default\SlaveAVR.lss</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>NO</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE></EXTERNALMAKEFILE><PART>at90can128</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>SlaveAVR.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>0</ISDIRTY><OPTIONS><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\drivers\AVR\can_AVR.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\drivers\AVR\timers_AVR.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\src\dcf.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\src\emcy.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\src\lifegrd.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\src\nmtSlave.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\src\objacces.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\src\pdo.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\src\sdo.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\src\states.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\src\sync.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>C:\Dokumente und Einstellungen\Peter\Eigene Dateien\Sourcecode\CanFestival-3\src\timer.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>ObjDict.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS><INCLUDE>..\..\..\..\include\AVR\</INCLUDE><INCLUDE>.\</INCLUDE><INCLUDE>..\..\..\..\include\</INCLUDE></INCDIRS><LIBDIRS/><LIBS/><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Os -fsigned-char -fpack-struct</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\programme\WinAVR\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\programme\WinAVR\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><JTAGICEmkII><DAISY_CHAIN>0</DAISY_CHAIN><DEVS_BEFORE>0</DEVS_BEFORE><DEVS_AFTER>0</DEVS_AFTER><INSTRBITS_BEFORE>0</INSTRBITS_BEFORE><INSTRBITS_AFTER>0</INSTRBITS_AFTER><BAUDRATE>19200</BAUDRATE><JTAG_FREQ>8000000</JTAG_FREQ><TIMERS_RUNNING>0</TIMERS_RUNNING><PRESERVE_EEPROM>1</PRESERVE_EEPROM><ALWAYS_EXT_RESET>0</ALWAYS_EXT_RESET><PRINT_BRK_CAUSE>0</PRINT_BRK_CAUSE><ENABLE_IDR_IN_RUN_MODE>0</ENABLE_IDR_IN_RUN_MODE><ALLOW_BRK_INSTR>1</ALLOW_BRK_INSTR><STOPIF_ENTRYFUNC_NOTFOUND>1</STOPIF_ENTRYFUNC_NOTFOUND><ENTRY_FUNCTION>main</ENTRY_FUNCTION><REPROGRAM>2</REPROGRAM></JTAGICEmkII><AVRSimulator><FuseExt>0</FuseExt><FuseHigh>138</FuseHigh><FuseLow>56</FuseLow><LockBits>123</LockBits><Frequency>8000000</Frequency><ExtSRAM>0</ExtSRAM><SimBoot>1</SimBoot><SimBootnew>1</SimBootnew></AVRSimulator><ProjectFiles><Files><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\can_AVR.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\applicfg.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\canfestival.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\can.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\data.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\dcf.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\def.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\emcy.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\lifegrd.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\nmtMaster.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\nmtSlave.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\objacces.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\objdictdef.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\pdo.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\sdo.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\states.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\sync.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\sysdep.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\timer.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\ObjDict.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\hardware.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\timerscfg.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\can_drv.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\config.h</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\drivers\AVR\can_AVR.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\dcf.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\timer.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\emcy.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\lifegrd.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\nmtSlave.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\objacces.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\pdo.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\sdo.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\states.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\sync.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\ObjDict.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\main.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\nmtMaster.c</Name><Name>I:\Entwicklung\Firmware\CAN\CanFestival-3\drivers\AVR\timer_AVR.c</Name></Files></ProjectFiles><IOView><usergroups/><sort sorted="1" column="1" ordername="0" orderaddress="1" ordergroup="0"/></IOView><Files><File00000><FileId>00000</FileId><FileName>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\canfestival.h</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\applicfg.h</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\timerscfg.h</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\can.h</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\can_AVR.h</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>i:\entwicklung\Firmware\CAN\canfestival-3\drivers\AVR\can_AVR.c</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\main.c</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>i:\entwicklung\Firmware\CAN\canfestival-3\src\timer.c</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>I:\Entwicklung\Firmware\CAN\CanFestival-3\include\timer.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\sdo.c</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>I:\Entwicklung\Firmware\CAN\CanFestival-3\drivers\AVR\timer_AVR.c</FileName><Status>1</Status></File00010></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/GCC/default/Makefile Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,120 @@
+###############################################################################
+# Makefile for the project SlaveAVR
+###############################################################################
+
+## General Flags
+PROJECT = SlaveAVR
+MCU = at90can128
+TARGET = SlaveAVR.elf
+CC = avr-gcc.exe
+
+## Options common to compile, link and assembly rules
+COMMON = -mmcu=$(MCU)
+
+## Compile options common for all C compilation units.
+CFLAGS = $(COMMON)
+CFLAGS += -Wall -gdwarf-2 -Os -fsigned-char -fpack-struct
+CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
+
+## Assembly specific flags
+ASMFLAGS = $(COMMON)
+ASMFLAGS += $(CFLAGS)
+ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
+
+## Linker flags
+LDFLAGS = $(COMMON)
+LDFLAGS += -Wl,-Map=SlaveAVR.map
+
+
+## Intel Hex file production flags
+HEX_FLASH_FLAGS = -R .eeprom
+
+HEX_EEPROM_FLAGS = -j .eeprom
+HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
+HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
+
+
+## Include Directories
+INCLUDES = -I"I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\GCC\..\..\..\..\include\AVR" -I"I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\GCC\." -I"I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\GCC\..\..\..\..\include"
+
+## Objects that must be built in order to link
+OBJECTS = can_AVR.o dcf.o timer.o emcy.o lifegrd.o nmtSlave.o objacces.o pdo.o sdo.o states.o sync.o ObjDict.o main.o nmtMaster.o timer_AVR.o
+
+## Objects explicitly added by the user
+LINKONLYOBJECTS =
+
+## Build
+all: $(TARGET) SlaveAVR.hex SlaveAVR.eep SlaveAVR.lss size
+
+## Compile
+can_AVR.o: ../../../../../drivers/AVR/can_AVR.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+dcf.o: ../../../../../src/dcf.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+timer.o: ../../../../../src/timer.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+emcy.o: ../../../../../src/emcy.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+lifegrd.o: ../../../../../src/lifegrd.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+nmtSlave.o: ../../../../../src/nmtSlave.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+objacces.o: ../../../../../src/objacces.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+pdo.o: ../../../../../src/pdo.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+sdo.o: ../../../../../src/sdo.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+states.o: ../../../../../src/states.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+sync.o: ../../../../../src/sync.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+ObjDict.o: ../../ObjDict.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+main.o: ../../main.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+nmtMaster.o: ../../../../../src/nmtMaster.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+timer_AVR.o: ../../../../../drivers/AVR/timer_AVR.c
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+##Link
+$(TARGET): $(OBJECTS)
+ $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
+
+%.hex: $(TARGET)
+ avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@
+
+%.eep: $(TARGET)
+ -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0
+
+%.lss: $(TARGET)
+ avr-objdump -h -S $< > $@
+
+size: ${TARGET}
+ @echo
+ @avr-size -C --mcu=${MCU} ${TARGET}
+
+## Clean target
+.PHONY: clean
+clean:
+ -rm -rf $(OBJECTS) SlaveAVR.elf dep/* SlaveAVR.hex SlaveAVR.eep SlaveAVR.lss SlaveAVR.map
+
+
+## Other dependencies
+-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/GCC/slaveavr.aws Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,1 @@
+<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="AT90CAN128"/><Files><File00000 Name="I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\canfestival.h" Position="525 118 1113 522" LineCol="28 0" State="Maximized"/><File00001 Name="I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\applicfg.h" Position="781 93 1359 465" LineCol="0 0" State="Maximized"/><File00002 Name="I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\timerscfg.h" Position="557 152 1135 524" LineCol="0 0" State="Maximized"/><File00003 Name="I:\Entwicklung\Firmware\CAN\CanFestival-3\include\can.h" Position="579 175 1157 547" LineCol="0 0" State="Maximized"/><File00004 Name="I:\Entwicklung\Firmware\CAN\CanFestival-3\include\AVR\can_AVR.h" Position="499 71 1219 602" LineCol="0 0" State="Maximized"/><File00005 Name="i:\entwicklung\Firmware\CAN\canfestival-3\drivers\AVR\can_AVR.c" Position="623 221 1201 593" LineCol="27 24" State="Maximized"/><File00006 Name="I:\Entwicklung\Firmware\CAN\CanFestival-3\examples\AVR\DS401_Slave\main.c" Position="645 244 1223 616" LineCol="33 20" State="Maximized"/><File00007 Name="i:\entwicklung\Firmware\CAN\canfestival-3\src\timer.c" Position="263 72 1029 744" LineCol="136 0" State="Maximized"/><File00008 Name="I:\Entwicklung\Firmware\CAN\CanFestival-3\include\timer.h" Position="491 83 1073 459" LineCol="61 0" State="Maximized"/><File00009 Name="I:\Entwicklung\Firmware\CAN\CanFestival-3\src\sdo.c" Position="267 96 827 533" LineCol="521 0" State="Maximized"/><File00010 Name="I:\Entwicklung\Firmware\CAN\CanFestival-3\drivers\AVR\timer_AVR.c" Position="289 119 849 556" LineCol="0 0" State="Maximized"/></Files></AVRWorkspace>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/IAR/Exe/SlaveAVR_dbg.aps Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,1 @@
+<AVRStudio><MANAGEMENT><ProjectName>SlaveAVR_dbg</ProjectName><Created>03-Jan-2008 22:16:17</Created><LastEdit>03-Jan-2008 22:18:36</LastEdit><ICON>Object.bmp</ICON><ProjectType>1</ProjectType><Created>03-Jan-2008 22:16:17</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName></ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>SlaveAVR.dbg</ObjectFile><EntryFile></EntryFile><SaveFolder>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\examples\AVR\DS401_Slave\IAR\Exe\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>JTAGICE mkII</CURRENT_TARGET><CURRENT_PART>AT90CAN128</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><modules><module></module></modules><Triggers></Triggers></Debugger><ProjectFiles><Files><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\examples\AVR\DS401_Slave\ObjDict.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\examples\AVR\DS401_Slave\ObjDict.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\applicfg.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\config.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\timerscfg.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\can.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\data.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\def.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\emcy.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\lifegrd.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\nmtMaster.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\objacces.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\objdictdef.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\pdo.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\sdo.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\states.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\sync.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\timer.h</Name><Name>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\clib\stdarg.h</Name><Name>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\clib\stdio.h</Name><Name>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\clib\string.h</Name><Name>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\clib\sysmac.h</Name><Name>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\intrinsics.h</Name><Name>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\ioavr.h</Name><Name>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\iocan128.h</Name><Name>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\iomacro.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\drivers\AVR\can_AVR.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\examples\AVR\DS401_Slave\hardware.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\AtmelLib\can_drv.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\can_AVR.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\canfestival.h</Name><Name>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\clib\stddef.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\dcf.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\sysdep.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\dcf.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\emcy.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\lifegrd.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\examples\AVR\DS401_Slave\main.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\nmtSlave.h</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\nmtSlave.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\objacces.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\pdo.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\sdo.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\states.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\sync.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\timer.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\drivers\AVR\timers_AVR.c</Name><Name>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\timers_AVR.h</Name></Files></ProjectFiles><JTAGICEmkII><DAISY_CHAIN>0</DAISY_CHAIN><DEVS_BEFORE>0</DEVS_BEFORE><DEVS_AFTER>0</DEVS_AFTER><INSTRBITS_BEFORE>0</INSTRBITS_BEFORE><INSTRBITS_AFTER>0</INSTRBITS_AFTER><BAUDRATE>19200</BAUDRATE><JTAG_FREQ>1000000</JTAG_FREQ><TIMERS_RUNNING>0</TIMERS_RUNNING><PRESERVE_EEPROM>1</PRESERVE_EEPROM><ALWAYS_EXT_RESET>0</ALWAYS_EXT_RESET><PRINT_BRK_CAUSE>0</PRINT_BRK_CAUSE><ENABLE_IDR_IN_RUN_MODE>0</ENABLE_IDR_IN_RUN_MODE><ALLOW_BRK_INSTR>1</ALLOW_BRK_INSTR><STOPIF_ENTRYFUNC_NOTFOUND>1</STOPIF_ENTRYFUNC_NOTFOUND><ENTRY_FUNCTION>main</ENTRY_FUNCTION><REPROGRAM>1</REPROGRAM></JTAGICEmkII><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\examples\AVR\DS401_Slave\ObjDict.c</FileName><Status>258</Status></File00000><File00001><FileId>00001</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\examples\AVR\DS401_Slave\ObjDict.h</FileName><Status>258</Status></File00001><File00002><FileId>00002</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\applicfg.h</FileName><Status>258</Status></File00002><File00003><FileId>00003</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\config.h</FileName><Status>258</Status></File00003><File00004><FileId>00004</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\timerscfg.h</FileName><Status>258</Status></File00004><File00005><FileId>00005</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\can.h</FileName><Status>258</Status></File00005><File00006><FileId>00006</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\data.h</FileName><Status>258</Status></File00006><File00007><FileId>00007</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\def.h</FileName><Status>258</Status></File00007><File00008><FileId>00008</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\emcy.h</FileName><Status>258</Status></File00008><File00009><FileId>00009</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\lifegrd.h</FileName><Status>258</Status></File00009><File00010><FileId>00010</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\nmtMaster.h</FileName><Status>258</Status></File00010><File00011><FileId>00011</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\objacces.h</FileName><Status>258</Status></File00011><File00012><FileId>00012</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\objdictdef.h</FileName><Status>258</Status></File00012><File00013><FileId>00013</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\pdo.h</FileName><Status>258</Status></File00013><File00014><FileId>00014</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\sdo.h</FileName><Status>258</Status></File00014><File00015><FileId>00015</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\states.h</FileName><Status>258</Status></File00015><File00016><FileId>00016</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\sync.h</FileName><Status>258</Status></File00016><File00017><FileId>00017</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\timer.h</FileName><Status>258</Status></File00017><File00018><FileId>00018</FileId><FileName>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\clib\stdarg.h</FileName><Status>258</Status></File00018><File00019><FileId>00019</FileId><FileName>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\clib\stdio.h</FileName><Status>258</Status></File00019><File00020><FileId>00020</FileId><FileName>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\clib\string.h</FileName><Status>258</Status></File00020><File00021><FileId>00021</FileId><FileName>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\clib\sysmac.h</FileName><Status>258</Status></File00021><File00022><FileId>00022</FileId><FileName>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\intrinsics.h</FileName><Status>258</Status></File00022><File00023><FileId>00023</FileId><FileName>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\ioavr.h</FileName><Status>258</Status></File00023><File00024><FileId>00024</FileId><FileName>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\iocan128.h</FileName><Status>258</Status></File00024><File00025><FileId>00025</FileId><FileName>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\iomacro.h</FileName><Status>258</Status></File00025><File00026><FileId>00026</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\drivers\AVR\can_AVR.c</FileName><Status>258</Status></File00026><File00027><FileId>00027</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\examples\AVR\DS401_Slave\hardware.h</FileName><Status>258</Status></File00027><File00028><FileId>00028</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\AtmelLib\can_drv.h</FileName><Status>258</Status></File00028><File00029><FileId>00029</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\can_AVR.h</FileName><Status>258</Status></File00029><File00030><FileId>00030</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\canfestival.h</FileName><Status>258</Status></File00030><File00031><FileId>00031</FileId><FileName>C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\inc\clib\stddef.h</FileName><Status>258</Status></File00031><File00032><FileId>00032</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\dcf.h</FileName><Status>258</Status></File00032><File00033><FileId>00033</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\sysdep.h</FileName><Status>258</Status></File00033><File00034><FileId>00034</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\dcf.c</FileName><Status>258</Status></File00034><File00035><FileId>00035</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\emcy.c</FileName><Status>258</Status></File00035><File00036><FileId>00036</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\lifegrd.c</FileName><Status>258</Status></File00036><File00037><FileId>00037</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\examples\AVR\DS401_Slave\main.c</FileName><Status>259</Status></File00037><File00038><FileId>00038</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\nmtSlave.h</FileName><Status>258</Status></File00038><File00039><FileId>00039</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\nmtSlave.c</FileName><Status>258</Status></File00039><File00040><FileId>00040</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\objacces.c</FileName><Status>258</Status></File00040><File00041><FileId>00041</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\pdo.c</FileName><Status>258</Status></File00041><File00042><FileId>00042</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\sdo.c</FileName><Status>258</Status></File00042><File00043><FileId>00043</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\states.c</FileName><Status>258</Status></File00043><File00044><FileId>00044</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\sync.c</FileName><Status>258</Status></File00044><File00045><FileId>00045</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\src\timer.c</FileName><Status>258</Status></File00045><File00046><FileId>00046</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\drivers\AVR\timers_AVR.c</FileName><Status>258</Status></File00046><File00047><FileId>00047</FileId><FileName>C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\include\AVR\timers_AVR.h</FileName><Status>258</Status></File00047></Files><Workspace><File00037><Position>262 71 1048 804</Position><LineCol>100 0</LineCol><State>Maximized</State></File00037></Workspace><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/IAR/Exe/slaveavr_dbg.aws Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,1 @@
+<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="AT90CAN128"/><Files><File00037 Name="C:\Dokumente und Einstellungen\cp\Eigene Dateien\CanFestival-3\examples\AVR\DS401_Slave\main.c" Position="262 71 1048 804" LineCol="100 0" State="Maximized"/></Files></AVRWorkspace>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/IAR/SlaveAVR.dep Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+ <fileVersion>2</fileVersion>
+ <configuration>
+ <name>Debug</name>
+ <outputs>
+ <file>$PROJ_DIR$\..\..\..\..\drivers\AVR\timer_AVR.C</file>
+ <file>$PROJ_DIR$\..\..\..\..\drivers\AVR\can_AVR.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\emcy.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\dcf.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\lifegrd.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\nmtSlave.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\sdo.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\states.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\sync.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\timer.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\nmtMaster.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\pdo.c</file>
+ <file>$PROJ_DIR$\..\..\..\..\src\objacces.c</file>
+ <file>$PROJ_DIR$\..\main.c</file>
+ <file>$PROJ_DIR$\..\ObjDict.c</file>
+ </outputs>
+ </configuration>
+ <configuration>
+ <name>Release</name>
+ <outputs>
+ <file>$TOOLKIT_DIR$\inc\ioavr.h</file>
+ <file>$PROJ_DIR$\CANopen\src\sync.c</file>
+ <file>$PROJ_DIR$\Release\Obj\can_AVR.r90</file>
+ <file>$PROJ_DIR$\Release\Obj\states.pbi</file>
+ <file>$PROJ_DIR$\Release\Obj\timers_AVR.r90</file>
+ <file>$PROJ_DIR$\Release\Obj\SlaveAVR.pbd</file>
+ <file>$PROJ_DIR$\Release\Exe\SlaveAVR.hex</file>
+ <file>$PROJ_DIR$\CANopen\src\nmtSlave.c</file>
+ <file>$PROJ_DIR$\constant.h</file>
+ <file>$PROJ_DIR$\CANopen\src\timer.c</file>
+ <file>$PROJ_DIR$\Release\Obj\timer.pbi</file>
+ <file>$PROJ_DIR$\CANopen\CANDriver\can_AVR.c</file>
+ <file>$PROJ_DIR$\Release\Obj\nmtSlave.r90</file>
+ <file>$PROJ_DIR$\CANopen\src\sdo.c</file>
+ <file>$PROJ_DIR$\hardware.h</file>
+ <file>$PROJ_DIR$\Release\Obj\pdo.r90</file>
+ <file>$PROJ_DIR$\CANopen\src\states.c</file>
+ <file>$PROJ_DIR$\Release\Obj\main.pbi</file>
+ <file>$PROJ_DIR$\Release\Obj\states.r90</file>
+ <file>$PROJ_DIR$\Release\Obj\can_AVR.pbi</file>
+ <file>$PROJ_DIR$\main.c</file>
+ <file>$PROJ_DIR$\CANopen\src\objacces.c</file>
+ <file>$PROJ_DIR$\CANopen\src\pdo.c</file>
+ <file>$PROJ_DIR$\Release\Obj\SlaveAVR.r90</file>
+ <file>$PROJ_DIR$\Release\Obj\objacces.r90</file>
+ <file>$PROJ_DIR$\CANopen\src\lifegrd.c</file>
+ <file>$PROJ_DIR$\Release\Obj\lifegrd.pbi</file>
+ <file>$PROJ_DIR$\CANopen\SlaveAVR.h</file>
+ <file>$PROJ_DIR$\Release\Obj\nmtSlave.pbi</file>
+ <file>$PROJ_DIR$\Release\Obj\pdo.pbi</file>
+ <file>$PROJ_DIR$\Release\Obj\timer.r90</file>
+ <file>$PROJ_DIR$\CANopen\SlaveAVR.c</file>
+ <file>$PROJ_DIR$\Release\Obj\timers_AVR.pbi</file>
+ <file>$TOOLKIT_DIR$\inc\intrinsics.h</file>
+ <file>$PROJ_DIR$\Release\Obj\lifegrd.r90</file>
+ <file>$PROJ_DIR$\Release\Obj\sync.r90</file>
+ <file>$PROJ_DIR$\Release\Obj\sync.pbi</file>
+ <file>$PROJ_DIR$\Release\Obj\sdo.r90</file>
+ <file>$PROJ_DIR$\Release\Obj\SlaveAVR.pbi</file>
+ <file>$PROJ_DIR$\CANopen\CANDriver\timers_AVR.c</file>
+ <file>$PROJ_DIR$\Release\Obj\objacces.pbi</file>
+ <file>$PROJ_DIR$\Release\Obj\main.r90</file>
+ <file>$PROJ_DIR$\Release\Obj\sdo.pbi</file>
+ <file>$PROJ_DIR$\controller.h</file>
+ </outputs>
+ <file>
+ <name>$PROJ_DIR$\CANopen\src\sync.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 35</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 36</file>
+ </tool>
+ </outputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\Release\Obj\SlaveAVR.pbd</name>
+ <inputs>
+ <tool>
+ <name>BILINK</name>
+ <file> 38 19 26 17 28 40 29 42 3 36 10 32</file>
+ </tool>
+ </inputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\CANopen\src\nmtSlave.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 12</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 28</file>
+ </tool>
+ </outputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\CANopen\src\timer.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 30</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 10</file>
+ </tool>
+ </outputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\CANopen\CANDriver\can_AVR.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 2</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 19</file>
+ </tool>
+ </outputs>
+ </file>
+ <file>
+ <name>[ROOT_NODE]</name>
+ <outputs>
+ <tool>
+ <name>XLINK</name>
+ <file> 6</file>
+ </tool>
+ </outputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\CANopen\src\sdo.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 37</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 42</file>
+ </tool>
+ </outputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\CANopen\src\states.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 18</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 3</file>
+ </tool>
+ </outputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\main.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 41</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 17</file>
+ </tool>
+ </outputs>
+ <inputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 43 0</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 43 0 33 14 8</file>
+ </tool>
+ </inputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\CANopen\src\objacces.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 24</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 40</file>
+ </tool>
+ </outputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\CANopen\src\pdo.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 15</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 29</file>
+ </tool>
+ </outputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\CANopen\src\lifegrd.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 34</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 26</file>
+ </tool>
+ </outputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\CANopen\SlaveAVR.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 23</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 38</file>
+ </tool>
+ </outputs>
+ <inputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 27</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 27</file>
+ </tool>
+ </inputs>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\CANopen\CANDriver\timers_AVR.c</name>
+ <outputs>
+ <tool>
+ <name>ICCAVR</name>
+ <file> 4</file>
+ </tool>
+ <tool>
+ <name>BICOMP</name>
+ <file> 32</file>
+ </tool>
+ </outputs>
+ </file>
+ <forcedrebuild>
+ <name>[MULTI_TOOL]</name>
+ <tool>XLINK</tool>
+ </forcedrebuild>
+ </configuration>
+</project>
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/IAR/SlaveAVR.ewp Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,1979 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+ <fileVersion>1</fileVersion>
+ <configuration>
+ <name>Debug</name>
+ <toolchain>
+ <name>AVR</name>
+ </toolchain>
+ <debug>1</debug>
+ <settings>
+ <name>General</name>
+ <archiveVersion>4</archiveVersion>
+ <data>
+ <version>7</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>GGEnhancedCore</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Variant Memory</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ExePath</name>
+ <state>Exe</state>
+ </option>
+ <option>
+ <name>ObjPath</name>
+ <state>Debug\Obj</state>
+ </option>
+ <option>
+ <name>ListPath</name>
+ <state>Debug\List</state>
+ </option>
+ <option>
+ <name>GGEnableConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GG64KFlash</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GG64BitDoubles</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GGFPSLICCOnfig</name>
+ <version>0</version>
+ <state>3</state>
+ </option>
+ <option>
+ <name>LCEnableBitDefs</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>LCHeapSize</name>
+ <state>0x20</state>
+ </option>
+ <option>
+ <name>SCCStackSize</name>
+ <state>0x1A0</state>
+ </option>
+ <option>
+ <name>SCExtCStack</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SCRStackSize</name>
+ <state>40</state>
+ </option>
+ <option>
+ <name>SCExtRStack</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SCEnableBus</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SCAddWaitstate</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SCRamBase</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCRamSize</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCRomBase</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCRomSize</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCNVBase</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCNVSize</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCInitWithReti</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GOutputBinary</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GGEepromUtil</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GGEepromUtilSize</name>
+ <state>4096</state>
+ </option>
+ <option>
+ <name>New Variant Processor</name>
+ <version>19</version>
+ <state>29</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelect</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>RTDescription</name>
+ <state>Use the legacy C runtime library.</state>
+ </option>
+ <option>
+ <name>RTConfigPath</name>
+ <state></state>
+ </option>
+ <option>
+ <name>RTLibraryPath</name>
+ <state>$TOOLKIT_DIR$\LIB\CLIB\cl3s-ec_mul.r90</state>
+ </option>
+ <option>
+ <name>Input variant</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>Input description</name>
+ <state>No float.</state>
+ </option>
+ <option>
+ <name>Output variant</name>
+ <version>0</version>
+ <state>3</state>
+ </option>
+ <option>
+ <name>Output description</name>
+ <state>No float, no field width, no precision.</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelectSlave</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>GeneralEnableMisra</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraVerbose</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LCTinyHeapSize</name>
+ <state>0x10</state>
+ </option>
+ <option>
+ <name>LCNearHeapSize</name>
+ <state>0x20</state>
+ </option>
+ <option>
+ <name>LCFarHeapSize</name>
+ <state>0x1000</state>
+ </option>
+ <option>
+ <name>LCHugeHeapSize</name>
+ <state>0x1000</state>
+ </option>
+ <option>
+ <name>LCsHeapConfigText</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GGNoMULInstruction</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ICCAVR</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <version>12</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>CCVariantProcessor</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnhancedCore</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCVariantMemory</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCDefines</name>
+ <state>DEBUG</state>
+ </option>
+ <option>
+ <name>CCPreprocFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocComments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMnemonics</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMessages</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagSuppress</name>
+ <state>Pa050</state>
+ </option>
+ <option>
+ <name>CCDiagRemark</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagWarning</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagError</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCWarnAsError</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCConstInRAM</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCInitInFlash</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCForceVariables</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOldCallConv</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLockRegs</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptSizeSpeed</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptimization</name>
+ <version>1</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>CCAllowList</name>
+ <version>3</version>
+ <state>111111</state>
+ </option>
+ <option>
+ <name>CCCrossCallPassesList</name>
+ <version>8</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>CCObjUseModuleName</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCObjModuleName</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDebugInfo</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCNoErrorMsg</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CC64BitDoubles</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CC64KFlash</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableExtBus</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableBitDefs</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptForceCrossCall</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCharIs</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCExt</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IExtraOptions</name>
+ <state>--string_literals_in_flash</state>
+ </option>
+ <option>
+ <name>IExtraOptionsCheck</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCMultibyteSupport</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRequirePrototypes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCompilerRuntimeInfo</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>newCCIncludePaths</name>
+ <state>$PROJ_DIR$\..</state>
+ <state>$PROJ_DIR$\..\..\..\..\include</state>
+ <state>$PROJ_DIR$\..\..\..\..\include\AVR</state>
+ <state>$PROJ_DIR$\..\..\..\..\include\AVR\AtmelLib</state>
+ </option>
+ <option>
+ <name>CCStdIncCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCStdIncludePaths</name>
+ <state>$TOOLKIT_DIR$\INC\</state>
+ <state>$TOOLKIT_DIR$\INC\CLIB\</state>
+ </option>
+ <option>
+ <name>CCEepromSize</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLockRegsSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptSizeSpeedSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptimizationSlave</name>
+ <version>1</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>CCOutputFile</name>
+ <state>$FILE_BNAME$.r90</state>
+ </option>
+ <option>
+ <name>CCLangSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CompilerMisraRules</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>CompilerMisraOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLibConfigHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>PreInclude</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCOverrideModuleTypeDefault</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRadioModuleType</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRadioModuleTypeSlave</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>AAVR</name>
+ <archiveVersion>4</archiveVersion>
+ <data>
+ <version>10</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>IProcessor</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ACaseSensitivity</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AWarnEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnWhat</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnOne</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CDebug</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ADefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>MacroChars</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>UndefAsm</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UndefFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UndefLine</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UndefTime</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UndefDate</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UndefTid</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AList</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AListHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AListing</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Includes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacDefs</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacExps</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacExec</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OnlyAssed</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MultiLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLengthCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLength</name>
+ <state>80</state>
+ </option>
+ <option>
+ <name>TabSpacing</name>
+ <state>8</state>
+ </option>
+ <option>
+ <name>AXRef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDefines</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefInternal</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDual</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OAEnhancedCore</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AExtraOptionsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AMaxErrOn</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AMaxErrNum</name>
+ <state>100</state>
+ </option>
+ <option>
+ <name>ANewIncludes</name>
+ <state>$TOOLKIT_DIR$\INC\</state>
+ </option>
+ <option>
+ <name>AsmMultiByteSupport</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AavrVariantMemory</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AsmHasElpm</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AsmOutputFile</name>
+ <state>$FILE_BNAME$.r90</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CUSTOM</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <extensions></extensions>
+ <cmdline></cmdline>
+ </data>
+ </settings>
+ <settings>
+ <name>BICOMP</name>
+ <archiveVersion>0</archiveVersion>
+ <data/>
+ </settings>
+ <settings>
+ <name>BUILDACTION</name>
+ <archiveVersion>1</archiveVersion>
+ <data>
+ <prebuild></prebuild>
+ <postbuild></postbuild>
+ </data>
+ </settings>
+ <settings>
+ <name>XLINK</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>13</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>XOutOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OutputFile</name>
+ <state>SlaveAVR.dbg</state>
+ </option>
+ <option>
+ <name>OutputFormat</name>
+ <version>11</version>
+ <state>70</state>
+ </option>
+ <option>
+ <name>FormatVariant</name>
+ <version>7</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>SecondaryOutputFile</name>
+ <state>(None for the selected format)</state>
+ </option>
+ <option>
+ <name>XDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AlwaysOutput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OverlapWarnings</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>NoGlobalCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XList</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>SegmentMap</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ListSymbols</name>
+ <state>2</state>
+ </option>
+ <option>
+ <name>PageLengthCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLength</name>
+ <state>80</state>
+ </option>
+ <option>
+ <name>XIncludes</name>
+ <state>$TOOLKIT_DIR$\LIB\</state>
+ </option>
+ <option>
+ <name>ModuleStatus</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XclOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XclFile</name>
+ <state>$TOOLKIT_DIR$\src\template\cfgcan128.xcl</state>
+ </option>
+ <option>
+ <name>XclFileSlave</name>
+ <state></state>
+ </option>
+ <option>
+ <name>DoFill</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>FillerByte</name>
+ <state>0xFF</state>
+ </option>
+ <option>
+ <name>DoCrc</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcSize</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcAlgo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcPoly</name>
+ <state>0x11021</state>
+ </option>
+ <option>
+ <name>CrcCompl</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RangeCheckAlternatives</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SuppressAllWarn</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SuppressDiags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>TreatAsWarn</name>
+ <state></state>
+ </option>
+ <option>
+ <name>TreatAsErr</name>
+ <state></state>
+ </option>
+ <option>
+ <name>ModuleLocalSym</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcBitOrder</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OXSysConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XExtraOptionsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IncludeSuppressed</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ModuleSummary</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>xcProgramEntryLabel</name>
+ <state>__program_start</state>
+ </option>
+ <option>
+ <name>DebugInformation</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RuntimeControl</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IoEmulation</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AllowExtraOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GenerateExtraOutput</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XExtraOutOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ExtraOutputFile</name>
+ <state>SlaveAVR.hex</state>
+ </option>
+ <option>
+ <name>ExtraOutputFormat</name>
+ <version>11</version>
+ <state>23</state>
+ </option>
+ <option>
+ <name>ExtraFormatVariant</name>
+ <version>7</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>xcOverrideProgramEntryLabel</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>xcProgramEntryLabelSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ListOutputFormat</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>BufferedTermOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XcRTLibraryFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OXLibIOConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XLinkMisraHandler</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OverlaySystemMap</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RawBinaryFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>RawBinarySymbol</name>
+ <state></state>
+ </option>
+ <option>
+ <name>RawBinarySegment</name>
+ <state></state>
+ </option>
+ <option>
+ <name>RawBinaryAlign</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CrcAlign</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcInitialValue</name>
+ <state>0x00</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>XAR</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>1</debug>
+ <option>
+ <name>XAROutOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XARInputs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OutputFile</name>
+ <state></state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>BILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data/>
+ </settings>
+ </configuration>
+ <configuration>
+ <name>Release</name>
+ <toolchain>
+ <name>AVR</name>
+ </toolchain>
+ <debug>0</debug>
+ <settings>
+ <name>General</name>
+ <archiveVersion>4</archiveVersion>
+ <data>
+ <version>7</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>0</debug>
+ <option>
+ <name>GGEnhancedCore</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>Variant Memory</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ExePath</name>
+ <state>Release\Exe</state>
+ </option>
+ <option>
+ <name>ObjPath</name>
+ <state>Release\Obj</state>
+ </option>
+ <option>
+ <name>ListPath</name>
+ <state>Release\List</state>
+ </option>
+ <option>
+ <name>GGEnableConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GG64KFlash</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GG64BitDoubles</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GGFPSLICCOnfig</name>
+ <version>0</version>
+ <state>3</state>
+ </option>
+ <option>
+ <name>LCEnableBitDefs</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LCHeapSize</name>
+ <state>0x10</state>
+ </option>
+ <option>
+ <name>SCCStackSize</name>
+ <state>0x20</state>
+ </option>
+ <option>
+ <name>SCExtCStack</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SCRStackSize</name>
+ <state>16</state>
+ </option>
+ <option>
+ <name>SCExtRStack</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SCEnableBus</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SCAddWaitstate</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SCRamBase</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCRamSize</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCRomBase</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCRomSize</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCNVBase</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCNVSize</name>
+ <state>0x0</state>
+ </option>
+ <option>
+ <name>SCInitWithReti</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GOutputBinary</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GGEepromUtil</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GGEepromUtilSize</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>New Variant Processor</name>
+ <version>19</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelect</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>RTDescription</name>
+ <state>Use the legacy C runtime library.</state>
+ </option>
+ <option>
+ <name>RTConfigPath</name>
+ <state></state>
+ </option>
+ <option>
+ <name>RTLibraryPath</name>
+ <state>$TOOLKIT_DIR$\LIB\CLIB\cl0t.r90</state>
+ </option>
+ <option>
+ <name>Input variant</name>
+ <version>0</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>Input description</name>
+ <state>No float.</state>
+ </option>
+ <option>
+ <name>Output variant</name>
+ <version>0</version>
+ <state>3</state>
+ </option>
+ <option>
+ <name>Output description</name>
+ <state>No float, no field width, no precision.</state>
+ </option>
+ <option>
+ <name>GRuntimeLibSelectSlave</name>
+ <version>0</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>GeneralMisraRules</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>GeneralEnableMisra</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GeneralMisraVerbose</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>LCTinyHeapSize</name>
+ <state>0x10</state>
+ </option>
+ <option>
+ <name>LCNearHeapSize</name>
+ <state>0x20</state>
+ </option>
+ <option>
+ <name>LCFarHeapSize</name>
+ <state>0x1000</state>
+ </option>
+ <option>
+ <name>LCHugeHeapSize</name>
+ <state>0x1000</state>
+ </option>
+ <option>
+ <name>LCsHeapConfigText</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>GGNoMULInstruction</name>
+ <state>0</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>ICCAVR</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <version>12</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>0</debug>
+ <option>
+ <name>CCVariantProcessor</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnhancedCore</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCVariantMemory</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCDefines</name>
+ <state>NDEBUG</state>
+ </option>
+ <option>
+ <name>CCPreprocFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocComments</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCPreprocLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListCMnemonics</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCListCMessages</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssFile</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCListAssSource</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableRemarks</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCDiagSuppress</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagRemark</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagWarning</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDiagError</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCWarnAsError</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCConstInRAM</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCInitInFlash</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCForceVariables</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOldCallConv</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLockRegs</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptSizeSpeed</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptimization</name>
+ <version>1</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>CCAllowList</name>
+ <version>3</version>
+ <state>111111</state>
+ </option>
+ <option>
+ <name>CCCrossCallPassesList</name>
+ <version>8</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCObjUseModuleName</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCObjModuleName</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCDebugInfo</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCNoErrorMsg</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CC64BitDoubles</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CC64KFlash</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableExtBus</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCEnableBitDefs</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptForceCrossCall</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCharIs</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCExt</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>IExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>IExtraOptionsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCMultibyteSupport</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRequirePrototypes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCCompilerRuntimeInfo</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>newCCIncludePaths</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCStdIncCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCStdIncludePaths</name>
+ <state>$TOOLKIT_DIR$\INC\</state>
+ <state>$TOOLKIT_DIR$\INC\CLIB\</state>
+ </option>
+ <option>
+ <name>CCEepromSize</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLockRegsSlave</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CCOptSizeSpeedSlave</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCOptimizationSlave</name>
+ <version>1</version>
+ <state>4</state>
+ </option>
+ <option>
+ <name>CCOutputFile</name>
+ <state>$FILE_BNAME$.r90</state>
+ </option>
+ <option>
+ <name>CCLangSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CompilerMisraRules</name>
+ <version>0</version>
+ <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+ </option>
+ <option>
+ <name>CompilerMisraOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCLibConfigHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>PreInclude</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CCOverrideModuleTypeDefault</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRadioModuleType</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CCRadioModuleTypeSlave</name>
+ <state>1</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>AAVR</name>
+ <archiveVersion>4</archiveVersion>
+ <data>
+ <version>10</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>0</debug>
+ <option>
+ <name>IProcessor</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AObjPrefix</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ACaseSensitivity</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AWarnEnable</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnWhat</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AWarnOne</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange1</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AWarnRange2</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CDebug</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ADefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>MacroChars</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>UndefAsm</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UndefFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UndefLine</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UndefTime</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UndefDate</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>UndefTid</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AList</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AListHeader</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AListing</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>Includes</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacDefs</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MacExps</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>MacExec</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OnlyAssed</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>MultiLine</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLengthCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLength</name>
+ <state>80</state>
+ </option>
+ <option>
+ <name>TabSpacing</name>
+ <state>8</state>
+ </option>
+ <option>
+ <name>AXRef</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDefines</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefInternal</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AXRefDual</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AExtraOptions</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OAEnhancedCore</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AExtraOptionsCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AMaxErrOn</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AMaxErrNum</name>
+ <state>100</state>
+ </option>
+ <option>
+ <name>ANewIncludes</name>
+ <state>###Uninitialized###</state>
+ </option>
+ <option>
+ <name>AsmMultiByteSupport</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AavrVariantMemory</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AsmHasElpm</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>AsmOutputFile</name>
+ <state></state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>CUSTOM</name>
+ <archiveVersion>3</archiveVersion>
+ <data>
+ <extensions></extensions>
+ <cmdline></cmdline>
+ </data>
+ </settings>
+ <settings>
+ <name>BICOMP</name>
+ <archiveVersion>0</archiveVersion>
+ <data/>
+ </settings>
+ <settings>
+ <name>BUILDACTION</name>
+ <archiveVersion>1</archiveVersion>
+ <data>
+ <prebuild></prebuild>
+ <postbuild></postbuild>
+ </data>
+ </settings>
+ <settings>
+ <name>XLINK</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>13</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>0</debug>
+ <option>
+ <name>XOutOverride</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OutputFile</name>
+ <state>$PROJ_FNAME$.hex</state>
+ </option>
+ <option>
+ <name>OutputFormat</name>
+ <version>11</version>
+ <state>23</state>
+ </option>
+ <option>
+ <name>FormatVariant</name>
+ <version>7</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>SecondaryOutputFile</name>
+ <state>(None for the selected format)</state>
+ </option>
+ <option>
+ <name>XDefines</name>
+ <state></state>
+ </option>
+ <option>
+ <name>AlwaysOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OverlapWarnings</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>NoGlobalCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XList</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SegmentMap</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>ListSymbols</name>
+ <state>2</state>
+ </option>
+ <option>
+ <name>PageLengthCheck</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>PageLength</name>
+ <state>80</state>
+ </option>
+ <option>
+ <name>XIncludes</name>
+ <state>$TOOLKIT_DIR$\LIB\</state>
+ </option>
+ <option>
+ <name>ModuleStatus</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XclOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XclFile</name>
+ <state>$TOOLKIT_DIR$\src\template\lnk0t.xcl</state>
+ </option>
+ <option>
+ <name>XclFileSlave</name>
+ <state></state>
+ </option>
+ <option>
+ <name>DoFill</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>FillerByte</name>
+ <state>0xFF</state>
+ </option>
+ <option>
+ <name>DoCrc</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcSize</name>
+ <version>0</version>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcAlgo</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcPoly</name>
+ <state>0x11021</state>
+ </option>
+ <option>
+ <name>CrcCompl</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RangeCheckAlternatives</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SuppressAllWarn</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>SuppressDiags</name>
+ <state></state>
+ </option>
+ <option>
+ <name>TreatAsWarn</name>
+ <state></state>
+ </option>
+ <option>
+ <name>TreatAsErr</name>
+ <state></state>
+ </option>
+ <option>
+ <name>ModuleLocalSym</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>CrcBitOrder</name>
+ <version>0</version>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OXSysConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XExtraOptionsCheck</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XExtraOptions</name>
+ <state>-y(CODE)</state>
+ <state>-Ointel-extended,(DATA)=$EXE_DIR$\$PROJ_FNAME$_data.hex</state>
+ <state>-Ointel-extended,(XDATA)=$EXE_DIR$\$PROJ_FNAME$_eeprom.hex</state>
+ </option>
+ <option>
+ <name>IncludeSuppressed</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ModuleSummary</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>xcProgramEntryLabel</name>
+ <state>__program_start</state>
+ </option>
+ <option>
+ <name>DebugInformation</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>RuntimeControl</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>IoEmulation</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>AllowExtraOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>GenerateExtraOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XExtraOutOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ExtraOutputFile</name>
+ <state>templproj.a90</state>
+ </option>
+ <option>
+ <name>ExtraOutputFormat</name>
+ <version>11</version>
+ <state>25</state>
+ </option>
+ <option>
+ <name>ExtraFormatVariant</name>
+ <version>7</version>
+ <state>2</state>
+ </option>
+ <option>
+ <name>xcOverrideProgramEntryLabel</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>xcProgramEntryLabelSelect</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>ListOutputFormat</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>BufferedTermOutput</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XcRTLibraryFile</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>OXLibIOConfig</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>XLinkMisraHandler</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>OverlaySystemMap</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>RawBinaryFile</name>
+ <state></state>
+ </option>
+ <option>
+ <name>RawBinarySymbol</name>
+ <state></state>
+ </option>
+ <option>
+ <name>RawBinarySegment</name>
+ <state></state>
+ </option>
+ <option>
+ <name>RawBinaryAlign</name>
+ <state></state>
+ </option>
+ <option>
+ <name>CrcAlign</name>
+ <state>1</state>
+ </option>
+ <option>
+ <name>CrcInitialValue</name>
+ <state>0x00</state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>XAR</name>
+ <archiveVersion>2</archiveVersion>
+ <data>
+ <version>0</version>
+ <wantNonLocal>1</wantNonLocal>
+ <debug>0</debug>
+ <option>
+ <name>XAROutOverride</name>
+ <state>0</state>
+ </option>
+ <option>
+ <name>XARInputs</name>
+ <state></state>
+ </option>
+ <option>
+ <name>OutputFile</name>
+ <state></state>
+ </option>
+ </data>
+ </settings>
+ <settings>
+ <name>BILINK</name>
+ <archiveVersion>0</archiveVersion>
+ <data/>
+ </settings>
+ </configuration>
+ <group>
+ <name>CANDriver</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\drivers\AVR\can_AVR.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\drivers\AVR\timer_AVR.C</name>
+ </file>
+ </group>
+ <group>
+ <name>CANopen</name>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\dcf.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\emcy.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\lifegrd.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\nmtMaster.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\nmtSlave.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\objacces.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\pdo.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\sdo.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\states.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\sync.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\..\..\..\src\timer.c</name>
+ </file>
+ </group>
+ <file>
+ <name>$PROJ_DIR$\..\main.c</name>
+ </file>
+ <file>
+ <name>$PROJ_DIR$\..\ObjDict.c</name>
+ </file>
+</project>
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/IAR/SlaveAVR.eww Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<workspace>
+ <project>
+ <path>$WS_DIR$\SlaveAVR.ewp</path>
+ </project>
+ <batchBuild/>
+</workspace>
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/IAR/settings/SlaveAVR.cspy.bat Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,32 @@
+@REM This bat file has been generated by the IAR Embeddded Workbench
+@REM C-SPY interactive debugger,as an aid to preparing a command
+@REM line for running the cspybat command line utility with the
+@REM appropriate settings.
+@REM
+@REM After making some adjustments to this file, you can launch cspybat
+@REM by typing the name of this file followed by the name of the debug
+@REM file (usually an ubrof file). Note that this file is generated
+@REM every time a new debug session is initialized, so you may want to
+@REM move or rename the file before making changes.
+@REM
+@REM Note: some command line arguments cannot be properly generated
+@REM by this process. Specifically, the plugin which is responsible
+@REM for the Terminal I/O window (and other C runtime functionality)
+@REM comes in a special version for cspybat, and the name of that
+@REM plugin dll is not known when generating this file. It resides in
+@REM the $TOOLKIT_DIR$\bin folder and is usually called XXXbat.dll or
+@REM XXXlibsupportbat.dll, where XXX is the name of the corresponding
+@REM tool chain. Replace the '<libsupport_plugin>' parameter
+@REM below with the appropriate file name. Other plugins loaded by
+@REM C-SPY are usually not needed by, or will not work in, cspybat
+@REM but they are listed at the end of this file for reference.
+
+
+"C:\Programme\IAR Systems\Embedded Workbench 4.0\common\bin\cspybat" "C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\bin\avrproc.dll" "C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\bin\avrsim.dll" %1 --plugin "C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\bin\<libsupport_plugin>" --backend -B "--cpu=can128" "--enhanced_core" "-p" "C:\Programme\IAR Systems\Embedded Workbench 4.0\avr\Config\iocan128.ddf" "--eeprom_size" "4096" "-d" "sim"
+
+
+@REM loaded plugins:
+@REM avrlibsupport.dll
+@REM C:\Programme\IAR Systems\Embedded Workbench 4.0\common\plugins\CodeCoverage\CodeCoverage.dll
+@REM C:\Programme\IAR Systems\Embedded Workbench 4.0\common\plugins\Profiling\Profiling.dll
+@REM C:\Programme\IAR Systems\Embedded Workbench 4.0\common\plugins\stack\stack.dll
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/IAR/settings/SlaveAVR.dbgdt Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<Project/>
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/IAR/settings/SlaveAVR.dni Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,15 @@
+[StackPlugin]
+Enabled=1
+OverflowWarningsEnabled=1
+WarningThreshold=90
+SpWarningsEnabled=1
+WarnHow=0
+UseTrigger=1
+TriggerName=main
+LimitSize=0
+ByteLimit=50
+[Breakpoints]
+Count=0
+[TraceHelper]
+Enabled=0
+ShowSource=1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/IAR/settings/SlaveAVR.wsdt Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<Workspace>
+ <ConfigDictionary>
+
+ <CurrentConfigs><Project>SlaveAVR/Debug</Project></CurrentConfigs></ConfigDictionary>
+ <Desktop>
+ <Static>
+ <Workspace>
+ <ColumnWidths>
+
+
+
+
+ <Column0>171</Column0><Column1>27</Column1><Column2>27</Column2><Column3>27</Column3></ColumnWidths>
+ </Workspace>
+ <Build>
+
+
+
+
+ <ColumnWidth0>16</ColumnWidth0><ColumnWidth1>1009</ColumnWidth1><ColumnWidth2>269</ColumnWidth2><ColumnWidth3>67</ColumnWidth3></Build>
+ <Find-in-Files><ColumnWidth0>482</ColumnWidth0><ColumnWidth1>68</ColumnWidth1><ColumnWidth2>826</ColumnWidth2></Find-in-Files></Static>
+ <Windows>
+
+
+ <Wnd2>
+ <Tabs>
+ <Tab>
+ <Identity>TabID-27291-21359</Identity>
+ <TabName>Workspace</TabName>
+ <Factory>Workspace</Factory>
+ <Session>
+
+ <NodeDict><ExpandedNode>SlaveAVR</ExpandedNode><ExpandedNode>SlaveAVR/CANDriver</ExpandedNode><ExpandedNode>SlaveAVR/CANopen</ExpandedNode><ExpandedNode>SlaveAVR/Output</ExpandedNode></NodeDict></Session>
+ </Tab>
+ </Tabs>
+
+ <SelectedTab>0</SelectedTab></Wnd2><Wnd3>
+ <Tabs>
+ <Tab>
+ <Identity>TabID-2134-21421</Identity>
+ <TabName>Build</TabName>
+ <Factory>Build</Factory>
+ <Session/>
+ </Tab>
+ <Tab><Identity>TabID-13651-31422</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>
+
+ <SelectedTab>0</SelectedTab></Wnd3></Windows>
+ <Editor>
+
+
+
+
+ <Pane><Tab><Factory>TextEditor</Factory><Filename>I:\Entwicklung\Firmware\CAN\CanFestival-3\src\sdo.c</Filename><XPos>0</XPos><YPos>499</YPos><SelStart>22973</SelStart><SelEnd>22973</SelEnd></Tab><ActiveTab>0</ActiveTab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
+ <Positions>
+
+
+
+
+
+ <Top><Row0><Sizes><Toolbar-00a0e6b8><key>iaridepm1</key></Toolbar-00a0e6b8></Sizes></Row0></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>753</Bottom><Right>245</Right><x>-2</x><y>-2</y><xscreen>0</xscreen><yscreen>0</yscreen><sizeHorzCX>0</sizeHorzCX><sizeHorzCY>0</sizeHorzCY><sizeVertCX>192969</sizeVertCX><sizeVertCY>767276</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>187</Bottom><Right>1282</Right><x>-2</x><y>-2</y><xscreen>1284</xscreen><yscreen>189</yscreen><sizeHorzCX>1003125</sizeHorzCX><sizeHorzCY>192073</sizeHorzCY><sizeVertCX>0</sizeVertCX><sizeVertCY>0</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
+ </Desktop>
+</Workspace>
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/ObjDict.c Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,425 @@
+
+/* File generated by gen_cfile.py. Should not be modified. */
+
+#include "ObjDict.h"
+
+/**************************************************************************/
+/* Declaration of the mapped variables */
+/**************************************************************************/
+UNS8 Read_Inputs_8_Bit[] = /* Mapped at index 0x6000, subindex 0x01 - 0x01 */
+ {
+ 0x0 /* 0 */
+ };
+UNS8 Polarity_Input_8_Bit[] = /* Mapped at index 0x6002, subindex 0x01 - 0x01 */
+ {
+ 0x0 /* 0 */
+ };
+UNS8 Filter_Constant_Input_8_Bit[] = /* Mapped at index 0x6003, subindex 0x01 - 0x01 */
+ {
+ 0x0 /* 0 */
+ };
+UNS8 Global_Interrupt_Enable_Digital = 0x1; /* Mapped at index 0x6005, subindex 0x00 */
+UNS8 Interrupt_Mask_Any_Change_8_Bit[] = /* Mapped at index 0x6006, subindex 0x01 - 0x01 */
+ {
+ 0xFF /* 255 */
+ };
+UNS8 Write_Outputs_8_Bit[] = /* Mapped at index 0x6200, subindex 0x01 - 0x01 */
+ {
+ 0x0 /* 0 */
+ };
+
+/**************************************************************************/
+/* Declaration of the value range types */
+/**************************************************************************/
+
+#define valueRange_EMC 0x9F /* Type for index 0x1003 subindex 0x00 (only set of value 0 is possible) */
+UNS32 ObjDict_valueRangeTest (UNS8 typeValue, void * value)
+{
+ switch (typeValue) {
+ case valueRange_EMC:
+ if (*(UNS8*)value != (UNS8)0) return OD_VALUE_RANGE_EXCEEDED;
+ break;
+ }
+ return 0;
+}
+
+/**************************************************************************/
+/* The node id */
+/**************************************************************************/
+/* node_id default value.*/
+UNS8 ObjDict_bDeviceNodeId = 0x00;
+
+/**************************************************************************/
+/* Array of message processing information */
+
+const UNS8 ObjDict_iam_a_slave = 1;
+
+TIMER_HANDLE ObjDict_heartBeatTimers[1] = {TIMER_NONE,};
+
+/*
+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
+
+ OBJECT DICTIONARY
+
+$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
+*/
+
+/* index 0x1000 : Device Type. */
+ UNS32 ObjDict_obj1000 = 0x30191; /* 197009 */
+ subindex ObjDict_Index1000[] =
+ {
+ { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1000 }
+ };
+
+/* index 0x1001 : Error Register. */
+ UNS8 ObjDict_obj1001 = 0x0; /* 0 */
+ subindex ObjDict_Index1001[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_obj1001 }
+ };
+
+/* index 0x1003 : Pre-defined Error Field. */
+ UNS8 ObjDict_highestSubIndex_obj1003 = 0; /* number of subindex - 1*/
+ UNS32 ObjDict_obj1003[] =
+ {
+ 0x0 /* 0 */
+ };
+ ODCallback_t ObjDict_Index1003_callbacks[] =
+ {
+ NULL,
+ NULL,
+ };
+ subindex ObjDict_Index1003[] =
+ {
+ { RW, valueRange_EMC, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1003 },
+ { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1003[0] }
+ };
+
+/* index 0x1005 : SYNC COB ID. */
+ UNS32 ObjDict_obj1005 = 0x80; /* 128 */
+ ODCallback_t ObjDict_Index1005_callbacks[] =
+ {
+ NULL,
+ };
+ subindex ObjDict_Index1005[] =
+ {
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1005 }
+ };
+
+/* index 0x1006 : Communication / Cycle Period */
+ UNS32 ObjDict_obj1006 = 0x0; /* 0 */
+
+/* index 0x1008 : Manufacturer Device Name. */
+ UNS8 ObjDict_obj1008[10] = "";
+ subindex ObjDict_Index1008[] =
+ {
+ { RO, visible_string, 0, (void*)&ObjDict_obj1008 }
+ };
+
+/* index 0x1009 : Manufacturer Hardware Version. */
+ UNS8 ObjDict_obj1009[10] = "";
+ subindex ObjDict_Index1009[] =
+ {
+ { RO, visible_string, 0, (void*)&ObjDict_obj1009 }
+ };
+
+/* index 0x100A : Manufacturer Software Version. */
+ UNS8 ObjDict_obj100A[10] = "";
+ subindex ObjDict_Index100A[] =
+ {
+ { RO, visible_string, 0, (void*)&ObjDict_obj100A }
+ };
+
+/* index 0x1010 : Store parameters. */
+ UNS8 ObjDict_highestSubIndex_obj1010 = 4; /* number of subindex - 1*/
+ UNS32 ObjDict_obj1010_Save_All_Parameters = 0x0; /* 0 */
+ UNS32 ObjDict_obj1010_Save_Communication_Parameters = 0x0; /* 0 */
+ UNS32 ObjDict_obj1010_Save_Application_Parameters = 0x0; /* 0 */
+ UNS32 ObjDict_obj1010_Save_Manufacturer_Parameters = 0x0; /* 0 */
+ subindex ObjDict_Index1010[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1010 },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1010_Save_All_Parameters },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1010_Save_Communication_Parameters },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1010_Save_Application_Parameters },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1010_Save_Manufacturer_Parameters }
+ };
+
+/* index 0x1011 : Restore Default Parameters. */
+ UNS8 ObjDict_highestSubIndex_obj1011 = 4; /* number of subindex - 1*/
+ UNS32 ObjDict_obj1011_Restore_All_Default_Parameters = 0x0; /* 0 */
+ UNS32 ObjDict_obj1011_Restore_Communication_Default_Parameters = 0x0; /* 0 */
+ UNS32 ObjDict_obj1011_Restore_Application_Default_Parameters = 0x0; /* 0 */
+ UNS32 ObjDict_obj1011_Restore_Manufacturer_Default_Parameters = 0x0; /* 0 */
+ subindex ObjDict_Index1011[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1011 },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1011_Restore_All_Default_Parameters },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1011_Restore_Communication_Default_Parameters },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1011_Restore_Application_Default_Parameters },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1011_Restore_Manufacturer_Default_Parameters }
+ };
+
+/* index 0x1014 : Emergency COB ID. */
+ UNS32 ObjDict_obj1014 = 0x80; /* 128 */
+ subindex ObjDict_Index1014[] =
+ {
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1014 }
+ };
+
+/* index 0x1016 : Consumer Heartbeat Time. */
+ UNS8 ObjDict_highestSubIndex_obj1016 = 1; /* number of subindex - 1*/
+ UNS32 ObjDict_obj1016[] =
+ {
+ 0x0 /* 0 */
+ };
+ subindex ObjDict_Index1016[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1016 },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1016[0] }
+ };
+
+/* index 0x1017 : Producer Heartbeat Time. */
+ UNS16 ObjDict_obj1017 = 0x3E8; /* 1000 */
+ ODCallback_t ObjDict_Index1017_callbacks[] =
+ {
+ NULL,
+ };
+ subindex ObjDict_Index1017[] =
+ {
+ { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1017 }
+ };
+
+/* index 0x1018 : Identity. */
+ UNS8 ObjDict_highestSubIndex_obj1018 = 4; /* number of subindex - 1*/
+ UNS32 ObjDict_obj1018_Vendor_ID = 0x0; /* 0 */
+ UNS32 ObjDict_obj1018_Product_Code = 0x0; /* 0 */
+ UNS32 ObjDict_obj1018_Revision_Number = 0x0; /* 0 */
+ UNS32 ObjDict_obj1018_Serial_Number = 0x0; /* 0 */
+ subindex ObjDict_Index1018[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1018 },
+ { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1018_Vendor_ID },
+ { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1018_Product_Code },
+ { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1018_Revision_Number },
+ { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1018_Serial_Number }
+ };
+
+/* index 0x1200 : Server SDO Parameter. */
+ UNS8 ObjDict_highestSubIndex_obj1200 = 2; /* number of subindex - 1*/
+ UNS32 ObjDict_obj1200_COB_ID_Client_to_Server_Receive_SDO = 0x600; /* 1536 */
+ UNS32 ObjDict_obj1200_COB_ID_Server_to_Client_Transmit_SDO = 0x580; /* 1408 */
+ subindex ObjDict_Index1200[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1200 },
+ { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1200_COB_ID_Client_to_Server_Receive_SDO },
+ { RO, uint32, sizeof (UNS32), (void*)&ObjDict_obj1200_COB_ID_Server_to_Client_Transmit_SDO }
+ };
+
+/* index 0x1400 : Receive PDO 1 Parameter. */
+ UNS8 ObjDict_highestSubIndex_obj1400 = 5; /* number of subindex - 1*/
+ UNS32 ObjDict_obj1400_COB_ID_used_by_PDO = 0x200; /* 512 */
+ UNS8 ObjDict_obj1400_Transmission_Type = 0x1; /* 1 */
+ UNS16 ObjDict_obj1400_Inhibit_Time = 0x0; /* 0 */
+ UNS8 ObjDict_obj1400_Compatibility_Entry = 0x0; /* 0 */
+ UNS16 ObjDict_obj1400_Event_Timer = 0x0; /* 0 */
+ subindex ObjDict_Index1400[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1400 },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1400_COB_ID_used_by_PDO },
+ { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1400_Transmission_Type },
+ { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1400_Inhibit_Time },
+ { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1400_Compatibility_Entry },
+ { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1400_Event_Timer }
+ };
+
+/* index 0x1600 : Receive PDO 1 Mapping. */
+ UNS8 ObjDict_highestSubIndex_obj1600 = 1; /* number of subindex - 1*/
+ UNS32 ObjDict_obj1600[] =
+ {
+ 0x62000108 /* 1644167432 */
+ };
+ subindex ObjDict_Index1600[] =
+ {
+ { RW, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1600 },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1600[0] }
+ };
+
+/* index 0x1800 : Transmit PDO 1 Parameter. */
+ UNS8 ObjDict_highestSubIndex_obj1800 = 5; /* number of subindex - 1*/
+ UNS32 ObjDict_obj1800_COB_ID_used_by_PDO = 0x180; /* 384 */
+ UNS8 ObjDict_obj1800_Transmission_Type = 0x0; /* 0 */
+ UNS16 ObjDict_obj1800_Inhibit_Time = 0x0; /* 0 */
+ UNS8 ObjDict_obj1800_Compatibility_Entry = 0x0; /* 0 */
+ UNS16 ObjDict_obj1800_Event_Timer = 0x0; /* 0 */
+ ODCallback_t ObjDict_Index1800_callbacks[] =
+ {
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ };
+ subindex ObjDict_Index1800[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1800 },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1800_COB_ID_used_by_PDO },
+ { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1800_Transmission_Type },
+ { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1800_Inhibit_Time },
+ { RW, uint8, sizeof (UNS8), (void*)&ObjDict_obj1800_Compatibility_Entry },
+ { RW, uint16, sizeof (UNS16), (void*)&ObjDict_obj1800_Event_Timer }
+ };
+
+/* index 0x1A00 : Transmit PDO 1 Mapping. */
+ UNS8 ObjDict_highestSubIndex_obj1A00 = 1; /* number of subindex - 1*/
+ UNS32 ObjDict_obj1A00[] =
+ {
+ 0x60000108 /* 1610613000 */
+ };
+ subindex ObjDict_Index1A00[] =
+ {
+ { RW, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj1A00 },
+ { RW, uint32, sizeof (UNS32), (void*)&ObjDict_obj1A00[0] }
+ };
+
+/* index 0x6000 : Mapped variable Read Inputs 8 Bit */
+ UNS8 ObjDict_highestSubIndex_obj6000 = 1; /* number of subindex - 1*/
+ subindex ObjDict_Index6000[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6000 },
+ { RO, uint8, sizeof (UNS8), (void*)&Read_Inputs_8_Bit[0] }
+ };
+
+/* index 0x6002 : Mapped variable Polarity Input 8 Bit */
+ UNS8 ObjDict_highestSubIndex_obj6002 = 1; /* number of subindex - 1*/
+ subindex ObjDict_Index6002[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6002 },
+ { RW, uint8, sizeof (UNS8), (void*)&Polarity_Input_8_Bit[0] }
+ };
+
+/* index 0x6003 : Mapped variable Filter Constant Input 8 Bit */
+ UNS8 ObjDict_highestSubIndex_obj6003 = 1; /* number of subindex - 1*/
+ subindex ObjDict_Index6003[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6003 },
+ { RW, uint8, sizeof (UNS8), (void*)&Filter_Constant_Input_8_Bit[0] }
+ };
+
+/* index 0x6005 : Mapped variable Global Interrupt Enable Digital */
+ subindex ObjDict_Index6005[] =
+ {
+ { RW, boolean, sizeof (UNS8), (void*)&Global_Interrupt_Enable_Digital }
+ };
+
+/* index 0x6006 : Mapped variable Interrupt Mask Any Change 8 Bit */
+ UNS8 ObjDict_highestSubIndex_obj6006 = 1; /* number of subindex - 1*/
+ subindex ObjDict_Index6006[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6006 },
+ { RW, uint8, sizeof (UNS8), (void*)&Interrupt_Mask_Any_Change_8_Bit[0] }
+ };
+
+/* index 0x6200 : Mapped variable Write Outputs 8 Bit */
+ UNS8 ObjDict_highestSubIndex_obj6200 = 1; /* number of subindex - 1*/
+ subindex ObjDict_Index6200[] =
+ {
+ { RO, uint8, sizeof (UNS8), (void*)&ObjDict_highestSubIndex_obj6200 },
+ { RW, uint8, sizeof (UNS8), (void*)&Write_Outputs_8_Bit[0] }
+ };
+
+const indextable ObjDict_objdict[] =
+{
+ { (subindex*)ObjDict_Index1000,sizeof(ObjDict_Index1000)/sizeof(ObjDict_Index1000[0]), 0x1000},
+ { (subindex*)ObjDict_Index1001,sizeof(ObjDict_Index1001)/sizeof(ObjDict_Index1001[0]), 0x1001},
+ { (subindex*)ObjDict_Index1003,sizeof(ObjDict_Index1003)/sizeof(ObjDict_Index1003[0]), 0x1003},
+ { (subindex*)ObjDict_Index1005,sizeof(ObjDict_Index1005)/sizeof(ObjDict_Index1005[0]), 0x1005},
+ { (subindex*)ObjDict_Index1008,sizeof(ObjDict_Index1008)/sizeof(ObjDict_Index1008[0]), 0x1008},
+ { (subindex*)ObjDict_Index1009,sizeof(ObjDict_Index1009)/sizeof(ObjDict_Index1009[0]), 0x1009},
+ { (subindex*)ObjDict_Index100A,sizeof(ObjDict_Index100A)/sizeof(ObjDict_Index100A[0]), 0x100A},
+ { (subindex*)ObjDict_Index1010,sizeof(ObjDict_Index1010)/sizeof(ObjDict_Index1010[0]), 0x1010},
+ { (subindex*)ObjDict_Index1011,sizeof(ObjDict_Index1011)/sizeof(ObjDict_Index1011[0]), 0x1011},
+ { (subindex*)ObjDict_Index1014,sizeof(ObjDict_Index1014)/sizeof(ObjDict_Index1014[0]), 0x1014},
+ { (subindex*)ObjDict_Index1016,sizeof(ObjDict_Index1016)/sizeof(ObjDict_Index1016[0]), 0x1016},
+ { (subindex*)ObjDict_Index1017,sizeof(ObjDict_Index1017)/sizeof(ObjDict_Index1017[0]), 0x1017},
+ { (subindex*)ObjDict_Index1018,sizeof(ObjDict_Index1018)/sizeof(ObjDict_Index1018[0]), 0x1018},
+ { (subindex*)ObjDict_Index1200,sizeof(ObjDict_Index1200)/sizeof(ObjDict_Index1200[0]), 0x1200},
+ { (subindex*)ObjDict_Index1400,sizeof(ObjDict_Index1400)/sizeof(ObjDict_Index1400[0]), 0x1400},
+ { (subindex*)ObjDict_Index1600,sizeof(ObjDict_Index1600)/sizeof(ObjDict_Index1600[0]), 0x1600},
+ { (subindex*)ObjDict_Index1800,sizeof(ObjDict_Index1800)/sizeof(ObjDict_Index1800[0]), 0x1800},
+ { (subindex*)ObjDict_Index1A00,sizeof(ObjDict_Index1A00)/sizeof(ObjDict_Index1A00[0]), 0x1A00},
+ { (subindex*)ObjDict_Index6000,sizeof(ObjDict_Index6000)/sizeof(ObjDict_Index6000[0]), 0x6000},
+ { (subindex*)ObjDict_Index6002,sizeof(ObjDict_Index6002)/sizeof(ObjDict_Index6002[0]), 0x6002},
+ { (subindex*)ObjDict_Index6003,sizeof(ObjDict_Index6003)/sizeof(ObjDict_Index6003[0]), 0x6003},
+ { (subindex*)ObjDict_Index6005,sizeof(ObjDict_Index6005)/sizeof(ObjDict_Index6005[0]), 0x6005},
+ { (subindex*)ObjDict_Index6006,sizeof(ObjDict_Index6006)/sizeof(ObjDict_Index6006[0]), 0x6006},
+ { (subindex*)ObjDict_Index6200,sizeof(ObjDict_Index6200)/sizeof(ObjDict_Index6200[0]), 0x6200},
+};
+
+const indextable * ObjDict_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks)
+{
+ int i;
+ *callbacks = NULL;
+ switch(wIndex){
+ case 0x1000: i = 0;break;
+ case 0x1001: i = 1;break;
+ case 0x1003: i = 2;*callbacks = ObjDict_Index1003_callbacks; break;
+ case 0x1005: i = 3;*callbacks = ObjDict_Index1005_callbacks; break;
+ case 0x1008: i = 4;break;
+ case 0x1009: i = 5;break;
+ case 0x100A: i = 6;break;
+ case 0x1010: i = 7;break;
+ case 0x1011: i = 8;break;
+ case 0x1014: i = 9;break;
+ case 0x1016: i = 10;break;
+ case 0x1017: i = 11;*callbacks = ObjDict_Index1017_callbacks; break;
+ case 0x1018: i = 12;break;
+ case 0x1200: i = 13;break;
+ case 0x1400: i = 14;break;
+ case 0x1600: i = 15;break;
+ case 0x1800: i = 16;*callbacks = ObjDict_Index1800_callbacks; break;
+ case 0x1A00: i = 17;break;
+ case 0x6000: i = 18;break;
+ case 0x6002: i = 19;break;
+ case 0x6003: i = 20;break;
+ case 0x6005: i = 21;break;
+ case 0x6006: i = 22;break;
+ case 0x6200: i = 23;break;
+ default:
+ *errorCode = OD_NO_SUCH_OBJECT;
+ return NULL;
+ }
+ *errorCode = OD_SUCCESSFUL;
+ return &ObjDict_objdict[i];
+}
+
+/*
+ * To count at which received SYNC a PDO must be sent.
+ * Even if no pdoTransmit are defined, at least one entry is computed
+ * for compilations issues.
+ */
+s_PDO_status ObjDict_PDO_status[1] = {s_PDO_status_Initializer};
+
+quick_index ObjDict_firstIndex = {
+ 13, /* SDO_SVR */
+ 0, /* SDO_CLT */
+ 14, /* PDO_RCV */
+ 15, /* PDO_RCV_MAP */
+ 16, /* PDO_TRS */
+ 17 /* PDO_TRS_MAP */
+};
+
+quick_index ObjDict_lastIndex = {
+ 13, /* SDO_SVR */
+ 0, /* SDO_CLT */
+ 14, /* PDO_RCV */
+ 15, /* PDO_RCV_MAP */
+ 16, /* PDO_TRS */
+ 17 /* PDO_TRS_MAP */
+};
+
+UNS16 ObjDict_ObjdictSize = sizeof(ObjDict_objdict)/sizeof(ObjDict_objdict[0]);
+
+CO_Data ObjDict_Data = CANOPEN_NODE_DATA_INITIALIZER(ObjDict);
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/ObjDict.h Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,23 @@
+
+/* File generated by gen_cfile.py. Should not be modified. */
+
+#ifndef OBJDICT_H
+#define OBJDICT_H
+
+#include "data.h"
+
+/* Prototypes of function provided by object dictionnary */
+UNS32 ObjDict_valueRangeTest (UNS8 typeValue, void * value);
+const indextable * ObjDict_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t **callbacks);
+
+/* Master node data struct */
+extern CO_Data ObjDict_Data;
+extern ODCallback_t Transmit_PDO_1_Parameter_callbacks[]; /* Callbacks of index0x1800 */
+extern UNS8 Read_Inputs_8_Bit[1]; /* Mapped at index 0x6000, subindex 0x01 - 0x01 */
+extern UNS8 Polarity_Input_8_Bit[1]; /* Mapped at index 0x6002, subindex 0x01 - 0x01 */
+extern UNS8 Filter_Constant_Input_8_Bit[1]; /* Mapped at index 0x6003, subindex 0x01 - 0x01 */
+extern UNS8 Global_Interrupt_Enable_Digital; /* Mapped at index 0x6005, subindex 0x00*/
+extern UNS8 Interrupt_Mask_Any_Change_8_Bit[1]; /* Mapped at index 0x6006, subindex 0x01 - 0x01 */
+extern UNS8 Write_Outputs_8_Bit[1]; /* Mapped at index 0x6200, subindex 0x01 - 0x01 */
+
+#endif // OBJDICT_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/ObjDict.od Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,5190 @@
+<?xml version="1.0"?>
+<!DOCTYPE PyObject SYSTEM "PyObjects.dtd">
+<PyObject module="node" class="Node" id="69749136">
+<attr name="Profile" type="dict" id="70671360" >
+ <entry>
+ <key type="numeric" value="24576" />
+ <val type="dict" id="70668336" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69797088" >
+ <item type="dict" id="69769664" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 8 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="58943216" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Inputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Inputs 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24832" />
+ <val type="dict" id="70670064" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749296" >
+ <item type="dict" id="69770240" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 16 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69768368" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="6" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Inputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Inputs 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24578" />
+ <val type="dict" id="69767360" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69748896" >
+ <item type="dict" id="69761616" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 8 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69767936" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Polarity Input 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Polarity Input 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24579" />
+ <val type="dict" id="69762336" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69748936" >
+ <item type="dict" id="69767792" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 8 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69769952" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Constant Input 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Constant Input 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25604" />
+ <val type="dict" id="70670784" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796568" >
+ <item type="dict" id="69773184" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Input" />
+ </entry>
+ </item>
+ <item type="dict" id="69774192" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="17" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Manufacturer specific Analogue Input" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24581" />
+ <val type="dict" id="69774480" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796048" >
+ <item type="dict" id="70672224" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Global Interrupt Enable Digital" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Global Interrupt Enable Digital" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="1" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24582" />
+ <val type="dict" id="70669776" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749576" >
+ <item type="dict" id="70763552" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 8 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70670352" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Any Change 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Any Change 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24583" />
+ <val type="dict" id="69769088" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796248" >
+ <item type="dict" id="70669344" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 8 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69816512" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Low to High 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Low to High 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24584" />
+ <val type="dict" id="70668480" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750416" >
+ <item type="dict" id="70671792" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 8 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70669200" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt High to Low 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask High to Low 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24834" />
+ <val type="dict" id="70668912" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749256" >
+ <item type="dict" id="70670640" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 16 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69762912" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="6" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Polarity Input 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Polarity Input 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25168" />
+ <val type="dict" id="69794384" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796728" >
+ <item type="dict" id="69793664" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 1 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69793808" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Mode Outputs 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Mode Outputs Lines %d to %d[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25616" />
+ <val type="dict" id="69762048" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69797048" >
+ <item type="dict" id="69761328" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Input 8 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69761472" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="2" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Analogue Output 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25617" />
+ <val type="dict" id="69816368" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749176" >
+ <item type="dict" id="69816944" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Input 16 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69741280" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="3" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Analogue Output 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25618" />
+ <val type="dict" id="69768512" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749336" >
+ <item type="dict" id="69767504" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs 32 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69817376" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="4" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Analogue Output 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24835" />
+ <val type="dict" id="69772032" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749376" >
+ <item type="dict" id="58944080" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 16 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69771104" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="6" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Constant Input 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Constant Input 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25620" />
+ <val type="dict" id="69740416" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750216" >
+ <item type="dict" id="69817520" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs" />
+ </entry>
+ </item>
+ <item type="dict" id="69740560" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="17" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Manufacturer specific Analogue Output" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25088" />
+ <val type="dict" id="69768224" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750176" >
+ <item type="dict" id="69768800" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 8 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70797472" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Outputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Outputs 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25603" />
+ <val type="dict" id="69761904" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749496" >
+ <item type="dict" id="69772896" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Input Float" />
+ </entry>
+ </item>
+ <item type="dict" id="69833616" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Analogue Input Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25344" />
+ <val type="dict" id="69816800" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749416" >
+ <item type="dict" id="69761760" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 16 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69770384" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="6" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Outputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Outputs 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24608" />
+ <val type="dict" id="69770960" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750136" >
+ <item type="dict" id="69772320" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 1 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70763408" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Single Input 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Input Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25633" />
+ <val type="dict" id="70678544" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749736" >
+ <item type="dict" id="70807104" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="58878544" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analog Inputs 0x%X[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Trigger Selection" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24866" />
+ <val type="dict" id="69715840" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750496" >
+ <item type="dict" id="69816656" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 32 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69697088" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Polarity Input 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Polarity Input 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24867" />
+ <val type="dict" id="70737184" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749816" >
+ <item type="dict" id="58943360" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 32 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="58943936" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Polarity Input 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Constant Input 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25636" />
+ <val type="dict" id="58943072" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796448" >
+ <item type="dict" id="58943648" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="69768944" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="4" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Upper Limit Interger" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24838" />
+ <val type="dict" id="69768656" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796488" >
+ <item type="dict" id="69768080" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 16 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69770672" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="6" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt High to Low 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask High to Low 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25638" />
+ <val type="dict" id="69769520" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750096" >
+ <item type="dict" id="69767648" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="69823344" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Delta Unsigned" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25383" />
+ <val type="dict" id="69820464" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749976" >
+ <item type="dict" id="69762624" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 32 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69762192" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Value Outputs 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Value Outputs 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25640" />
+ <val type="dict" id="69761184" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750256" >
+ <item type="dict" id="69762480" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="69762768" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Positive Delta Unsigned" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25641" />
+ <val type="dict" id="70688816" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750296" >
+ <item type="dict" id="70693056" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70693200" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Upper Limit Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25642" />
+ <val type="dict" id="70803792" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750336" >
+ <item type="dict" id="70803936" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70803504" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Lower Limit Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25643" />
+ <val type="dict" id="70806096" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750376" >
+ <item type="dict" id="70805376" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70805520" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Delta Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25644" />
+ <val type="dict" id="70804800" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749016" >
+ <item type="dict" id="70803648" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70805952" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Negative Delta Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25645" />
+ <val type="dict" id="70806240" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749216" >
+ <item type="dict" id="70805808" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70804656" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Positive Delta Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25646" />
+ <val type="dict" id="70805664" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749936" >
+ <item type="dict" id="70804944" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70806672" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Offset Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25647" />
+ <val type="dict" id="70805232" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750016" >
+ <item type="dict" id="70804512" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70806528" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Scaling Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24624" />
+ <val type="dict" id="70805088" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69748976" >
+ <item type="dict" id="70804080" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 1 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70804224" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Polarity Input bit 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Polarity Input Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25352" />
+ <val type="dict" id="70804368" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796608" >
+ <item type="dict" id="70669056" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 16 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70671648" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="6" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Mask Outputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Mask Outputs 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25650" />
+ <val type="dict" id="70668624" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796888" >
+ <item type="dict" id="70668768" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70671936" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="4" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Scaling Integer" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25350" />
+ <val type="dict" id="69774336" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750456" >
+ <item type="dict" id="69774048" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 16 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69773904" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="6" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Mode Outputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Mode Outputs 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25200" />
+ <val type="dict" id="70798768" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796088" >
+ <item type="dict" id="70799200" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 1 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70797904" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Constant Outputs 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Constant Outputs Lines %d to %d[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25096" />
+ <val type="dict" id="70663024" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749656" >
+ <item type="dict" id="70660288" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 8 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70662016" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Mask Outputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Mask Outputs 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24632" />
+ <val type="dict" id="70661008" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749776" >
+ <item type="dict" id="70660864" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 1 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70662448" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Constant Input bit 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Constant Input Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25639" />
+ <val type="dict" id="70798192" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749856" >
+ <item type="dict" id="70798912" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70798336" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Negative Delta Unsigned" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24872" />
+ <val type="dict" id="69792512" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749616" >
+ <item type="dict" id="69792656" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 32 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69791936" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt High to Low Input 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Input High to Low 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25152" />
+ <val type="dict" id="70663744" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796008" >
+ <item type="dict" id="70661872" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 1 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70662736" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Outputs 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Change Polarity Outputs Bit %d to %d[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24864" />
+ <val type="dict" id="70662880" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750536" >
+ <item type="dict" id="70662304" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 32 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70661440" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Input 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Input 4 Byte" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25666" />
+ <val type="dict" id="70661584" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796168" >
+ <item type="dict" id="70663888" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70662592" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output Scaling Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25667" />
+ <val type="dict" id="70661296" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796808" >
+ <item type="dict" id="70663312" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs" />
+ </entry>
+ </item>
+ <item type="dict" id="69784032" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Mode Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output Error Mode" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25668" />
+ <val type="dict" id="69786480" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796928" >
+ <item type="dict" id="69740272" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs" />
+ </entry>
+ </item>
+ <item type="dict" id="69741856" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="4" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output Error Value Integer" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25669" />
+ <val type="dict" id="69738976" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750616" >
+ <item type="dict" id="69738688" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs" />
+ </entry>
+ </item>
+ <item type="dict" id="69740848" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output Error Value Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25665" />
+ <val type="dict" id="69741136" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750656" >
+ <item type="dict" id="69739552" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs" />
+ </entry>
+ </item>
+ <item type="dict" id="69742144" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output Offset Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25648" />
+ <val type="dict" id="69739840" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750696" >
+ <item type="dict" id="69739120" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="69742288" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input SI unit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25634" />
+ <val type="dict" id="69741424" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69795928" >
+ <item type="dict" id="69739408" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Interrupt Source Bank" />
+ </entry>
+ </item>
+ <item type="dict" id="69738832" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Source Bank 0x%X[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Source" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25094" />
+ <val type="dict" id="69740704" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749456" >
+ <item type="dict" id="69742432" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 8 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69742000" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Mode Outputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Mode Outputs 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25378" />
+ <val type="dict" id="69771600" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749536" >
+ <item type="dict" id="69738544" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 32 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="58944512" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Polarity Outputs 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Change Polarity Outputs 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25680" />
+ <val type="dict" id="69773472" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796328" >
+ <item type="dict" id="69771456" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs" />
+ </entry>
+ </item>
+ <item type="dict" id="69775200" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output SI Unit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25090" />
+ <val type="dict" id="70672080" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750576" >
+ <item type="dict" id="70660576" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 8 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70660720" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Change Polarity Outputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Change Polarity Outputs 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25635" />
+ <val type="dict" id="69772752" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796688" >
+ <item type="dict" id="69771312" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Global Interrupt Enable" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Global Interrupt Enable" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="1" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25120" />
+ <val type="dict" id="69772608" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69795968" >
+ <item type="dict" id="69775056" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 1 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69772176" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Outputs 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Outputs Bit %d to %d[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25600" />
+ <val type="dict" id="69772464" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796208" >
+ <item type="dict" id="69771744" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Input 8 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69774912" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="2" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Analogue Input 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25184" />
+ <val type="dict" id="70682640" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796648" >
+ <item type="dict" id="70681344" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 1 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70683792" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Value Outputs 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Value Outputs Lines %d to %d[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25346" />
+ <val type="dict" id="69773040" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796528" >
+ <item type="dict" id="70684512" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 16 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70683936" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="6" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Change Polarity Outputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Change Polarity Outputs 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25670" />
+ <val type="dict" id="70683072" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69795888" >
+ <item type="dict" id="70681776" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70680768" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="4" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output Offset Integer" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25376" />
+ <val type="dict" id="70682064" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796128" >
+ <item type="dict" id="70682208" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 32 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70682496" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Outputs 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Output 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24672" />
+ <val type="dict" id="69741568" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750736" >
+ <item type="dict" id="69739696" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 1 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69739984" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Any Change Input bit 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Input Low to High Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24656" />
+ <val type="dict" id="70683360" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796368" >
+ <item type="dict" id="70680912" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 1 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70682784" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Any Change Input bit 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Input Any Change Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25602" />
+ <val type="dict" id="70682928" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796848" >
+ <item type="dict" id="70681200" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Input 32 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70681920" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="4" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Analogue Input 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24870" />
+ <val type="dict" id="69774768" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796288" >
+ <item type="dict" id="69771888" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 32 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69773760" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Any Change Input 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Input Any Change 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25649" />
+ <val type="dict" id="70684080" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69748696" >
+ <item type="dict" id="70684224" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70684368" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="4" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Offset Integer" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25095" />
+ <val type="dict" id="70681488" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796768" >
+ <item type="dict" id="70683216" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 8 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70799056" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Value Outputs 0x%X to 0x%X[(sub*8-7,sub*8)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Value Outputs 8 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24871" />
+ <val type="dict" id="70661728" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749056" >
+ <item type="dict" id="70660432" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 32 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70664032" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Low to High Input 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Input Low to High 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25601" />
+ <val type="dict" id="70798480" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796408" >
+ <item type="dict" id="70798048" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Input 16 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70798624" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="3" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Read Analogue Input 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25351" />
+ <val type="dict" id="70662160" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69749896" >
+ <item type="dict" id="70661152" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 16 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70663456" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="6" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Value Outputs 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Value Outputs 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25384" />
+ <val type="dict" id="69739264" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69750056" >
+ <item type="dict" id="69773616" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 32 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69774624" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Mask Outputs 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Filter Mask Outputs 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25619" />
+ <val type="dict" id="69793088" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69796968" >
+ <item type="dict" id="69791792" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs Float" />
+ </entry>
+ </item>
+ <item type="dict" id="69792368" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Write Analogue Output Float" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25382" />
+ <val type="dict" id="70681632" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69748856" >
+ <item type="dict" id="70683504" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Output 32 Bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70681056" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="7" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Mode Outputs 0x%X to 0x%X[(sub*32-31,sub*32)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Error Mode Outputs 32 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24839" />
+ <val type="dict" id="69792080" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69797008" >
+ <item type="dict" id="69792800" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 16 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="69793520" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="6" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Low to High 0x%X to 0x%X[(sub*16-15,sub*16)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Low to High 16 Bit" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25671" />
+ <val type="dict" id="70754496" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69797128" >
+ <item type="dict" id="70789712" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Outputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70789856" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="4" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Output Scaling Integer" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="25637" />
+ <val type="dict" id="70790000" >
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="69702480" >
+ <item type="dict" id="70789280" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Analogue Inputs" />
+ </entry>
+ </item>
+ <item type="dict" id="70789424" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="4" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input %d[(sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="254" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Analogue Input Interrupt Lower Limit Interger" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="7" />
+ </entry>
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24688" />
+ <val type="dict" id="70789568" >
+ <entry>
+ <key type="string" value="incr" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="struct" />
+ <val type="numeric" value="15" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="8" />
+ </entry>
+ <entry>
+ <key type="string" value="values" />
+ <val type="list" id="70801368" >
+ <item type="dict" id="70787984" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="ro" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="5" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Number of Input 1 bit" />
+ </entry>
+ </item>
+ <item type="dict" id="70788128" >
+ <entry>
+ <key type="string" value="access" />
+ <val type="string" value="rw" />
+ </entry>
+ <entry>
+ <key type="string" value="pdo" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="type" />
+ <val type="numeric" value="1" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Any Change Input bit 0x%X[((idx-1)*128+sub)]" />
+ </entry>
+ <entry>
+ <key type="string" value="nbmax" />
+ <val type="numeric" value="128" />
+ </entry>
+ </item>
+ </val>
+ </entry>
+ <entry>
+ <key type="string" value="need" />
+ <val type="False" value="" />
+ </entry>
+ <entry>
+ <key type="string" value="name" />
+ <val type="string" value="Interrupt Mask Input High to Low Bit 0x%X to 0x%X[(idx*128-127,idx*128)]" />
+ </entry>
+ </val>
+ </entry>
+</attr>
+<attr name="Description" type="string">Slave AVR Test</attr>
+<attr name="Dictionary" type="dict" id="70788272" >
+ <entry>
+ <key type="numeric" value="4096" />
+ <val type="numeric" value="197009" />
+ </entry>
+ <entry>
+ <key type="numeric" value="4097" />
+ <val type="numeric" value="0" />
+ </entry>
+ <entry>
+ <key type="numeric" value="24578" />
+ <val type="list" id="69853016" >
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="4099" />
+ <val type="list" id="69800024" >
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="4101" />
+ <val type="numeric" value="128" />
+ </entry>
+ <entry>
+ <key type="numeric" value="24576" />
+ <val type="list" id="69797168" >
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="4104" />
+ <val type="string" value="" />
+ </entry>
+ <entry>
+ <key type="numeric" value="4105" />
+ <val type="string" value="" />
+ </entry>
+ <entry>
+ <key type="numeric" value="4106" />
+ <val type="string" value="" />
+ </entry>
+ <entry>
+ <key type="numeric" value="4112" />
+ <val type="list" id="69797208" >
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="4113" />
+ <val type="list" id="69797488" >
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24579" />
+ <val type="list" id="69797808" >
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="4116" />
+ <val type="string" value=""$NODEID+0x80"" />
+ </entry>
+ <entry>
+ <key type="numeric" value="25088" />
+ <val type="list" id="69797648" >
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="4119" />
+ <val type="numeric" value="1000" />
+ </entry>
+ <entry>
+ <key type="numeric" value="4120" />
+ <val type="list" id="69798248" >
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="4118" />
+ <val type="list" id="69797608" >
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="24581" />
+ <val type="True" value="" />
+ </entry>
+ <entry>
+ <key type="numeric" value="24582" />
+ <val type="list" id="69797728" >
+ <item type="numeric" value="255" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="5120" />
+ <val type="list" id="69797768" >
+ <item type="string" value="{True:"$NODEID+0x%X00"%(base+2),False:0x80000000}[base<4]" />
+ <item type="numeric" value="1" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="5632" />
+ <val type="list" id="69797408" >
+ <item type="numeric" value="1644167432" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="6144" />
+ <val type="list" id="69797968" >
+ <item type="string" value="{True:"$NODEID+0x%X80"%(base+1),False:0x80000000}[base<4]" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ <item type="numeric" value="0" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="6656" />
+ <val type="list" id="69797688" >
+ <item type="numeric" value="1610613000" />
+ </val>
+ </entry>
+ <entry>
+ <key type="numeric" value="4608" />
+ <val type="list" id="69797888" >
+ <item type="string" value=""$NODEID+0x600"" />
+ <item type="string" value=""$NODEID+0x580"" />
+ </val>
+ </entry>
+</attr>
+<attr name="SpecificMenu" type="list" id="69797528" >
+ <item type="tuple" id="58964768" >
+ <item type="string" value="Read Input Bit" />
+ <item type="list" id="70801248" >
+ <item type="numeric" value="24608" />
+ <item type="numeric" value="24624" />
+ <item type="numeric" value="24632" />
+ <item type="numeric" value="24656" />
+ <item type="numeric" value="24672" />
+ <item type="numeric" value="24688" />
+ </item>
+ </item>
+ <item type="tuple" id="58972920" >
+ <item type="string" value="Write Output Bit" />
+ <item type="list" id="70801208" >
+ <item type="numeric" value="25120" />
+ <item type="numeric" value="25152" />
+ <item type="numeric" value="25168" />
+ <item type="numeric" value="25184" />
+ <item type="numeric" value="25200" />
+ </item>
+ </item>
+</attr>
+<attr name="ParamsDictionary" type="dict" id="70810336" >
+</attr>
+<attr name="UserMapping" type="dict" id="70790576" >
+</attr>
+<attr name="DS302" type="dict" id="70790720" >
+</attr>
+<attr name="ProfileName" type="string">DS-401</attr>
+<attr name="Type" type="string">slave</attr>
+<attr name="ID" type="numeric" value="0" />
+<attr name="Name" type="string">ObjDict</attr>
+</PyObject>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/hardware.h Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,52 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+AVR Port: Andreas GLAUSER and Peter CHRISTEN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+/******************************************************************************
+MCU ports and Bits
+Makros for access on hardware
+******************************************************************************/
+
+#ifndef _HARDWARE_INCLUDED
+#define _HARDWARE_INCLUDED
+
+/******************************************************************************
+Makros for bit access on the ports and registers
+******************************************************************************/
+// Macros for set and clear bits in I/O registers
+#define setbit(address,bit) ((address) |= (1<<(bit)))
+#define clearbit(address,bit) ((address) &= ~(1<<(bit)))
+#define togglebit(address,bit) ((address) ^= (1<<(bit)))
+
+// Macro for testing of a single bit in an I/O location
+#define checkbit(address,bit) ((address) & (1<<(bit)))
+
+/************************** Hardware Makros **********************************/
+
+// Read the inputs
+#define get_inputs() (~PINA)
+#define read_bcd() (~PINC & 0x0F)
+// Write the outputs
+#define set_outputs(val) PORTB = ~(val)
+
+#endif // _HARDWARE_INCLUDED
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/AVR/DS401_Slave/main.c Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,158 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+AVR Port: Andreas GLAUSER and Peter CHRISTEN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+/******************************************************************************
+Project description:
+Test projekt for a DS 401 slave, running on Atmel's STK500 with AT90CAN128
+Short description:
+ PORTA: Inputs (Keys, low active)
+ PORTB: Outputs (LEDs, low active)
+ PORTC: Node ID (1 BCD switch)
+
+******************************************************************************/
+#include "hardware.h"
+#include "canfestival.h"
+#include "can_AVR.h"
+#include "objdict.h"
+
+unsigned char timer_interrupt = 0; // Set if timer interrupt eclapsed
+unsigned char inputs;
+
+// CAN
+unsigned char nodeID;
+static Message m = Message_Initializer; // contain a CAN message
+
+static unsigned char old_input_value; // Inputs, to check if a input has changed
+
+void sys_init();
+
+// macros to handle the schedule timer
+#define sys_timer timer_interrupt
+#define reset_sys_timer() timer_interrupt = 0
+#define CYCLE_TIME 1000 // Sample Timebase [us]
+
+int main(void)
+{
+ sys_init(); // Initialize system
+ canInit(CAN_BAUDRATE); // Initialize the CANopen bus
+ initTimer(); // Start timer for the CANopen stack
+ nodeID = read_bcd(); // Read node ID first
+ setNodeId (&ObjDict_Data, nodeID);
+ setState(&ObjDict_Data, Initialisation); // Init the state
+ PDOInit(&ObjDict_Data);
+
+ // Examples for callbacks
+ // RegisterSetODentryCallBack(d, 0x1005, 0, &OnCOB_ID_SyncUpdate);
+ // errorCode = setODentry(d, d->transfers[line].index, d->transfers[line].subIndex,
+ // (void *) d->transfers[line].data, &size, 1);
+
+ for(;;) // forever loop
+ {
+ if (sys_timer) // Cycle timer, invoke action on every time slice
+ {
+ reset_sys_timer(); // Reset timer
+
+ // Read the input states from the ports
+ Read_Inputs_8_Bit[0] = get_inputs();
+ // Send the new input state if there was a change
+ if (old_input_value != Read_Inputs_8_Bit[0])
+ {
+ old_input_value = Read_Inputs_8_Bit[0];
+ if (getState(&ObjDict_Data) == Operational)
+ sendPDOevent(&ObjDict_Data);
+ }
+ set_outputs(Write_Outputs_8_Bit[0]);
+
+ // Check if CAN address has been changed
+ if(!( nodeID == read_bcd()))
+ {
+ nodeID = read_bcd(); // Save the new CAN adress
+ setState(&ObjDict_Data, Stopped); // Stop the node, to change the node ID
+ setNodeId(&ObjDict_Data, nodeID); // Now the CAN adress is changed
+ setState(&ObjDict_Data, Pre_operational); // Set to Pre_operational, master must boot it again
+ }
+ }
+ // Handle all MOB's at once, if a message was received pass it to the CANstack
+ if (canReceive(&m)) // a message reveived
+ canDispatch(&ObjDict_Data, &m); // process it
+ else
+ {
+ // Enter sleep mode
+ #ifdef WD_SLEEP // Watchdog and Sleep
+ wdt_reset();
+ sleep_enable();
+ sleep_cpu();
+ #endif // Watchdog and Sleep
+ }
+ }
+}
+
+void sys_init()
+/******************************************************************************
+Initialize the relays, the main states and the modbus protocol stack.
+INPUT LOCK_STATES *lock_states
+OUTPUT void
+******************************************************************************/
+{
+ OSCCAL = 0x43;
+
+ PORTA = 0xFF; // Inputs (Keys, low active) with pullup
+ DDRA = 0x00; //
+ PORTB = 0xFF; // Outputs (LEDs, low active) all 1
+ DDRB = 0xFF; //
+ PORTC = 0xFF; // 1 BCD switch with pullup
+ DDRC = 0x00; //
+ PORTD = 0x2C; // 2xCOM, unused, CAN, unused
+ DDRD = 0x2A; // All init 0 or without pullup
+ PORTE = 0x00; // Output
+ DDRE = 0x3C; // 2x not used, 2x not used
+ PORTF = 0x00; // Not used
+ DDRF = 0xFF; // All output
+ PORTG = 0x00; // Not used
+ DDRG = 0x1F; // Output for debug (only 5 pins)
+
+// Set timer 0 for main schedule time
+ TCCR0A |= 1 << WGM01 | 1 << CS01 | 1 << CS00;// Timer 0 CTC , Timer 0 mit CK/64 starten
+ TIMSK0 = 1 << OCIE0A; // Timer Interrupts: Timer 0 Compare
+ OCR0A = (unsigned char)(F_CPU / 64 * CYCLE_TIME/1000000 - 1); // Reloadvalue for timer 0
+ #ifdef WD_SLEEP // Watchdog and Sleep
+ wdt_reset();
+ wdt_enable(WDTO_15MS); // Watchdogtimer start with 16 ms timeout
+ #endif // Watchdog and Sleep
+ sei(); // Enable Interrupts
+}
+
+
+#ifdef __IAR_SYSTEMS_ICC__
+#pragma type_attribute = __interrupt
+#pragma vector=TIMER0_COMP_vect
+void TIMER0_COMP_interrupt(void)
+#else // GCC
+ISR(TIMER0_COMP_vect)
+#endif // GCC
+/******************************************************************************
+Interruptserviceroutine Timer 2 Compare A for the main cycle
+******************************************************************************/
+
+{
+ timer_interrupt = 1; // Set flag
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/include/AVR/applicfg.h Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,91 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+AVR Port: Andreas GLAUSER and Peter CHRISTEN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#ifndef __APPLICFG_AVR__
+#define __APPLICFG_AVR__
+
+#include <string.h>
+#include <stdio.h>
+
+// Integers
+#define INTEGER8 signed char
+#define INTEGER16 short
+#define INTEGER24
+#define INTEGER32 long
+#define INTEGER40
+#define INTEGER48
+#define INTEGER56
+#define INTEGER64
+
+// Unsigned integers
+#define UNS8 unsigned char
+#define UNS16 unsigned short
+#define UNS32 unsigned long
+/*
+#define UNS24
+#define UNS40
+#define UNS48
+#define UNS56
+#define UNS64
+*/
+
+
+// Reals
+#define REAL32 float
+#define REAL64 double
+#include "can.h"
+
+// MSG functions
+// not finished, the strings have to be placed to the flash and printed out
+// using the printf_P function
+/// Definition of MSG_ERR
+// ---------------------
+#ifdef DEBUG_ERR_CONSOLE_ON
+#define MSG_ERR(num, str, val) \
+ printf(num, ' '); \
+ printf(str); \
+ printf(val); \
+ printf('\n');
+#else
+# define MSG_ERR(num, str, val)
+#endif
+
+/// Definition of MSG_WAR
+// ---------------------
+#ifdef DEBUG_WAR_CONSOLE_ON
+#define MSG_WAR(num, str, val) \
+ printf(num, ' '); \
+ printf(str); \
+ printf(val); \
+ printf('\n');
+#else
+# define MSG_WAR(num, str, val)
+#endif
+
+typedef void* CAN_HANDLE;
+
+typedef void* CAN_PORT;
+
+#endif
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/include/AVR/can_AVR.h Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,54 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+AVR Port: Andreas GLAUSER and Peter CHRISTEN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#ifndef __CAN_AVR__
+#define __CAN_AVR__
+
+// AVR implementation of the CANopen driver includes
+// Hardware related macros and ATMEL lib can_drv
+#include "config.h"
+#include "can_drv.h"
+
+// Canfestivals includes
+#include "can.h"
+
+// Number of receive MOb
+#define NB_RX_MOB 13 // minimal 8
+// Number of transmit MOb
+#define NB_TX_MOB (NB_MOB - NB_RX_MOB)
+
+#if (NB_TX_MOB < 1)
+#error define less RX Mobs, you must have at least 1 TX MOb!
+#elif (NB_RX_MOB < 8)
+#error define at least 8 RX MObs!
+#endif
+
+#define START_TX_MOB NB_RX_MOB
+#define TX_INT_MSK ((0x7F << (7 - NB_TX_MOB)) & 0x7F)
+
+/************************* To be called by user app ***************************/
+
+unsigned char canInit(unsigned int bitrate);
+unsigned char canSend(CAN_PORT notused, Message *m);
+unsigned char canReceive(Message *m);
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/include/AVR/can_drv.h Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,191 @@
+//******************************************************************************
+//! @file $RCSfile$
+//!
+//! Copyright (c) 2007 Atmel.
+//!
+//! Use of this program is subject to Atmel's End User License Agreement.
+//! Please read file license.txt for copyright notice.
+//!
+//! @brief This file contains the prototypes and the macros of the
+//! low level functions (drivers) of:
+//! - CAN (Controller Array Network)
+//! - for AT90CAN128/64/32.
+//!
+//! This file can be parsed by Doxygen for automatic documentation generation.
+//! This file has been validated with AVRStudio-413528/WinAVR-20070122.
+//!
+//! @version $Revision$ $Name$
+//!
+//! @todo
+//! @bug
+//******************************************************************************
+// Same stuff removed by Peter Christen
+
+#ifndef _CAN_DRV_H_
+#define _CAN_DRV_H_
+
+typedef unsigned char U8 ;
+
+#define CAN_PORT_IN PIND
+#define CAN_PORT_DIR DDRD
+#define CAN_PORT_OUT PORTD
+#define CAN_INPUT_PIN 6
+#define CAN_OUTPUT_PIN 5
+ // ----------
+#define ERR_GEN_MSK ((1<<SERG)|(1<<CERG)|(1<<FERG)|(1<<AERG)) //! MaSK for GENeral ERRors INTerrupts
+#define INT_GEN_MSK ((1<<BOFFIT)|(1<<BXOK)|(ERR_GEN_MSK)) //! MaSK for GENeral INTerrupts
+
+#define BRP_MSK ((1<<BRP5)|(1<<BRP4)|(1<<BRP3)|(1<<BRP2)|(1<<BRP1)|(1<<BRP0)) //! Mask for BRP in CANBT1
+#define SJW_MSK ((1<<SJW1)|(1<<SJW0)) //! MaSK for SJW in CANBT2
+#define PRS_MSK ((1<<PRS2)|(1<<PRS1)|(1<<PRS0)) //! MaSK for PRS in CANBT2
+#define PHS2_MSK ((1<<PHS22)|(1<<PHS21)|(1<<PHS20)) //! MaSK for PHS2 in CANBT2
+#define PHS1_MSK ((1<<PHS12)|(1<<PHS11)|(1<<PHS10)) //! MaSK for PHS1 in CANBT2
+#define BRP (BRP0) //! BRP in CANBT1
+#define SJW (SJW0) //! SJW in CANBT2
+#define PRS (PRS0) //! PRS in CANBT2
+#define PHS2 (PHS20) //! PHS2 in CANBT2
+#define PHS1 (PHS10) //! PHS1 in CANBT2
+
+#define HPMOB_MSK ((1<<HPMOB3)|(1<<HPMOB2)|(1<<HPMOB1)|(1<<HPMOB0)) //! MaSK for MOb in HPMOB
+#define MOBNB_MSK ((1<<MOBNB3)|(1<<MOBNB2)|(1<<MOBNB1)|(1<<MOBNB0)) //! MaSK for MOb in CANPAGE
+
+#define ERR_MOB_MSK ((1<<BERR)|(1<<SERR)|(1<<CERR)|(1<<FERR)|(1<<AERR)) //! MaSK for MOb ERRors
+#define INT_MOB_MSK ((1<<TXOK)|(1<<RXOK)|(1<<BERR)|(1<<SERR)|(1<<CERR)|(1<<FERR)|(1<<AERR)) //! MaSK for MOb INTerrupts
+
+#define CONMOB_MSK ((1<<CONMOB1)|(1<<CONMOB0)) //! MaSK for CONfiguration MOb
+#define DLC_MSK ((1<<DLC3)|(1<<DLC2)|(1<<DLC1)|(1<<DLC0)) //! MaSK for Data Length Coding
+#define CONMOB (CONMOB0) //! CONfiguration MOb
+#define DLC (DLC0) //! Data Length Coding
+ // ----------
+#define BRP_MIN 1 //! Prescaler of FOSC (TQ generation)
+#define BRP_MAX 64
+#define NTQ_MIN 8 //! Number of TQ in one CAN bit
+#define NTQ_MAX 25
+ //! True segment values in TQ
+#define PRS_MIN 1 //! Propagation segment
+#define PRS_MAX 8
+#define PHS1_MIN 2 //! Phase segment 1
+#define PHS1_MAX 8
+#define PHS2_MIN 2 //! Phase segment 2
+#define PHS2_MAX 8
+#define SJW_MIN 1 //! Synchro jump width
+#define SJW_MAX 4
+ // ----------
+#define NB_MOB 15
+#define NB_DATA_MAX 8
+#define LAST_MOB_NB (NB_MOB-1)
+#define NO_MOB 0xFF
+ // ----------
+typedef enum {
+ MOB_0, MOB_1, MOB_2, MOB_3, MOB_4, MOB_5, MOB_6, MOB_7,
+ MOB_8, MOB_9, MOB_10, MOB_11, MOB_12, MOB_13, MOB_14 } can_mob_t;
+ // ----------
+#define STATUS_CLEARED 0x00
+ // ----------
+#define MOB_NOT_COMPLETED 0x00 // 0x00
+#define MOB_TX_COMPLETED (1<<TXOK) // 0x40
+#define MOB_RX_COMPLETED (1<<RXOK) // 0x20
+#define MOB_RX_COMPLETED_DLCW ((1<<RXOK)|(1<<DLCW)) // 0xA0
+#define MOB_ACK_ERROR (1<<AERR) // 0x01
+#define MOB_FORM_ERROR (1<<FERR) // 0x02
+#define MOB_CRC_ERROR (1<<CERR) // 0x04
+#define MOB_STUFF_ERROR (1<<SERR) // 0x08
+#define MOB_BIT_ERROR (1<<BERR) // 0x10
+#define MOB_PENDING ((1<<RXOK)|(1<<TXOK)) // 0x60
+#define MOB_NOT_REACHED ((1<<AERR)|(1<<FERR)|(1<<CERR)|(1<<SERR)|(1<<BERR)) // 0x1F
+#define MOB_DISABLE 0xFF // 0xFF
+ // ----------
+#define MOB_Tx_ENA 1
+#define MOB_Rx_ENA 2
+#define MOB_Rx_BENA 3
+ // ----------
+
+//_____ M A C R O S ____________________________________________________________
+
+ // ----------
+#define Can_reset() ( CANGCON = (1<<SWRES) )
+#define Can_enable() ( CANGCON |= (1<<ENASTB))
+#define Can_disable() ( CANGCON &= ~(1<<ENASTB))
+ // ----------
+#define Can_full_abort() { CANGCON |= (1<<ABRQ); CANGCON &= ~(1<<ABRQ); }
+ // ----------
+#define Can_conf_bt() { CANBT1=CONF_CANBT1; CANBT2=CONF_CANBT2; CANBT3=CONF_CANBT3; }
+ // ----------
+#define Can_set_mob(mob) { CANPAGE = ((mob) << 4);}
+#define Can_set_mask_mob() { CANIDM4=0xFF; CANIDM3=0xFF; CANIDM2=0xFF; CANIDM1=0xFF; }
+#define Can_clear_mask_mob() { CANIDM4=0x00; CANIDM3=0x00; CANIDM2=0x00; CANIDM1=0x00; }
+#define Can_clear_status_mob() { CANSTMOB=0x00; }
+#define Can_clear_mob() { U8 volatile *__i_; for (__i_=&CANSTMOB; __i_<&CANSTML; __i_++) { *__i_=0x00 ;}}
+ // ----------
+#define Can_mob_abort() ( DISABLE_MOB )
+ // ----------
+#define Can_set_dlc(dlc) ( CANCDMOB |= (dlc) )
+#define Can_set_ide() ( CANCDMOB |= (1<<IDE) )
+#define Can_set_rtr() ( CANIDT4 |= (1<<RTRTAG) )
+#define Can_set_rplv() ( CANCDMOB |= (1<<RPLV) )
+ // ----------
+#define Can_clear_dlc() ( CANCDMOB &= ~DLC_MSK )
+#define Can_clear_ide() ( CANCDMOB &= ~(1<<IDE) )
+#define Can_clear_rtr() ( CANIDT4 &= ~(1<<RTRTAG) )
+#define Can_clear_rplv() ( CANCDMOB &= ~(1<<RPLV) )
+ // ----------
+#define DISABLE_MOB ( CANCDMOB &= (~CONMOB_MSK) )
+#define Can_config_tx() { DISABLE_MOB; CANCDMOB |= (MOB_Tx_ENA << CONMOB); }
+#define Can_config_rx() { DISABLE_MOB; CANCDMOB |= (MOB_Rx_ENA << CONMOB); }
+#define Can_config_rx_buffer() { CANCDMOB |= (MOB_Rx_BENA << CONMOB); }
+ // ----------
+#define Can_get_dlc() ((CANCDMOB & DLC_MSK) >> DLC )
+#define Can_get_ide() ((CANCDMOB & (1<<IDE)) >> IDE )
+#define Can_get_rtr() ((CANIDT4 & (1<<RTRTAG)) >> RTRTAG)
+ // ----------
+#define Can_set_rtrmsk() ( CANIDM4 |= (1<<RTRMSK) )
+#define Can_set_idemsk() ( CANIDM4 |= (1<<IDEMSK) )
+ // ----------
+#define Can_clear_rtrmsk() ( CANIDM4 &= ~(1<<RTRMSK) )
+#define Can_clear_idemsk() ( CANIDM4 &= ~(1<<IDEMSK) )
+ // ----------
+ //!< STD ID TAG Reading
+#define Can_get_std_id(identifier) { *((U8 *)(&(identifier))+1) = CANIDT1>>5 ; \
+ *((U8 *)(&(identifier)) ) = (CANIDT2>>5)+(CANIDT1<<3); }
+ // ----------
+ //!< EXT ID TAG Reading
+#define Can_get_ext_id(identifier) { *((U8 *)(&(identifier))+3) = CANIDT1>>3 ; \
+ *((U8 *)(&(identifier))+2) = (CANIDT2>>3)+(CANIDT1<<5); \
+ *((U8 *)(&(identifier))+1) = (CANIDT3>>3)+(CANIDT2<<5); \
+ *((U8 *)(&(identifier)) ) = (CANIDT4>>3)+(CANIDT3<<5); }
+ // ----------
+ //!< STD ID Construction
+#define CAN_SET_STD_ID_10_4(identifier) (((*((U8 *)(&(identifier))+1))<<5)+((* (U8 *)(&(identifier)))>>3))
+#define CAN_SET_STD_ID_3_0( identifier) (( * (U8 *)(&(identifier)) )<<5)
+ // ----------
+ //!< STD ID TAG writing
+#define Can_set_std_id(identifier) { CANIDT1 = CAN_SET_STD_ID_10_4(identifier); \
+ CANIDT2 = CAN_SET_STD_ID_3_0( identifier); \
+ CANCDMOB &= (~(1<<IDE)) ; }
+ // ----------
+ //!< STD ID MASK writing
+#define Can_set_std_msk(mask) { CANIDM1 = CAN_SET_STD_ID_10_4(mask); \
+ CANIDM2 = CAN_SET_STD_ID_3_0( mask); }
+ // ----------
+ //!< EXT ID Construction
+#define CAN_SET_EXT_ID_28_21(identifier) (((*((U8 *)(&(identifier))+3))<<3)+((*((U8 *)(&(identifier))+2))>>5))
+#define CAN_SET_EXT_ID_20_13(identifier) (((*((U8 *)(&(identifier))+2))<<3)+((*((U8 *)(&(identifier))+1))>>5))
+#define CAN_SET_EXT_ID_12_5( identifier) (((*((U8 *)(&(identifier))+1))<<3)+((* (U8 *)(&(identifier)) )>>5))
+#define CAN_SET_EXT_ID_4_0( identifier) ((* (U8 *)(&(identifier)) )<<3)
+ // ----------
+ //!< EXT ID TAG writing
+#define Can_set_ext_id(identifier) { CANIDT1 = CAN_SET_EXT_ID_28_21(identifier); \
+ CANIDT2 = CAN_SET_EXT_ID_20_13(identifier); \
+ CANIDT3 = CAN_SET_EXT_ID_12_5( identifier); \
+ CANIDT4 = CAN_SET_EXT_ID_4_0( identifier); \
+ CANCDMOB |= (1<<IDE); }
+ // ----------
+ //!< EXT ID MASK writing
+#define Can_set_ext_msk(mask) { CANIDM1 = CAN_SET_EXT_ID_28_21(mask); \
+ CANIDM2 = CAN_SET_EXT_ID_20_13(mask); \
+ CANIDM3 = CAN_SET_EXT_ID_12_5( mask); \
+ CANIDM4 = CAN_SET_EXT_ID_4_0( mask); }
+#endif // _CAN_DRV_H_
+
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/include/AVR/canfestival.h Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,34 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+AVR Port: Andreas GLAUSER and Peter CHRISTEN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+
+#ifndef __CAN_CANFESTIVAL__
+#define __CAN_CANFESTIVAL__
+
+#include "applicfg.h"
+
+// --------- to be called by user app ---------
+void initTimer(void);
+UNS8 canSend(CAN_PORT notused, Message *m);
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/include/AVR/config.h Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,71 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+AVR Port: Andreas GLAUSER and Peter CHRISTEN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#ifndef _CONFIG_H_
+#define _CONFIG_H_
+
+#ifdef __IAR_SYSTEMS_ICC__
+#include <ioavr.h>
+#include <intrinsics.h>
+#include "iar.h"
+#else // GCC
+#include <inttypes.h>
+#include <avr\io.h>
+#include <avr\interrupt.h>
+#include <avr/pgmspace.h>
+#include <avr\sleep.h>
+#include <avr\wdt.h>
+#endif // GCC
+
+//#define WD_SLEEP
+// Needed defines by Atmel lib
+#define FOSC 8000 // 8 MHz External cristal
+#ifndef F_CPU
+#define F_CPU (1000UL*FOSC) // Need for AVR GCC
+#endif
+#define CAN_BAUDRATE 125
+
+// Needed defines by Canfestival lib
+#define MAX_CAN_BUS_ID 1
+#define SDO_MAX_LENGTH_TRANSFERT 32
+#define SDO_MAX_SIMULTANEOUS_TRANSFERTS 1
+#define NMT_MAX_NODE_ID 128
+#define SDO_TIMEOUT_MS 3000U
+#define MAX_NB_TIMER 8
+
+// CANOPEN_BIG_ENDIAN is not defined
+#define CANOPEN_LITTLE_ENDIAN 1
+
+#define US_TO_TIMEVAL_FACTOR 8
+
+#define REPEAT_SDO_MAX_SIMULTANEOUS_TRANSFERTS_TIMES(repeat)\
+repeat
+#define REPEAT_NMT_MAX_NODE_ID_TIMES(repeat)\
+repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat repeat
+
+#define EMCY_MAX_ERRORS 8
+#define REPEAT_EMCY_MAX_ERRORS_TIMES(repeat)\
+repeat repeat repeat repeat repeat repeat repeat repeat
+
+
+#endif /* _CONFIG_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/include/AVR/iar.h Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,46 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+Copyright (C): AVR Port Andreas GLAUSER and Peter CHRISTEN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#ifndef _IAR_H_
+#define _IAR_H_
+
+#ifdef __IAR_SYSTEMS_ICC__ // IAR Compiler
+
+/*
+#define ISR(vect) \
+ _Pragma("vector="vect) \
+ __interrupt void Interrupt_##vect (void)
+*/
+#define sei() __enable_interrupt()
+#define cli() __disable_interrupt()
+#define sleep_enable() SMCR = 1 << SE
+#define sleep_cpu() __sleep()
+#define wdt_reset() __watchdog_reset()
+#define wdt_enable(val) {WDTCSR = 1 << WDCE | 1 << WDE; \
+ WDTCSR = 1 << WDE | (val);}
+
+#else
+#error Not an IAR Compiler!
+#endif // IAR Compiler
+
+#endif // _IAR_H_
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/include/AVR/timerscfg.h Thu Jan 31 15:20:59 2008 +0100
@@ -0,0 +1,43 @@
+/*
+This file is part of CanFestival, a library implementing CanOpen Stack.
+
+Copyright (C): Edouard TISSERANT and Francis DUPIN
+AVR Port: Andreas GLAUSER and Peter CHRISTEN
+
+See COPYING file for copyrights details.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+#ifndef __TIMERSCFG_H__
+#define __TIMERSCFG_H__
+
+// Whatever your microcontroller, the timer wont work if
+// TIMEVAL is not at least on 32 bits
+#define TIMEVAL UNS32
+
+// The timer of the AVR counts from 0000 to 0xFFFF in CTC mode (it can be
+// shortened setting OCR3A eg. to get 2ms instead of 2.048ms)
+#define TIMEVAL_MAX 0xFFFF
+
+// The timer is incrementing every 4 us.
+//#define MS_TO_TIMEVAL(ms) (ms * 250)
+//#define US_TO_TIMEVAL(us) (us>>2)
+
+// The timer is incrementing every 8 us.
+#define MS_TO_TIMEVAL(ms) ((ms) * 125)
+#define US_TO_TIMEVAL(us) ((us)>>3)
+
+#endif