Seems RW access now works in esi file (but not in eeprom, does not genrate that info) = tested

This commit is contained in:
Hakan Bastedt
2025-02-20 11:09:42 +01:00
parent 13463f269f
commit 72ec3e38a0
9 changed files with 35 additions and 44 deletions

View File

@@ -108,8 +108,8 @@
"PLATFORMIO=60117",
"STM32F407xx",
"STM32F4",
"NO_ECAT",
"ADS1xxx",
"ECAT",
"ADC_MCP3221",
"STM32F4xx",
"ARDUINO=10808",
"ARDUINO_ARCH_STM32",

View File

@@ -360,11 +360,11 @@
<BitSize>16</BitSize>
</DataType>
<DataType>
<Name>REAL</Name>
<Name>DINT</Name>
<BitSize>32</BitSize>
</DataType>
<DataType>
<Name>DINT</Name>
<Name>REAL</Name>
<BitSize>32</BitSize>
</DataType>
</DataTypes>
@@ -457,7 +457,6 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
@@ -480,7 +479,6 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
@@ -503,7 +501,6 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
@@ -526,7 +523,6 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
@@ -549,7 +545,6 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
@@ -572,7 +567,6 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
@@ -595,7 +589,6 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
@@ -618,7 +611,6 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
@@ -659,7 +651,6 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
@@ -694,7 +685,6 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
@@ -735,31 +725,30 @@
</SubItem>
</Info>
<Flags>
<Access>ro</Access>
</Flags>
</Object>
<Object>
<Index>#x2000</Index>
<Name>Scale</Name>
<Type>REAL</Type>
<BitSize>32</BitSize>
<Name>I2C_devicetype</Name>
<Type>USINT</Type>
<BitSize>8</BitSize>
<Info>
<DefaultValue>0</DefaultValue>
</Info>
<Flags>
<Access>ro</Access>
<Access>rw</Access>
</Flags>
</Object>
<Object>
<Index>#x2001</Index>
<Name>Offset</Name>
<Type>REAL</Type>
<BitSize>32</BitSize>
<Name>I2C_address</Name>
<Type>USINT</Type>
<BitSize>8</BitSize>
<Info>
<DefaultValue>0</DefaultValue>
</Info>
<Flags>
<Access>ro</Access>
<Access>rw</Access>
</Flags>
</Object>
<Object>

View File

@@ -36,21 +36,21 @@
"sdo": {
"2000": {
"otype": "VAR",
"name": "Scale",
"access": "RO",
"dtype": "REAL32",
"name": "I2C_devicetype",
"access": "RW",
"dtype": "UNSIGNED8",
"value": "0",
"isSDOitem": true,
"data": "&Obj.Scale"
"data": "&Obj.I2C_devicetype"
},
"2001": {
"otype": "VAR",
"name": "Offset",
"access": "RO",
"dtype": "REAL32",
"name": "I2C_address",
"access": "RW",
"dtype": "UNSIGNED8",
"value": "0",
"isSDOitem": true,
"data": "&Obj.Offset"
"data": "&Obj.I2C_address"
},
"A": {
"otype": "RECORD",

View File

@@ -51,8 +51,8 @@ static const char acName1C13_01[] = "PDO Mapping";
static const char acName1C13_02[] = "PDO Mapping";
static const char acName1C13_03[] = "PDO Mapping";
static const char acName1C13_04[] = "PDO Mapping";
static const char acName2000[] = "Scale";
static const char acName2001[] = "Offset";
static const char acName2000[] = "I2C_devicetype";
static const char acName2001[] = "I2C_address";
static const char acName6000[] = "Input12";
static const char acName6001[] = "RawData";
static const char acName6002[] = "CalculatedVoltage";
@@ -145,11 +145,11 @@ const _objd SDO1C13[] =
};
const _objd SDO2000[] =
{
{0x0, DTYPE_REAL32, 32, ATYPE_RO, acName2000, 0x00000000, &Obj.Scale},
{0x0, DTYPE_UNSIGNED8, 8, ATYPE_RW, acName2000, 0, &Obj.I2C_devicetype},
};
const _objd SDO2001[] =
{
{0x0, DTYPE_REAL32, 32, ATYPE_RO, acName2001, 0x00000000, &Obj.Offset},
{0x0, DTYPE_UNSIGNED8, 8, ATYPE_RW, acName2001, 0, &Obj.I2C_address},
};
const _objd SDO6000[] =
{

View File

@@ -26,8 +26,8 @@ typedef struct
/* Parameters */
float Scale;
float Offset;
uint8_t I2C_devicetype;
uint8_t I2C_address;
} _Objects;
extern _Objects Obj;

View File

@@ -18,7 +18,7 @@ debug_build_flags = -O0 -g -ggdb
monitor_port = COM19
monitor_filters = send_on_enter, time, colorize, log2file
monitor_speed = 115200
build_flags = -Wl,--no-warn-rwx-segment -DNO_ECAT -DADS1xxx
build_flags = -Wl,--no-warn-rwx-segment -DECAT -DADC_MCP3221
lib_deps =
SPI
pilotak/MCP3X21@^1.0.1

View File

@@ -22,10 +22,10 @@ uint32_t I2C_restarts = 0;
#include "Wire.h"
TwoWire Wire2(PB11, PB10);
#ifdef MCP3221
#ifdef ADC_MCP3221
#include "MyMCP3221.h"
MyMCP3221 mcp3221_0(0x48, &Wire2);
MyMCP3221 mcp3221_7(0x4f, &Wire2);
//MyMCP3221 mcp3221_7(0x4f, &Wire2);
#endif
#ifdef ADS1xxx
#include "ADS1X15.h"
@@ -64,7 +64,7 @@ void cb_get_inputs(void) // Set Master inputs, slave outputs, last operation
float scale = Obj.VoltageScale;
if (scale == 0.0)
scale = 1.0;
#ifdef MCP3221
#ifdef ADC_MCP3221
int data0 = mcp3221_0.getData();
int stat = mcp3221_0.ping();
#endif
@@ -93,6 +93,7 @@ void cb_get_inputs(void) // Set Master inputs, slave outputs, last operation
#endif
}
Obj.Status = I2C_restarts + (stat << 28); // Put status as bits 28-31, the lower are number of restarts (restart attempts)
Obj.Status = Obj.I2C_devicetype + Obj.I2C_address;
}
void ESC_interrupt_enable(uint32_t mask);
@@ -153,7 +154,7 @@ void setup(void)
ecat_slv_init(&config);
#endif
#if 1 // Uncomment for commissioning tests
#if 0 // Uncomment for commissioning tests
digitalWrite(outputPin[0], HIGH); // All four output leds should go high
digitalWrite(outputPin[1], HIGH);
digitalWrite(outputPin[2], HIGH);
@@ -173,7 +174,7 @@ void setup(void)
}
if (!nDevices)
Serial1.printf("No devices\n");
#ifdef MCP3221
#ifdef ADC_MCP3221
Serial1.printf("I2C status=%d rawdata=%d ", mcp3221_0.ping(), mcp3221_0.getData());
#endif
#ifdef ADS1xxx