|
я конечно понимаю что это скорее всего из-за кривых рук, но все-таки:
есть at90s8535, есть прога (сгенеренная MakeApp'om), которая по внешнему прерыванию замеряет время по TCNT1 между двумя внешними прерываниями. (~ 1 мс)
есть TCNT2 который бежит от внешнего кварца 32768 Гц.
так вотпо переполнению TCNT2 считается частота, соответсвующая измеренному времени и отсылается через UART в комп.
теперь запихиваю все это в proteus и наблюдаю следующее:
если внешнее прерывание влазит в тот момент пока делается
MA_PutChar_UART (byte2send);
(который запихивает byte2send в буфер, и включает прерывание UART Data Register Empty, обработчик которого в свою очередь берет байт из буфера и кладет UART Data Reg)
так вот если во время всего этого влазит внешнее прерывание, то происходит "как бы ресет" т.е он прыгает на начало void main() и вся инициализвция и прочее начинается сначала, а состояние регистров, переменных не обнуляется.
что не так?
E-mail: info@telesys.ru