Сообщение от harchenko_pavel
|
а дребезг контактов?
|
ну можно и так сказать, это проверка манометра на заданное давление. Давление должно перешагнуть определенный порог, а задержка, для устранения переходных процессов (типа дребезг). причину нашел, использовал переменную "а" в прерывании(лохонулся, сорри). Теперь друга проблема, это я проверял манометр до основного цикла, не подскажите как тоже самое делать в основном цикле программы. То есть, при определенном пороге давления (которое определяем в течении 5 сек) совершать, какие либо действия.. использовать _delay_ms тут же не прокатит. условие: прерывание срабатывает каждые 10мс. наверное как то через него но как..
ISR(TIMER1_COMPA_vect)
{
if (t)
{
t=0;
LED_PORT_123=0b00100000; // led blink for test
}
else
{
t=1;
LED_PORT_123=0b00000000; // led blink for test
}
};
......
int main(void)
{
.....
a=0;
while(a‹10)
{
if (bit_is_clear(PIND,BUTTON_PRESSURE))
{
a++;
_delay_ms(500);
}
else
{
a=0;
};
};
.....
for( ; ; ) // основной цикл
{
// проверять в этом месте
}
}