ПРошу помощи в алгоритме.
Есть датчик протока, в ём стоит элемент Холла.(такой, как в вентиляторах компьютерных) На крыльчатке два магнитика.
По остановке протока остановиться датчик может выдавая или "0", или "1". (Если магнитик остановиться возле Холла или же если на расстоянии от него.)
Нужно остслеживать переключение из "1" в "0" и обратно, т.е. фиксировать изменения. Если меняется, то значит все норм.
А если остановилось или на "0" или на "1" более, чем на 500000 тиков счетчика, то выдавать ахтунг куда-нить, в данном случае переключать PORTC PC0.
Как обнаружиться изменение на канале датчика, так ахтунг отключается.
Так вот не пойму никак - обе части данного алгоритма работают как взаимоисключающие..
В итоге не работает как надо. Помогите разобраться.
Код: Выделить всё
#define key1 (bit_is_set(PORTC, PC0))
#define key2 (bit_is_clear(PORTC, PC0))
#define pump_on PORTB |= (1<<PB0)
#define pump_off PORTB &= ~(1<<PB0)
if(key1) //если на пине "1"
{
if(++ count1 >=500000) // и если "1" задержалась там на более, чем 500000
pump_on ; count1=0; // то что то там включается и счетчик обнуляется
}
else pump_off, count1=0; // если не соответствует условиям, то не включается.
//без этой части работает от "1"..
if(key2) //если на пине "0"
{
if(++ count1 >=500000) // и если "0" задержался там на более, чем 500000
pump_on ; count1=0; // то что то там включается и счетчик обнуляется
}
else pump_off, count1=0; // если не соответствует условиям, то не включается.