Игнорируем моргание линка при включении PLC
parent
0b707534e0
commit
5948b70b08
16
fw/PLCpwr.c
16
fw/PLCpwr.c
|
|
@ -1,6 +1,6 @@
|
|||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <util/delay.h>
|
||||
|
||||
#define Link1pin PB2 // Пин оптопары светодиода линка
|
||||
#define Link2pin PB1 // Пин оптопары светодиода линка
|
||||
|
|
@ -27,7 +27,7 @@ ISR(TIM0_OVF_vect)
|
|||
|
||||
uint8_t check_link(void) // Проверка линка
|
||||
{
|
||||
if(!(PINB & (1 << Link1pin) || PINB & (1 << Link2pin))) // Если горит хотя бы один светодиод линка
|
||||
if(!(PINB & (1 << Link1pin)) || !(PINB & (1 << Link2pin))) // Если горит хотя бы один светодиод линка
|
||||
{
|
||||
return 1; // То возвращаем 1
|
||||
}
|
||||
|
|
@ -54,28 +54,28 @@ int main(void)
|
|||
if(new_mode == MODE_WAIT_LINK)
|
||||
{
|
||||
PORTB &= ~(1<<PLCPWRpin); // PLC ON
|
||||
timer = 60*36; // +- 60 сек
|
||||
timer = 270; // +- 60 сек
|
||||
}
|
||||
if(new_mode == MODE_LINK_UP)
|
||||
{
|
||||
PORTB |= (1<<EXTPWRpin); // Modem ON
|
||||
timer = 60*36; // +- 60 сек
|
||||
timer = 270; // +- 60 сек
|
||||
}
|
||||
if(new_mode == MODE_SLEEP)
|
||||
{
|
||||
PORTB &= ~(1<<EXTPWRpin); // Modem OFF
|
||||
PORTB |= (1<<PLCPWRpin); // PLC OFF
|
||||
timer = 300*36; // +- 5 минут
|
||||
timer = 1350; // +- 5 минут
|
||||
}
|
||||
cur_mode = new_mode;
|
||||
}
|
||||
if (cur_mode == MODE_WAIT_LINK && check_link() == 1) // Если мы в режиме ожидания линка и линк есть
|
||||
if (cur_mode == MODE_WAIT_LINK && check_link() == 1 && timer < 180) // Если мы в режиме ожидания линка и линк есть
|
||||
{
|
||||
new_mode = 2; // То переходим в рабочий режим
|
||||
new_mode = MODE_LINK_UP; // То переходим в рабочий режим
|
||||
}
|
||||
if (cur_mode == MODE_LINK_UP && check_link() == 1) // Если мы в рабочем режиме и линк есть
|
||||
{
|
||||
timer = 60*36; // +- 60 сек, то не даем таймеру обнулиться
|
||||
timer = 270; // +- 60 сек, то не даем таймеру обнулиться
|
||||
}
|
||||
if(timer == 0 && (cur_mode == MODE_WAIT_LINK || cur_mode == MODE_LINK_UP)) // Если таймер истек, а линка нет
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue