Доброго времени суток.
В МК я, можно сказать, новичок, поэтому решил спросить совета у более опытных людей. Суть проблемы такова - имеется устройство, считающее импульсы от внешнего генератора. Считает как в большую сторону, так и в меньшую. При достижении 0 кратковременно устанавливается высокий уровень на выходе, давая понять тому, что к нему подключено, что счет окончен. Собрано все на tiny2313A, индикация организована на 0 таймере. Все как бы работает, но при отсчете от какого-либо значения большего 255 до 0, при достижении значения 255 на выходе, по какой-то непонятной мне причине, появляется высокий уровень. Причем происходит это спонтанно - может сутки отработать как часы, а может глючить через раз. При этом, если импульсы продолжают поступать, то они продолжают отсчитываться.
Вот кусок кода, отвечающий за увеличение/уменьшение переменной и реакцию устройства при достижении переменной нулевого значения. Переменная Счет нужна для того, чтобы при достижении 0 не дергался постоянно выход. Не пинайте, пожалуйста, за его корявость - старался как мог.
Ткните, пожалуйста, носом откуда у проблемы ноги растут.
Спасибо.
В МК я, можно сказать, новичок, поэтому решил спросить совета у более опытных людей. Суть проблемы такова - имеется устройство, считающее импульсы от внешнего генератора. Считает как в большую сторону, так и в меньшую. При достижении 0 кратковременно устанавливается высокий уровень на выходе, давая понять тому, что к нему подключено, что счет окончен. Собрано все на tiny2313A, индикация организована на 0 таймере. Все как бы работает, но при отсчете от какого-либо значения большего 255 до 0, при достижении значения 255 на выходе, по какой-то непонятной мне причине, появляется высокий уровень. Причем происходит это спонтанно - может сутки отработать как часы, а может глючить через раз. При этом, если импульсы продолжают поступать, то они продолжают отсчитываться.
Вот кусок кода, отвечающий за увеличение/уменьшение переменной и реакцию устройства при достижении переменной нулевого значения. Переменная Счет нужна для того, чтобы при достижении 0 не дергался постоянно выход. Не пинайте, пожалуйста, за его корявость - старался как мог.
Код: Выделить всё
Config Int0 = Falling
Config Int1 = Falling
On Int0 Меньше
On Int1 Больше
....
....
Выход = 0
Число = 0
Счет = 0
Do
If Число = 0 And Счет = 1 Then
Выход = 1
Waitms 250
Выход = 0
Счет = 0
End If
Loop
End
'------------
'Подпрограммы
'------------
Меньше:
If Число > 0 Then Decr Число
Счет = 1
Eifr = 64
Return
'------------------------------
Больше:
If Число < 9999 Then Incr Чмсло
Счет = 1
Eifr = 128
ReturnСпасибо.