Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/clunet.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'clunet.c')
-rw-r--r--clunet.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/clunet.c b/clunet.c
index a035900..7805909 100644
--- a/clunet.c
+++ b/clunet.c
@@ -142,7 +142,7 @@ ISR(CLUNET_TIMER_COMP_VECTOR)
/* Этот блок кода может прижать линию к земле */
default:
- // Проверка на конфликт. Если мы линию не держим, но она уже занята
+ // Арбитраж. Если мы линию не держим, но она уже занята.
if (!CLUNET_SENDING && CLUNET_READING)
{
CLUNET_DISABLE_TIMER_COMP; // Выключаем прерывание сравнения таймера (передачу)
@@ -286,6 +286,12 @@ ISR(CLUNET_INT_VECTOR)
/* Если линию прижало к нулю */
if (CLUNET_READING)
{
+ /* Если мы в режиме передачи и прижали не мы, то в арбитраже не участвуем и ждем */
+ if (clunetSendingState && !CLUNET_SENDING)
+ {
+ CLUNET_DISABLE_TIMER_COMP;
+ clunetSendingState = CLUNET_SENDING_STATE_WAITING_LINE;
+ }
clunetTimerStart = now; // Запомним время начала сигнала
clunetTimerPeriods = 0; // Сбросим счетчик периодов таймера
}