587 lines
22 KiB
C
587 lines
22 KiB
C
/*
|
|
* master_slave.c
|
|
*
|
|
* Created on: 13 íîÿá. 2024 ã.
|
|
* Author: Evgeniy_Sokolov
|
|
*/
|
|
|
|
#include <edrk_main.h>
|
|
|
|
#include <params.h>
|
|
#include <params_alg.h>
|
|
#include <params_norma.h>
|
|
#include <params_pwm24.h>
|
|
#include <params_temper_p.h>
|
|
#include <project.h>
|
|
#include "IQmathLib.h"
|
|
#include "mathlib.h"
|
|
#include <optical_bus.h>
|
|
#include "synhro_tools.h"
|
|
#include "master_slave.h"
|
|
|
|
//////////////////////////////////////////////////////////
|
|
|
|
#pragma DATA_SECTION(buf_log_master_slave_status,".slow_vars");
|
|
unsigned int buf_log_master_slave_status[SIZE_LOG_MASTER_SLAVE_STATUS] = {0};
|
|
//AUTO_MASTER_SLAVE_DATA buf2[SIZE_BUF1] = {0};
|
|
//AUTO_MASTER_SLAVE_DATA buf3[SIZE_BUF1] = {0};
|
|
//OPTICAL_BUS_DATA_LOW_CMD buf4[SIZE_BUF1] = {0};
|
|
//OPTICAL_BUS_DATA_LOW_CMD buf5[SIZE_BUF1] = {0};
|
|
|
|
|
|
//////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////
|
|
|
|
void auto_select_master_slave(void)
|
|
{
|
|
static unsigned int count_try_master = 0;
|
|
static unsigned int count_wait_answer_confirm_mode = 0;
|
|
static unsigned int count_wait_slave_try_master = 0;
|
|
unsigned int err_confirm_mode = 0; // îøèáêà ïîäòâåðæäåíèÿ ðåæèìà äðóãèì Ï×
|
|
static unsigned int c_buf_log_master_slave_status = 0, prev_status = 0;
|
|
|
|
|
|
|
|
// logs master_slave_status
|
|
if (edrk.auto_master_slave.status != prev_status)
|
|
{
|
|
c_buf_log_master_slave_status++;
|
|
if (c_buf_log_master_slave_status>=SIZE_LOG_MASTER_SLAVE_STATUS)
|
|
c_buf_log_master_slave_status = 0;
|
|
buf_log_master_slave_status[c_buf_log_master_slave_status] = edrk.auto_master_slave.status;
|
|
}
|
|
prev_status = edrk.auto_master_slave.status;
|
|
//end logs master_slave_status
|
|
|
|
if (edrk.ms.ready2==0 && edrk.errors.e7.bits.AUTO_SET_MASTER==0)
|
|
{
|
|
edrk.auto_master_slave.remoute.all = 0;
|
|
edrk.auto_master_slave.local.all = 0;
|
|
edrk.auto_master_slave.prev_remoute.all = edrk.auto_master_slave.remoute.all;
|
|
edrk.auto_master_slave.prev_local.all = edrk.auto_master_slave.local.all;
|
|
|
|
edrk.auto_master_slave.status = 1;
|
|
|
|
// if (prev_ready!=edrk.ms.ready2)
|
|
// for (c_buf=0;c_buf<SIZE_BUF1;c_buf++)
|
|
// {
|
|
// buf2[c_buf].all = buf3[c_buf].all = buf1[c_buf] = buf4[c_buf].all = buf5[c_buf].all =0;
|
|
// }
|
|
//
|
|
// c_buf = 0;
|
|
//
|
|
// prev_ready = edrk.ms.ready2;
|
|
clear_wait_synhro_optical_bus();
|
|
|
|
|
|
return;
|
|
}
|
|
// else
|
|
// prev_ready = edrk.ms.ready2;
|
|
|
|
|
|
if (edrk.errors.e7.bits.AUTO_SET_MASTER)
|
|
{
|
|
edrk.to_second_pch.bits.MASTER = edrk.auto_master_slave.local.bits.master;
|
|
|
|
edrk.auto_master_slave.local.bits.master = 0;
|
|
edrk.auto_master_slave.local.bits.slave = 0;
|
|
edrk.auto_master_slave.local.bits.try_master = 0;
|
|
edrk.auto_master_slave.local.bits.try_slave = 0;
|
|
edrk.auto_master_slave.local.bits.nothing = 1;
|
|
|
|
|
|
// edrk.auto_master_slave.prev_remoute.all = edrk.auto_master_slave.remoute.all;
|
|
// edrk.auto_master_slave.prev_local.all = edrk.auto_master_slave.local.all;
|
|
|
|
// edrk.auto_master_slave.status = 10;
|
|
|
|
|
|
return;
|
|
}
|
|
|
|
edrk.auto_master_slave.prev_status = edrk.auto_master_slave.status;
|
|
|
|
// c_buf++;
|
|
// if (c_buf>=SIZE_BUF1)
|
|
// c_buf = 0;
|
|
//
|
|
// buf1[c_buf] = edrk.auto_master_slave.status;
|
|
// buf2[c_buf].all = edrk.auto_master_slave.local.all;
|
|
// buf3[c_buf].all = edrk.auto_master_slave.remoute.all;
|
|
// buf4[c_buf].all = optical_read_data.data.cmd.all;
|
|
// buf5[c_buf].all = optical_write_data.data.cmd.all;
|
|
//
|
|
|
|
// ñáðîñèì ñ÷åò÷èê âðåìåíè ïåðåõîäà íà ìàñòåð
|
|
if (edrk.auto_master_slave.local.bits.try_master==0 ||
|
|
(edrk.auto_master_slave.prev_local.bits.try_master != edrk.auto_master_slave.local.bits.try_master && edrk.auto_master_slave.local.bits.try_master==1))
|
|
count_try_master = 0;
|
|
|
|
// åñëè øèíà OPTICAL_BUS ñäîõëà, âûõîäèì
|
|
if (edrk.errors.e7.bits.WRITE_OPTBUS==1 || edrk.errors.e7.bits.READ_OPTBUS==1 ||
|
|
edrk.warnings.e7.bits.WRITE_OPTBUS==1 || edrk.warnings.e7.bits.READ_OPTBUS==1)
|
|
{
|
|
|
|
if (edrk.errors.e7.bits.WRITE_OPTBUS==1 || edrk.errors.e7.bits.READ_OPTBUS==1)
|
|
{
|
|
// øèíà íå ðàáîòàåò, è òîò Ï× âêëþ÷åí
|
|
// çíà÷èò ÷òî-òî ñëó÷èëîñü - âûêëþ÷àåìñÿ
|
|
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
|
|
edrk.auto_master_slave.remoute.bits.nothing = 1;
|
|
edrk.auto_master_slave.remoute.bits.master = 0;
|
|
edrk.auto_master_slave.remoute.bits.slave = 0;
|
|
edrk.auto_master_slave.remoute.bits.try_master = 0;
|
|
edrk.auto_master_slave.remoute.bits.try_slave = 0;
|
|
|
|
|
|
edrk.auto_master_slave.local.bits.master = 0;
|
|
edrk.auto_master_slave.local.bits.slave = 0;
|
|
edrk.auto_master_slave.local.bits.try_master = 0;
|
|
edrk.auto_master_slave.local.bits.try_slave = 0;
|
|
edrk.auto_master_slave.local.bits.nothing = 1;
|
|
|
|
edrk.auto_master_slave.status = 10;
|
|
}
|
|
else
|
|
{
|
|
// øèíà íå ðàáîòàåò, è òîò Ï× âûêëþ÷åí
|
|
// çíà÷èò ìû ñðàçó ìàñòåð
|
|
edrk.warnings.e7.bits.AUTO_SET_MASTER = 1;
|
|
|
|
edrk.auto_master_slave.remoute.bits.nothing = 1;
|
|
edrk.auto_master_slave.remoute.bits.master = 0;
|
|
edrk.auto_master_slave.remoute.bits.slave = 0;
|
|
edrk.auto_master_slave.remoute.bits.try_master = 0;
|
|
edrk.auto_master_slave.remoute.bits.try_slave = 0;
|
|
|
|
|
|
|
|
edrk.auto_master_slave.local.bits.master = 1;
|
|
edrk.auto_master_slave.local.bits.slave = 0;
|
|
edrk.auto_master_slave.local.bits.try_master = 0;
|
|
edrk.auto_master_slave.local.bits.try_slave = 0;
|
|
edrk.auto_master_slave.local.bits.nothing = 1;
|
|
|
|
edrk.auto_master_slave.status = 2;
|
|
}
|
|
|
|
edrk.auto_master_slave.remoute.bits.sync_line_detect = 0;
|
|
edrk.auto_master_slave.remoute.bits.bus_off = 1;
|
|
edrk.auto_master_slave.remoute.bits.sync1_2 = 0;
|
|
|
|
}
|
|
else
|
|
{
|
|
edrk.warnings.e7.bits.AUTO_SET_MASTER = 0;
|
|
|
|
edrk.auto_master_slave.remoute.bits.bus_off = 0;
|
|
|
|
// ñèíõðîíèçèðóåì ñâîè ïðîãðàììû ÷åðåç OPTICAL_BUS
|
|
|
|
if (wait_synhro_optical_bus()==1)
|
|
{
|
|
|
|
edrk.auto_master_slave.status = 50; // wait synhro
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
|
|
edrk.auto_master_slave.remoute.bits.master = optical_read_data.data.cmd.bit.master;
|
|
edrk.auto_master_slave.remoute.bits.slave = optical_read_data.data.cmd.bit.slave;
|
|
edrk.auto_master_slave.remoute.bits.try_master = optical_read_data.data.cmd.bit.maybe_master;
|
|
edrk.auto_master_slave.remoute.bits.sync1_2 = optical_read_data.data.cmd.bit.sync_1_2;
|
|
edrk.auto_master_slave.remoute.bits.sync_line_detect = optical_read_data.data.cmd.bit.sync_line_detect;
|
|
edrk.auto_master_slave.remoute.bits.tick = optical_read_data.data.cmd.bit.wdog_tick;
|
|
|
|
if (optical_read_data.data.cmd.bit.master==0 && optical_read_data.data.cmd.bit.slave==0)
|
|
edrk.auto_master_slave.remoute.bits.nothing = 1;
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////
|
|
// 1
|
|
|
|
// òîò Ï× óæå ìàñòåð
|
|
if (edrk.auto_master_slave.remoute.bits.master)
|
|
{
|
|
|
|
// è ýòîò Ï× ìàñòåð ïî÷åìó-òî?
|
|
if (edrk.auto_master_slave.local.bits.master)
|
|
{
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
edrk.auto_master_slave.status = 3;
|
|
}
|
|
else
|
|
{
|
|
// ýòîò Ï× åùå íå îïðåäåëèëñÿ, ïîýòîìó ïåðåõîä íà slave
|
|
if (edrk.auto_master_slave.local.bits.master==0 && edrk.auto_master_slave.local.bits.slave==0)
|
|
{
|
|
// edrk.auto_master_slave.local.bits.try_slave = 1;
|
|
// ñòàëè slave
|
|
edrk.auto_master_slave.local.bits.slave = 1;
|
|
// ñíÿëè ñâîé çàïðîñ íà ìàñòåðà åñëè îí áûë
|
|
edrk.auto_master_slave.local.bits.try_master = 0;
|
|
edrk.auto_master_slave.status = 4;
|
|
}
|
|
else
|
|
{
|
|
edrk.auto_master_slave.status = 21;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
//////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////
|
|
// 2
|
|
// òîò Ï× óæå slave
|
|
|
|
if (edrk.auto_master_slave.remoute.bits.slave)
|
|
{
|
|
|
|
// è ýòîò Ï× slave ïî÷åìó-òî?
|
|
if (edrk.auto_master_slave.local.bits.slave)
|
|
{
|
|
|
|
// áûë ïåðåõîä èç ìàñòåð â slave
|
|
if (edrk.auto_master_slave.prev_remoute.bits.slave==0)
|
|
{
|
|
if (edrk.Go)
|
|
{
|
|
// çàïóùåí ØÈÌ
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
edrk.auto_master_slave.status = 5;
|
|
}
|
|
else
|
|
{
|
|
// ïðîáóåì ïåðåõâàòèòü master
|
|
edrk.auto_master_slave.local.bits.try_master = 1;
|
|
edrk.auto_master_slave.status = 6;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
edrk.auto_master_slave.status = 7;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
// ýòîò Ï× åùå íå îïðåäåëèëñÿ, ïîýòîìó çàïðàøèâàåò íà master
|
|
if (edrk.auto_master_slave.local.bits.master==0 && edrk.auto_master_slave.local.bits.slave==0 && edrk.auto_master_slave.local.bits.try_master==0)
|
|
{
|
|
if (edrk.flag_second_PCH==0)
|
|
edrk.auto_master_slave.local.bits.try_master = 1;
|
|
if (edrk.flag_second_PCH==1)
|
|
edrk.auto_master_slave.local.bits.try_master = 1;
|
|
|
|
edrk.auto_master_slave.status = 8;
|
|
// edrk.auto_master_slave.local.bits.slave = 1;
|
|
}
|
|
else
|
|
// ýòîò Ï× óæå â çàïðîñå íà ìàñòåð, à òîò Ï× ïîäòâåðäèë â slave ÷òî îí íå ïðîòèâ.
|
|
if (edrk.auto_master_slave.local.bits.master==0 && edrk.auto_master_slave.local.bits.slave==0 && edrk.auto_master_slave.local.bits.try_master==1)
|
|
{
|
|
// ñòàëè ìàñòåðîì
|
|
edrk.auto_master_slave.local.bits.master = 1;
|
|
edrk.auto_master_slave.local.bits.try_master = 0;
|
|
edrk.auto_master_slave.status = 9;
|
|
// edrk.auto_master_slave.local.bits.slave = 1;
|
|
}
|
|
else
|
|
{
|
|
edrk.auto_master_slave.status = 22;
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
//////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////
|
|
// 3
|
|
// òîò Ï× çàïðàøèâàåò ïåðåõîä íà ìàñòåð
|
|
|
|
if (edrk.auto_master_slave.remoute.bits.master==0
|
|
&& edrk.auto_master_slave.remoute.bits.slave==0
|
|
&& edrk.auto_master_slave.remoute.bits.try_master)
|
|
{
|
|
// à ýòîò Ï× slave
|
|
if (edrk.auto_master_slave.local.bits.slave)
|
|
{
|
|
// âðîäå íå íîðì, îñòàåìñÿ slave
|
|
// òóò íàäî ïîäîæäàòü íåêîòðîå âðåìÿ, ïîêà òîò Ï× íå ïîéìåò ÷òî ìû ñòàëè ñëåéâîì è ïåðåéäåò èç try_master â ìàñòåð
|
|
if (count_wait_slave_try_master<MAX_COUNT_WAIT_SLAVE_TRY_MASTER)
|
|
count_wait_slave_try_master++;
|
|
else
|
|
{
|
|
edrk.auto_master_slave.status = 10;
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
}
|
|
}
|
|
else
|
|
// à ýòîò Ï× master
|
|
if (edrk.auto_master_slave.local.bits.master)
|
|
{
|
|
// òóò ìû äîëæíû ïðèíÿòü ðåøåíèå îòäàâàòü ëè ñâîé ìàñòåð äðóãîìó Ï×?
|
|
// ïîêà âûñòàâèì îøèáêó
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
edrk.auto_master_slave.status = 11;
|
|
}
|
|
else
|
|
// ýòîò Ï× íå ìàñòåð è íå ñëåéâ è íåò çàïðîñîâ îò íåãî íà ìàñòåð
|
|
if (edrk.auto_master_slave.local.bits.master==0 && edrk.auto_master_slave.local.bits.slave==0 && edrk.auto_master_slave.local.bits.try_master==0)
|
|
{
|
|
// ñòàíîâèìñÿ slave
|
|
edrk.auto_master_slave.local.bits.slave = 1;
|
|
edrk.auto_master_slave.status = 12;
|
|
count_wait_slave_try_master = 0; // îáíóëèì ñ÷åò÷èê, ò.ê. íàñ íàäî ÷òîá òîò Ï× ïîíÿë ÷òî ìû ñòàëè slave
|
|
}
|
|
else
|
|
// ýòîò Ï× íå ìàñòåð è íå ñëåéâ è åñòü çàïðîñ îò íåãî íà ìàñòåð, ò.å. îáà Ï× õîòÿò áûòü ìàñòåðàìè
|
|
if (edrk.auto_master_slave.local.bits.master==0 && edrk.auto_master_slave.local.bits.slave==0 && edrk.auto_master_slave.local.bits.try_master==1)
|
|
{
|
|
|
|
// ñòàíîâèìñÿ master ÷åðåç íåêîòîðîå âðåìÿ (äëÿ êàæäîãî Ï× âðåìÿ ðàçíîå)
|
|
if (edrk.flag_second_PCH==0)
|
|
{
|
|
//îáà õîòÿò, íî ïðèîòðèòåò äàåì âñåãäà ïåðâîìó
|
|
edrk.auto_master_slave.local.bits.master = 1;
|
|
edrk.auto_master_slave.local.bits.try_master = 0;
|
|
|
|
// if (count_try_master<MAX_COUNT_TRY_MASTER_BS1)
|
|
// count_try_master++;
|
|
// else
|
|
// edrk.auto_master_slave.local.bits.master = 1;
|
|
}
|
|
|
|
if (edrk.flag_second_PCH==1)
|
|
{
|
|
//îáà õîòÿò, íî ïðèîòðèòåò äàåì âñåãäà ïåðâîìó
|
|
|
|
edrk.auto_master_slave.local.bits.slave = 1;
|
|
edrk.auto_master_slave.local.bits.try_master = 0;
|
|
|
|
// if (count_try_master<MAX_COUNT_TRY_MASTER_BS2)
|
|
// count_try_master++;
|
|
// else
|
|
// edrk.auto_master_slave.local.bits.master = 1;
|
|
}
|
|
edrk.auto_master_slave.status = 13;
|
|
}
|
|
else
|
|
{
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
edrk.auto_master_slave.status = 100;
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
//////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////
|
|
// 4
|
|
// ýòîò Ï× çàïðàøèâàåò ïåðåõîä íà ìàñòåð
|
|
|
|
if (edrk.auto_master_slave.local.bits.master==0
|
|
&& edrk.auto_master_slave.local.bits.slave==0
|
|
&& edrk.auto_master_slave.local.bits.try_master)
|
|
{
|
|
// ñòàíîâèìñÿ master ÷åðåç íåêîòîðîå âðåìÿ (äëÿ êàæäîãî Ï× âðåìÿ ðàçíîå)
|
|
if (edrk.flag_second_PCH==0)
|
|
{
|
|
if (count_try_master<MAX_COUNT_TRY_MASTER_BS1)
|
|
{
|
|
count_try_master++;
|
|
edrk.auto_master_slave.status = 14;
|
|
}
|
|
else
|
|
{
|
|
edrk.auto_master_slave.local.bits.master = 1;
|
|
edrk.auto_master_slave.local.bits.try_master = 0;
|
|
edrk.auto_master_slave.status = 15;
|
|
|
|
}
|
|
}
|
|
|
|
if (edrk.flag_second_PCH==1)
|
|
{
|
|
if (count_try_master<MAX_COUNT_TRY_MASTER_BS2)
|
|
{
|
|
count_try_master++;
|
|
edrk.auto_master_slave.status = 14;
|
|
}
|
|
else
|
|
{
|
|
edrk.auto_master_slave.local.bits.master = 1;
|
|
edrk.auto_master_slave.local.bits.try_master = 0;
|
|
edrk.auto_master_slave.status = 15;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
else
|
|
//////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////
|
|
// 5
|
|
// òîò Ï× íè÷åãî íå äåëàåò
|
|
|
|
if (edrk.auto_master_slave.remoute.bits.master==0 && edrk.auto_master_slave.remoute.bits.slave==0 && edrk.auto_master_slave.remoute.bits.try_master==0)
|
|
{
|
|
// à ýòîò Ï× slave
|
|
if (edrk.auto_master_slave.local.bits.slave)
|
|
{
|
|
// áûëè â ñëåéâå, à òîò Ï× ïî÷åìó-òî ïîòåðÿë ðåæèì - îøèáêà èëè ïîïûòêà çàõâàòà ìàñòåðà!
|
|
if (edrk.auto_master_slave.prev_remoute.bits.master)
|
|
{
|
|
if (edrk.Go) // ïðè ØÈÌå âûðóáàåìñÿ.
|
|
{
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
edrk.auto_master_slave.status = 24;
|
|
|
|
}
|
|
else
|
|
{
|
|
// à òóò âñå îê.
|
|
edrk.auto_master_slave.local.bits.slave = 0;
|
|
edrk.auto_master_slave.local.bits.master = 1;
|
|
|
|
edrk.auto_master_slave.status = 23;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
edrk.auto_master_slave.status = 16;
|
|
}
|
|
}
|
|
else
|
|
// à ýòîò Ï× master
|
|
if (edrk.auto_master_slave.local.bits.master)
|
|
{
|
|
// òóò ìû îñòåìñÿ ìàñòåðîì âðîäå?
|
|
// íî òîò Ï× íå ïîäòâåðäèë ïåðåõîä, îí äîëæåí ñòàòü ìàñòåðîì èëè ñëåéâîì
|
|
err_confirm_mode = 0;
|
|
// filter_err_count(&count_wait_answer_confirm_mode,
|
|
// MAX_COUNT_WAIT_ANSWER_CONFIRM_MODE,
|
|
// 1,
|
|
// 0);
|
|
|
|
|
|
if (err_confirm_mode)
|
|
{
|
|
// ìû ìàñòåð, íî òîò Ï× òàê è íå ïîíÿë ýòî
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
edrk.auto_master_slave.status = 20;
|
|
}
|
|
else
|
|
edrk.auto_master_slave.status = 17;
|
|
|
|
}
|
|
else
|
|
{
|
|
// òóò ïûòàåìñÿ çàõâàòèòü ìàñòåð
|
|
if (edrk.flag_second_PCH==0)
|
|
edrk.auto_master_slave.local.bits.try_master = 1;
|
|
if (edrk.flag_second_PCH==1)
|
|
edrk.auto_master_slave.local.bits.try_master = 1;
|
|
edrk.auto_master_slave.status = 18;
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
//////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////
|
|
// 5
|
|
//
|
|
{
|
|
// ÷òî-òî ïîøëî íå òàê
|
|
edrk.errors.e7.bits.AUTO_SET_MASTER |= 1;
|
|
edrk.auto_master_slave.status = 19;
|
|
|
|
}
|
|
//////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////
|
|
// 6
|
|
//
|
|
|
|
//////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////
|
|
// 7
|
|
//
|
|
|
|
//////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////
|
|
// 8
|
|
//
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// optical_write_data.cmd.bit. = edrk.auto_master_slave.local.bits.slave;
|
|
|
|
|
|
|
|
edrk.to_second_pch.bits.MASTER = edrk.auto_master_slave.local.bits.master;
|
|
|
|
edrk.auto_master_slave.prev_remoute.all = edrk.auto_master_slave.remoute.all;
|
|
edrk.auto_master_slave.prev_local.all = edrk.auto_master_slave.local.all;
|
|
|
|
}
|
|
//////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////
|
|
//////////////////////////////////////////////////////////
|
|
|
|
void clear_errors_master_slave(void)
|
|
{
|
|
|
|
// if (edrk.errors.e7.bits.AUTO_SET_MASTER)
|
|
{
|
|
|
|
// if (edrk.errors.e7.bits.MASTER_SLAVE_SYNC
|
|
// || edrk.errors.e1.bits.NO_INPUT_SYNC_SIGNAL)
|
|
// edrk.ms.count_time_wait_ready1 = 0;
|
|
|
|
edrk.ms.count_time_wait_ready2 = 0;
|
|
|
|
edrk.ms.errors_count.alive_can_to_another_bs = 0;
|
|
edrk.ms.errors_count.alive_opt_bus_read = 0;
|
|
edrk.ms.errors_count.alive_opt_bus_write = 0;
|
|
edrk.ms.errors_count.alive_sync_line = 0;
|
|
edrk.ms.errors_count.alive_sync_line_local = 0;
|
|
edrk.ms.errors_count.another_rascepitel = 0;
|
|
edrk.ms.errors_count.fast_optical_alarm = 0;
|
|
edrk.ms.errors_count.input_alarm_another_bs = 0;
|
|
edrk.ms.errors_count.input_master_slave = 0;
|
|
|
|
edrk.ms.err_lock_signals.alive_can_to_another_bs = 0;
|
|
edrk.ms.err_lock_signals.alive_opt_bus_read = 0;
|
|
edrk.ms.err_lock_signals.alive_opt_bus_write = 0;
|
|
edrk.ms.err_lock_signals.alive_sync_line = 0;
|
|
edrk.ms.err_lock_signals.alive_sync_line_local = 0;
|
|
edrk.ms.err_lock_signals.another_rascepitel = 0;
|
|
edrk.ms.err_lock_signals.fast_optical_alarm = 0;
|
|
edrk.ms.err_lock_signals.input_alarm_another_bs = 0;
|
|
edrk.ms.err_lock_signals.input_master_slave = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////
|