Мне нужно было реализовать защиту на тот случай если по каким-то причинам не сработает концевой выключатель на двигателе. То есть не просто запускать двигатель и ждать когда сработает концевик а запустить двигатель с "таймером" и в не зависимости от того что раньше наступит прекратить работу двигатель. А наступить может два события, это:
первое событие - сработал концевик и в штатном режиме всё продолжает дальше работать
второе событие - концевик не сработал (не важно покаким причинам, может обрыв цепи например) двигатель всё равно выключается по истечении определённого времени и у меня не чего не сгорает.
В программе МК я это реализовал следующим образом
Код: Выделить всё
unsigned short x; // объявляем переменную
x = 0; // чистим переменную
while (RA1 == 1) // запускаем цикл и выполняем его пока на вводе RA1 нет "-"
{
RB0 = 1; //включаем мотор
if (x!=8000){ //запускаем своеобразный программный таймер, когда досчитает до 8000 выйдет из цикла и перейдёт по абсолютной метке "next1"
x = x+1;}
else
goto next1;
}
next1: // тут окажется МК после выхода из цикла по срабатыванию таймера
RB0 = 0; // выключить мотор
Единственное я пока что не могу понять как правильно рассчитать число Х что-бы получить нужный отрезок времени...
Какой-то бред с таймингом пока что...
Ещё нужно как-то настроить "собачий" сторожевой таймер... тут у меня пропасть. Я даже не знаю как это спросить у гугла (
Подскажите как бороться с таймером когда есть такая строка в программе " __delay_ms(800);"
Она ведь явно превышает возможности таймера и он раньше времени уйдёт в перезагрузку.
Подскажите пожалуйста!

