[an error occurred while processing this directive]
|
Нужно было организовать подсчет количества приходящих импульсов от спец платы (импульсы выдаются асинхронно с частотой порядка 10 гц). Счетчиков всего 4
Сделал следующее устройство (pic16f628a). На порты RB4:RB7 повесил прерывание по изменению состояния. При приходе прерывания читаю значение порта (проверяю на 1) и если какой то из пинов установлен то инкремениюру счетчик. Также обрабатываю прерывание от таймера (счет надо окончить через 500 мс). Также обрабатывается прерывание от UART. Проблема в том что счетчики выдают всегда разные значения. Вставлял в обработчик прерывания задержку (для компенсации переходных процессов). С ней счетчик иногда считает правильно. Но логики когда правильно а когда нет (а главное почему) не уловил. Если задержку убрать то на 100 импульсов программа возвращает значение иногда и 16000. Может кто что подскажет?
Исходы по ссылке http://asdf55bgt.narod.ru/Main.asm
E-mail: info@telesys.ru