ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
1316180
POV (04.06.2023 11:20 - 11:26, просмотров: 3175)
Как говорится "компилятор глючит" ))) [keil51]... 

Новая партия плат. Все собраны, зашиты, проверены - десятки плат великолепно работают.

Но завалялась одна плата из партии которой уж года полтора. Решил ей обновить прошивку. Ту же самую что на новых платах.

И оно не работает!

Ну бред же! Переделки плат был косметические, по прошивке совместимые.

И да, в каком состоянии эта плата не знаю, может уже неработающая мне в руки попала.


Оказалось, неверно измеряет на старте период между импульсами по 10 мс.

Подцепил программатор, все промежуточные данные в переменные сначала записываю, чтобы можно было отследить отладчиком. И вот тут "ничё понимаю"...


В temp около 8000 мкс (65536 *0.12 мкс). До фронта ещё таймер успел еще 191 тик насчитать. Надо эту дельту прибавить.



Однако, делаю шаг и там такая ересь. А как же вон еще 30 плат работают?!


t16 сделал float. вышло еще тупее. Дельта в 10 раз больше! А результат суммирования тоже неправильный.


Занулил дельту. И всё равно суммирование даёт неверный результат.


А вот так нет суммирования, просто присвоение выполняется.


А вот так заработала. Отличие платы от новых - иная длительность импульсов. Т.е. t16 (добавка до полного интервала между фронтами) разные. И вот на каких-то значениях глючит. Просто свезло что новые платы заработали.