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

1
Cards/.gitignore vendored
View File

@@ -34,4 +34,5 @@ fp-info-cache
*.csv *.csv
*.step *.step
*.stp *.stp
*.stl
.~lock.* .~lock.*

View File

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

View File

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

View File

@@ -36,21 +36,21 @@
"sdo": { "sdo": {
"2000": { "2000": {
"otype": "VAR", "otype": "VAR",
"name": "Scale", "name": "I2C_devicetype",
"access": "RO", "access": "RW",
"dtype": "REAL32", "dtype": "UNSIGNED8",
"value": "0", "value": "0",
"isSDOitem": true, "isSDOitem": true,
"data": "&Obj.Scale" "data": "&Obj.I2C_devicetype"
}, },
"2001": { "2001": {
"otype": "VAR", "otype": "VAR",
"name": "Offset", "name": "I2C_address",
"access": "RO", "access": "RW",
"dtype": "REAL32", "dtype": "UNSIGNED8",
"value": "0", "value": "0",
"isSDOitem": true, "isSDOitem": true,
"data": "&Obj.Offset" "data": "&Obj.I2C_address"
}, },
"A": { "A": {
"otype": "RECORD", "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_02[] = "PDO Mapping";
static const char acName1C13_03[] = "PDO Mapping"; static const char acName1C13_03[] = "PDO Mapping";
static const char acName1C13_04[] = "PDO Mapping"; static const char acName1C13_04[] = "PDO Mapping";
static const char acName2000[] = "Scale"; static const char acName2000[] = "I2C_devicetype";
static const char acName2001[] = "Offset"; static const char acName2001[] = "I2C_address";
static const char acName6000[] = "Input12"; static const char acName6000[] = "Input12";
static const char acName6001[] = "RawData"; static const char acName6001[] = "RawData";
static const char acName6002[] = "CalculatedVoltage"; static const char acName6002[] = "CalculatedVoltage";
@@ -145,11 +145,11 @@ const _objd SDO1C13[] =
}; };
const _objd SDO2000[] = 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[] = 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[] = const _objd SDO6000[] =
{ {

View File

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

View File

@@ -18,7 +18,7 @@ debug_build_flags = -O0 -g -ggdb
monitor_port = COM19 monitor_port = COM19
monitor_filters = send_on_enter, time, colorize, log2file monitor_filters = send_on_enter, time, colorize, log2file
monitor_speed = 115200 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 = lib_deps =
SPI SPI
pilotak/MCP3X21@^1.0.1 pilotak/MCP3X21@^1.0.1

View File

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

View File

@@ -469,7 +469,7 @@
"plot": "Gerbers/", "plot": "Gerbers/",
"pos_files": "", "pos_files": "",
"specctra_dsn": "THCIC.dsn", "specctra_dsn": "THCIC.dsn",
"step": "", "step": "THTIC2.step",
"svg": "", "svg": "",
"vrml": "" "vrml": ""
}, },