Протеус съедает такт - глюк?
Моделируется работа нескольких контроллеров, которые общаются друг с другом по I2C.
Так вот иногда съедается один такт и при этом передающее устройство считает что было передано нужное количество тактов, а принимающее считает что одного такта не было, на осциллограмме это хорошо видно.
Вопрос у кого ни будь такое проявлялось?
P.S.
Лично у меня есть две версии:
1. Глюк протеуса! Хотя как бы там его не критиковали, реально у меня глюки встречаются не так часто.
2. Управление портами которые являются линиями I2C осуществляется через указатели, макросами, соответственно это занимает времени более одного машинного цикла, при этом прерывания включены. Возможно на этапе инициализации порта, возникает прерывание и происходит сбой. Но во первых не знаю на сколько такое реально, а во вторых на второй осциллограмме видно, что порт сбрасывается в 0, но тут же устанавливается обратно на выход. То есть инициализация порта вроде бы проходит полностью.
|