fix(UML-1582): Очередные багфиксы
This commit is contained in:
parent
b1f1cadcfc
commit
080b4f25c7
@ -99,11 +99,17 @@ void EthEcatPdoFMMU::process() {
|
|||||||
std::vector<uint8_t> process_data(std::min(logical_full_length_write, logical_full_length_read));
|
std::vector<uint8_t> process_data(std::min(logical_full_length_write, logical_full_length_read));
|
||||||
free_rtos::Timer& ecat_timer = ecat_buffer_.get_ecat().get_ecat_timer();
|
free_rtos::Timer& ecat_timer = ecat_buffer_.get_ecat().get_ecat_timer();
|
||||||
|
|
||||||
|
ecat_timer.Wait();
|
||||||
|
|
||||||
|
read(0, process_data);
|
||||||
|
|
||||||
while(1) {
|
while(1) {
|
||||||
ecat_timer.Wait();
|
ecat_timer.Wait();
|
||||||
//DebugP_log("Tick !\r\n");
|
//DebugP_log("Tick !\r\n");
|
||||||
|
|
||||||
read(0, process_data);
|
read_write(0, 0, process_data);
|
||||||
|
|
||||||
|
//read(0, process_data);
|
||||||
/*
|
/*
|
||||||
for(uint8_t& byte : process_data) {
|
for(uint8_t& byte : process_data) {
|
||||||
DebugP_log("0x%01x", byte);
|
DebugP_log("0x%01x", byte);
|
||||||
@ -113,7 +119,7 @@ void EthEcatPdoFMMU::process() {
|
|||||||
process_read_queue(process_data.data(), process_data.size());
|
process_read_queue(process_data.data(), process_data.size());
|
||||||
process_write_queue(process_data.data(), process_data.size());
|
process_write_queue(process_data.data(), process_data.size());
|
||||||
|
|
||||||
write(0, process_data);
|
//write(0, process_data);
|
||||||
|
|
||||||
pdo_counter_++;
|
pdo_counter_++;
|
||||||
}
|
}
|
||||||
|
@ -168,10 +168,10 @@ private:
|
|||||||
address::Logical logical_write = fmmu_global_properties.logical_start_address + offset_write;
|
address::Logical logical_write = fmmu_global_properties.logical_start_address + offset_write;
|
||||||
TDatagramWrite datagram_write{ {{logical_write}}, data... };
|
TDatagramWrite datagram_write{ {{logical_write}}, data... };
|
||||||
|
|
||||||
datagram_read + datagram_write;
|
auto queue = datagram_read + datagram_write;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
telegram.transfer(datagram_read);
|
telegram.transfer(queue);
|
||||||
} while(datagram_read.get_all_wkc() < 0x0001);
|
} while(datagram_read.get_all_wkc() < 0x0001);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ void EthEcat::Init(TEthMacPorts port_id) {
|
|||||||
.clock_src_mux_addr = 0x430081B0u, // sysconfig
|
.clock_src_mux_addr = 0x430081B0u, // sysconfig
|
||||||
.int_num = 152u, // sysconfig
|
.int_num = 152u, // sysconfig
|
||||||
.int_priority = 4, // sysconfig
|
.int_priority = 4, // sysconfig
|
||||||
.period_us = 1000 ///400 microsec
|
.period_us = 125 /// microsec
|
||||||
};
|
};
|
||||||
|
|
||||||
ecat_timer_.Init(ecat_tmr_sett);
|
ecat_timer_.Init(ecat_tmr_sett);
|
||||||
|
@ -33,8 +33,14 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
custom_tuple<DataTypes&...> get(uint32_t timeout_ticks = SystemP_WAIT_FOREVER) {
|
custom_tuple<DataTypes&...> get(uint32_t timeout_ticks = SystemP_WAIT_FOREVER) {
|
||||||
|
int32_t sts;
|
||||||
|
|
||||||
ready_ = false;
|
ready_ = false;
|
||||||
sem_.pend(timeout_ticks);
|
sts = sem_.pend(timeout_ticks);
|
||||||
|
|
||||||
|
if(sts == SystemP_SUCCESS) {
|
||||||
|
ready_ = true;
|
||||||
|
}
|
||||||
|
|
||||||
return data_tuple_;
|
return data_tuple_;
|
||||||
}
|
}
|
||||||
@ -44,7 +50,6 @@ public:
|
|||||||
|
|
||||||
for_each(data_tuple_, functor);
|
for_each(data_tuple_, functor);
|
||||||
|
|
||||||
ready_ = true;
|
|
||||||
sem_.post();
|
sem_.post();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,7 +58,6 @@ public:
|
|||||||
|
|
||||||
for_each(data_tuple_, functor);
|
for_each(data_tuple_, functor);
|
||||||
|
|
||||||
ready_ = true;
|
|
||||||
sem_.post();
|
sem_.post();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,10 +32,6 @@ public:
|
|||||||
|
|
||||||
virtual ~IEcatDatagram() { };
|
virtual ~IEcatDatagram() { };
|
||||||
|
|
||||||
IEcatDatagram* get_next() {
|
|
||||||
return static_cast<IEcatDatagram*>(get_next());
|
|
||||||
}
|
|
||||||
|
|
||||||
queue::Queue<IEcatDatagram> operator+(IEcatDatagram &next) {
|
queue::Queue<IEcatDatagram> operator+(IEcatDatagram &next) {
|
||||||
//DebugP_log((char*)"Coupling first pair\r\n");
|
//DebugP_log((char*)"Coupling first pair\r\n");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user