Все 3 "sleep" не выполняются, выяснил это тем что питание отключается только на то время что сформировано таймером.
Задержки на слипах только на "большие" интервалы времени для экономии батарейки, а так как отрезки фиксированные,
то недостающее (до алгоритма) добираю таймером.
Знал бы я asm достаточно то на нем бы и накатал) Но дело в том что я знаю только те инструкции которые описаны в ДШ.
Не знаю как память размечать, как инклюдить внешние файлы, ну короче не уметь)
Вызовы вроде как тоже тратят время))))
Прерываний нет вообще, по крайней мере нету ухода на вектор, только анализ флагов.
Да функции сам писал, и не функции а дефайны. Работает все отлично, в дизассемблере именно то что задумано)
Собственно дефайны:
Остальной код тут не причем думаю, так как выполняется все за тем исключением того что питание приемника
отключается не на 89мс как задумано, а на ~1ms (то что таймер формирует после слипов).
Да эти "goto" все равно появляются при использовании IF, FOR, WHILE, но дело в том что при дизассемблировании
происходит не очень хорошая их замена и где можно было обойтись 2 инструкциями может и по 6 висеть((((
Потому все ветвления сделаны через вставки, и приведенный кусок кода как раз является одной из веток
при проверке флага переполнения таймера.
В общем выяснил, что "слипы отмирают" когда соединяю вместе RA1(дискретный выход) и RA2(дискретный вход с подтяжкой внутренней). Как с этим бороться?
То есть если я запитываю приемник с пина и соединяю другой пин с выходом приемника, начинается этот баг.