Browse Source

update

master
zhaohe 2 years ago
parent
commit
c23c5e39b3
  1. 9
      README.md
  2. 185
      app/MDK-ARM/app.uvguix.h_zha
  3. 90
      app/MDK-ARM/app.uvoptx
  4. 2
      dep/libiflytop_micro
  5. 2
      dep/libtrinamic
  6. 4
      src/board/device_io_service.cpp
  7. 7
      src/board/device_io_service.hpp
  8. 66
      src/board/hardware.cpp
  9. 15
      src/board/hardware.hpp
  10. 24
      src/lncubator_rotating_control_service.cpp
  11. 62
      src/lncubator_rotating_control_service.hpp
  12. 15
      src/umain.cpp

9
README.md

@ -14,4 +14,13 @@ STM32F407VET6示例工程
3. 控制tmc4361使得电机转起来
4. 配置闭环寄存器使得电机闭环转起来
5. 实现解析TMCL指令对接TMC-IDE
```
# 调试记录
```
TMC4361芯片异常
编码器的供电电压和TMC的芯片电压不匹配时会出现TMC4361芯片无法工作的问题。
```

185
app/MDK-ARM/app.uvguix.h_zha
File diff suppressed because it is too large
View File

90
app/MDK-ARM/app.uvoptx

@ -103,7 +103,7 @@
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>4</nTsel>
<nTsel>3</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
@ -114,13 +114,13 @@
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon>Segger\JL2CM3.dll</pMon>
<pMon>BIN\CMSIS_AGDI.dll</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>CMSIS_AGDI</Key>
<Name>-X"Any" -UAny -O206 -S0 -C0 -P00000000 -N00("") -D00(00000000) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F407VETx$CMSIS\Flash\STM32F4xx_512.FLM)</Name>
<Name>-X"Any" -UAny -O206 -S10 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F407VETx$CMSIS\Flash\STM32F4xx_512.FLM)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
@ -140,7 +140,7 @@
<SetRegEntry>
<Number>0</Number>
<Key>DLGUARM</Key>
<Name>d</Name>
<Name></Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
@ -162,55 +162,55 @@
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>70</LineNumber>
<LineNumber>51</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134234636</Address>
<Address>134240374</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\..\src\umain.cpp</Filename>
<Filename>..\..\dep\libtrinamic\src\ic\tmc4361A.cpp</Filename>
<ExecCommand></ExecCommand>
<Expression>\\app\../../src/umain.cpp\70</Expression>
<Expression>\\app\../../dep/libtrinamic/src/ic/tmc4361A.cpp\51</Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>185</LineNumber>
<LineNumber>39</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<Address>134237432</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c</Filename>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\..\src\umain.cpp</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
<Expression>\\app\../../src/umain.cpp\39</Expression>
</Bp>
<Bp>
<Number>2</Number>
<Type>0</Type>
<LineNumber>197</LineNumber>
<LineNumber>142</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<Address>134238226</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c</Filename>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\..\src\board\device_io_service.cpp</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
<Expression>\\app\../../src/board/device_io_service.cpp\142</Expression>
</Bp>
<Bp>
<Number>3</Number>
<Type>0</Type>
<LineNumber>198</LineNumber>
<LineNumber>30</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
@ -219,14 +219,14 @@
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c</Filename>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>4</Number>
<Type>0</Type>
<LineNumber>231</LineNumber>
<LineNumber>57</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
@ -235,14 +235,14 @@
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c</Filename>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>5</Number>
<Type>0</Type>
<LineNumber>257</LineNumber>
<LineNumber>77</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
@ -251,14 +251,14 @@
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c</Filename>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>6</Number>
<Type>0</Type>
<LineNumber>260</LineNumber>
<LineNumber>84</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
@ -267,14 +267,14 @@
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c</Filename>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>7</Number>
<Type>0</Type>
<LineNumber>30</LineNumber>
<LineNumber>185</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
@ -283,14 +283,14 @@
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\src\ic\tmc4361A.cpp</Filename>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>8</Number>
<Type>0</Type>
<LineNumber>51</LineNumber>
<LineNumber>197</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
@ -299,14 +299,14 @@
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\src\ic\tmc4361A.cpp</Filename>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>9</Number>
<Type>0</Type>
<LineNumber>57</LineNumber>
<LineNumber>198</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
@ -315,14 +315,14 @@
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\src\ic\tmc4361A.cpp</Filename>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>10</Number>
<Type>0</Type>
<LineNumber>77</LineNumber>
<LineNumber>231</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
@ -331,14 +331,14 @@
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\src\ic\tmc4361A.cpp</Filename>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>11</Number>
<Type>0</Type>
<LineNumber>84</LineNumber>
<LineNumber>257</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
@ -347,7 +347,23 @@
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\..\dep\libtrinamic\src\ic\tmc4361A.cpp</Filename>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>12</Number>
<Type>0</Type>
<LineNumber>260</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
@ -399,7 +415,7 @@
<EnableFlashSeq>0</EnableFlashSeq>
<EnableLog>0</EnableLog>
<Protocol>2</Protocol>
<DbgClock>1000000</DbgClock>
<DbgClock>2000000</DbgClock>
</DebugDescription>
</TargetOption>
</Target>

2
dep/libiflytop_micro

@ -1 +1 @@
Subproject commit 645e10e79f235ef9a05d3026091d692b18f6b5f8
Subproject commit bb1b993c2015abe36525a7876b17f076665433b4

2
dep/libtrinamic

@ -1 +1 @@
Subproject commit eb0ae9632bd558e6f1727437fa58715200c79693
Subproject commit cab741ca3a6c542ebf25e6ef3a1d46766d035f55

4
src/board/device_io_service.cpp

@ -11,7 +11,9 @@ int fputc(int ch, FILE *stream) {
}
using namespace iflytop;
namespace iflytop {
namespace iflytop {}
void DeviceIoService::debug_light_init() {
Stm32HalUtils::gpioInit(DEBUG_LIGHT_PORT, DEBUG_LIGHT_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET);
}
void DeviceIoService::fanInit(int freq) {

7
src/board/device_io_service.hpp

@ -24,6 +24,13 @@ class DeviceIoService : public IflytopMicroOS {
public:
DeviceIoService(/* args */) {}
~DeviceIoService() {}
/*******************************************************************************
* *
*******************************************************************************/
void debug_light_init();
/*******************************************************************************
* *
*******************************************************************************/

66
src/board/hardware.cpp

@ -2,64 +2,93 @@
#include "i2c.h"
using namespace iflytop;
#define TAG "hardware"
#define TAG "hardware"
#define ENABLE_CAN 1
int32_t Hardware::port_tmc4361_get_version(uint8_t channel) {
int value;
uint8_t data[5];
data[0] = 0x7f;
m_deviceIoService.tmc_motor_spi_write_and_read(channel, &data[0], 5);
value = ((uint32_t)data[1] << 24) | ((uint32_t)data[2] << 16) | (data[3] << 8) | data[4];
return value;
}
void Hardware::hardwareinit() {
m_os = &m_deviceIoService;
m_canOnRxDataFlag = false;
m_os = &m_deviceIoService;
/*******************************************************************************
* CANSLAVEService初始化 *
* *
*******************************************************************************/
m_deviceIoService.debug_light_init();
/*******************************************************************************
* CANSLAVEService初始化 *
*******************************************************************************/
#if ENABLE_CAN
IflytopCanSlave::iflytop_can_slave_config_t *config = canSlaveService.createDefaultConfig(DEVICE_ID);
canSlaveService.initialize(m_os, config);
canSlaveService.activateRxIT();
#endif
/*******************************************************************************
* *
*******************************************************************************/
#if 0
m_deviceIoService.peltier_init();
#endif
/*******************************************************************************
* *
*******************************************************************************/
#if 0
tmp117[0].initializate(&hi2c1, TMP117::ID0);
tmp117[1].initializate(&hi2c1, TMP117::ID1);
tmp117[2].initializate(&hi2c1, TMP117::ID2);
tmp117[3].initializate(&hi2c1, TMP117::ID3);
#endif
/*******************************************************************************
* *
*******************************************************************************/
#if 1
m_deviceIoService.tmc_init();
m_deviceIoService.tmc_extern_clk_enable();
// 4361初始化
TMC4361AImpl::TMC4361AConfig_t *tmc4361aconfig = TMC4361AImpl::createDeafultTMC4361AConfig();
tmc4361aconfig->base_config.fs_per_rev = 200;
tmc4361aconfig->encoder_config.diff_enc_in_disable = false;
tmc4361aconfig->encoder_config.enc_in_res = 4000;
tmc4361aconfig->close_loop_config.enable_closed_loop = true;
tmc4361aconfig->close_loop_config.enable_closed_loop = false;
tmc4361motor1.initialize(&m_deviceIoService, MOTOR_1_TMC4361A_CHANNEL, TMC4361A::IC_TMC2160, tmc4361aconfig);
tmc4361motor1.setMaximumAcceleration(300000);
tmc4361motor1.setMaximumDeceleration(300000);
// 2160初始化
tmc2160motor1.setMaximumCurrent(3);
tmc2160motor1.initialize(&m_deviceIoService, &tmc4361motor1, MOTOR_1_TMC2160_CHANNEL);
tmc2160motor1.setMaximumCurrent(3);
HAL_Delay(100);
// 使能电机
tmc4361motor1.enableIC(true);
tmc2160motor1.enableIC(true);
tmc4361motor1.enableIC(true);
/**
* @brief Version寄存器来判断芯片是否正常
*/
int32_t ic4361Version = tmc4361motor1.readICVersion();
int32_t ic2160Version = tmc2160motor1.readICVersion();
// 期望 4361Version:2 ic2160Version:30
ZLOGI(TAG, "TMC4361Version:%x TMC2160VERSION:%x", ic4361Version, ic2160Version);
if (ic4361Version != 2 || ic2160Version != 30) {
ZLOGE(TAG, "TMC4361 or TMC2160 is not normal");
}
// 期望 4361Version:2 ic2160Version:30
/*******************************************************************************
* *
*******************************************************************************/
tmc4361motor1.rotate(300000);
#endif
/*******************************************************************************
* *
*******************************************************************************/
#if 0
m_deviceIoService.fanInit(1000);
/**
* @brief
@ -71,22 +100,27 @@ void Hardware::hardwareinit() {
* FAN4_FB_INT PC7
* FAN5_FB_INT PC10
*/
m_fanStateMonitor[0].initialize(m_os, GPIOC, GPIO_PIN_1, m_deviceIoService.fanGetPowerState(0));
m_fanStateMonitor[1].initialize(m_os, GPIOC, GPIO_PIN_4, m_deviceIoService.fanGetPowerState(1));
m_fanStateMonitor[2].initialize(m_os, GPIOC, GPIO_PIN_5, m_deviceIoService.fanGetPowerState(2));
m_fanStateMonitor[3].initialize(m_os, GPIOC, GPIO_PIN_6, m_deviceIoService.fanGetPowerState(3));
m_fanStateMonitor[4].initialize(m_os, GPIOC, GPIO_PIN_7, m_deviceIoService.fanGetPowerState(4));
m_fanStateMonitor[5].initialize(m_os, GPIOC, GPIO_PIN_10, m_deviceIoService.fanGetPowerState(5));
#endif
}
void Hardware::periodicJob() {
#if 0
/**
* @brief
*/
for (size_t i = 0; i < ZARRAY_SIZE(m_fanStateMonitor); i++) {
m_fanStateMonitor[i].periodicJob();
}
#endif
do_debug_light_state();
#if ENABLE_CAN
// testCanSlaveTxAndRx();
#endif
}
void Hardware::do_debug_light_state() {
static uint32_t lastprocess = 0;
@ -116,7 +150,7 @@ void Hardware::testTmp117() {
/**
* @brief CAN的发送和接收
*/
void Hardware::testCanSlaveTxAndRx(bool canOnRxDataFlag) {
void Hardware::testCanSlaveTxAndRx() {
{
static uint32_t lastcall;
static uint8_t tx[8] = {1, 2, 3, 4, 5, 6, 7, 8};
@ -134,8 +168,8 @@ void Hardware::testCanSlaveTxAndRx(bool canOnRxDataFlag) {
/**
* @brief CAN消息
*/
if (canOnRxDataFlag) {
canOnRxDataFlag = false;
if (m_canOnRxDataFlag) {
m_canOnRxDataFlag = false;
static CAN_RxHeaderTypeDef packetHeader;
static uint8_t packetData[8];
while (canSlaveService.getRxMessage(&packetHeader, packetData)) {
@ -143,6 +177,6 @@ void Hardware::testCanSlaveTxAndRx(bool canOnRxDataFlag) {
ZLOGI(TAG, "\tid:%x len:%d", packetHeader.StdId, packetHeader.DLC);
ZLOGI_HEX(TAG, packetData, packetHeader.DLC);
}
canSlaveService.activateRxIT();
// canSlaveService.activateRxIT();
}
}

15
src/board/hardware.hpp

@ -10,26 +10,37 @@ namespace iflytop {
class Hardware {
private:
/* data */
public:
TMC4361AImpl tmc4361motor1;
TMC2160Impl tmc2160motor1;
TMP117 tmp117[4];
FanStateMonitor m_fanStateMonitor[6];
IflytopCanSlave canSlaveService;
IflytopMicroOS* m_os;
IflytopMicroOS *m_os;
DeviceIoService m_deviceIoService;
bool m_canOnRxDataFlag;
public:
ZSLOT0(Hardware, onCanRxData) {
m_canOnRxDataFlag = true;
canSlaveService.deactivateRxIT();
}
Hardware(/* args */){};
~Hardware(){};
void hardwareinit();
void periodicJob();
int32_t port_tmc4361_get_version(uint8_t channel);
/*******************************************************************************
* *
*******************************************************************************/
void testTmp117();
void testCanSlaveTxAndRx(bool canOnRxDataFlag);
void testCanSlaveTxAndRx();
void do_debug_light_state();
};

24
src/lncubator_rotating_control_service.cpp

@ -0,0 +1,24 @@
#include "lncubator_rotating_control_service.hpp"
using namespace iflytop;
LncubatorRotatingControlService::LncubatorRotatingControlService() {}
LncubatorRotatingControlService::~LncubatorRotatingControlService() {}
void LncubatorRotatingControlService::initialize(Hardware* hardware) { //
m_hardware = hardware;
m_motor = &m_hardware->tmc4361motor1;
m_os = &m_hardware->m_deviceIoService;
/**
* @brief
*/
m_motor->setMotorInPositionMode();
}
void LncubatorRotatingControlService::setVelocity(uint32_t velocityMax) { m_maxVelocity = velocityMax; }
void LncubatorRotatingControlService::rotate(uint32_t count) {
m_motor->moveBy(count, m_maxVelocity);
}

62
src/lncubator_rotating_control_service.hpp

@ -0,0 +1,62 @@
#pragma once
#include "board\hardware.hpp"
namespace iflytop {
/**
* @brief
*
*
* 1. X对其孵育盘出口
* 2. X对其孵育盘入口
* 3.
* 4. x度
* 5. x度
* 6. ([0]:[1]);
* 7.
* 8.
*
*/
#define LNCUBATOR_MAX_POSITION_COUNT 20
#define ZEROOFFSETCORRECTION 0
class LncubatorRotatingControlService {
public:
typedef enum {
REFPOINT_TYPE_OUTLET = 0, // 出口
REFPOINT_TYPE_INLET, // 入口
REFPOINT_TYPE_ZERO, // 零点
} refpoint_t;
private:
/* data */
Hardware* m_hardware;
IflytopMicroOS* m_os;
TMC4361AImpl* m_motor;
// 零点位置
uint32_t m_zeroPosition;
// 便宜修正,第一个仓位中心距离零点的距离
uint32_t m_ZeroOffsetCorrection;
uint32_t m_maxVelocity = 0;
public:
LncubatorRotatingControlService();
~LncubatorRotatingControlService();
void initialize(Hardware* hardware);
void setVelocity(uint32_t velocityMax);
void rotate(uint32_t count);
void moveToZero();
void moveTo(refpoint_t refpoint, uint32_t positionIndex);
/**
* @brief
*
* @param refpoint
* @param positionIndex
*/
void calibrationPosition(refpoint_t refpoint, uint32_t positionIndex);
};
} // namespace iflytop

15
src/umain.cpp

@ -24,27 +24,20 @@ class Main {
LncubatorTemperatureControlService m_lncubatorTemperatureControlService;
Hardware m_hardware;
IflytopCanSlave *canSlaveService;
IflytopMicroOS *os;
// IflytopCanSlave *canSlaveService;
IflytopMicroOS *os;
bool canOnRxDataFlag;
Main() { canOnRxDataFlag = false; }
ZSLOT0(Main, onCanRxData);
void onCanRxData() {
canOnRxDataFlag = true;
canSlaveService->deactivateRxIT();
}
void initialize();
void main(int argc, char const *argv[]);
};
void Main::initialize() {
zsignal_init(zsignal_listener, ZARRAY_SIZE(zsignal_listener));
m_hardware.hardwareinit();
canSlaveService = &m_hardware.canSlaveService;
canSlaveService->onCanRxData.connect(this, &Main::onCanRxData);
canSlaveService->activateRxIT();
m_hardware.hardwareinit();
// canSlaveService = &m_hardware.canSlaveService;
}
void Main::main(int argc, char const *argv[]) {

Loading…
Cancel
Save