Wideregistersupport (#5)

* DINT and LINT IO added

* wide register support, 32, 64bit

* ff submodule pointer for ethercat_src

---------

authored-by: r2k
This commit is contained in:
r2k-in-the-vortex
2023-12-03 23:27:58 +02:00
committed by GitHub
parent a283d0dbac
commit 3ffab7f6a1
4 changed files with 42 additions and 2 deletions
@@ -59,6 +59,14 @@ IEC_BYTE *byte_output[BUFFER_SIZE];\r\n\
IEC_UINT *int_input[BUFFER_SIZE];\r\n\
IEC_UINT *int_output[BUFFER_SIZE];\r\n\
\r\n\
//32bit I/O\r\n\
IEC_DINT *dint_input[BUFFER_SIZE];\r\n\
IEC_DINT *dint_output[BUFFER_SIZE];\r\n\
\r\n\
//64bit I/O\r\n\
IEC_LINT *lint_input[BUFFER_SIZE];\r\n\
IEC_LINT *lint_output[BUFFER_SIZE];\r\n\
\r\n\
//Memory\r\n\
IEC_UINT *int_memory[BUFFER_SIZE];\r\n\
IEC_DINT *dint_memory[BUFFER_SIZE];\r\n\
@@ -176,6 +184,12 @@ void glueVar(ostream& glueVars, char *varName, char *varType)
case 'W':
glueVars << "\tint_input[" << pos1 << "] = " << varName << ";\r\n";
break;
case 'D':
glueVars << "\tdint_input[" << pos1 << "] = (IEC_DINT *)" << varName << ";\r\n";
break;
case 'L':
glueVars << "\tlint_input[" << pos1 << "] = (IEC_LINT *)" << varName << ";\r\n";
break;
}
}
else if (varName[2] == 'Q')
@@ -192,6 +206,12 @@ void glueVar(ostream& glueVars, char *varName, char *varType)
case 'W':
glueVars << "\tint_output[" << pos1 << "] = " << varName << ";\r\n";
break;
case 'D':
glueVars << "\tdint_output[" << pos1 << "] = (IEC_DINT *)" << varName << ";\r\n";
break;
case 'L':
glueVars << "\tlint_input[" << pos1 << "] = (IEC_LINT *)" << varName << ";\r\n";
break;
}
}
else if (varName[2] == 'M')
+8
View File
@@ -69,6 +69,14 @@ extern IEC_BYTE *byte_output[BUFFER_SIZE];
extern IEC_UINT *int_input[BUFFER_SIZE];
extern IEC_UINT *int_output[BUFFER_SIZE];
//32bit I/O
extern IEC_DINT *dint_input[BUFFER_SIZE];
extern IEC_DINT *dint_output[BUFFER_SIZE];
//64bit I/O
extern IEC_LINT *lint_input[BUFFER_SIZE];
extern IEC_LINT *lint_output[BUFFER_SIZE];
//Memory
extern IEC_UINT *int_memory[BUFFER_SIZE];
extern IEC_DINT *dint_memory[BUFFER_SIZE];
+13 -1
View File
@@ -216,6 +216,10 @@ u_int8_t *byte_input_call_back(int a){ return byte_input[a]; }
u_int8_t *byte_output_call_back(int a){ return byte_output[a]; }
u_int16_t *int_input_call_back(int a){ return int_input[a]; }
u_int16_t *int_output_call_back(int a){ return int_output[a]; }
u_int32_t *dint_input_call_back(int a){ return dint_input[a]; }
u_int32_t *dint_output_call_back(int a){ return dint_output[a]; }
u_int64_t *lint_input_call_back(int a){ return lint_input[a]; }
u_int64_t *lint_output_call_back(int a){ return lint_output[a]; }
void logger_callback(unsigned char *msg){ log(msg);}
int main(int argc,char **argv)
@@ -327,6 +331,10 @@ int main(int argc,char **argv)
int8var_call_back byte_output_callback = byte_output_call_back;
int16var_call_back int_input_callback = int_input_call_back;
int16var_call_back int_output_callback = int_output_call_back;
int32var_call_back dint_input_callback = dint_input_call_back;
int32var_call_back dint_output_callback = dint_output_call_back;
int64var_call_back lint_input_callback = lint_input_call_back;
int64var_call_back lint_output_callback = lint_output_call_back;
#endif
updateBuffersIn(); //read input image
@@ -341,7 +349,11 @@ int main(int argc,char **argv)
byte_input_callback,
byte_output_callback,
int_input_callback,
int_output_callback)){
int_output_callback,
dint_input_call_back,
dint_output_call_back,
lint_input_call_back,
lint_output_call_back)){
printf("EtherCAT cyclic failed\n");
break;
}