touch всегда равна 0 , ослик на PD3 показывает только первый импульс 93us , PD2 показывает всего 1 импульс вместо 16… не пойму почему он не дергает ногой , разве 50 микросекунд для него сильно быстро ?
ATMEGA 2560
Аксиома - > код в прерывании должен быть максимально коротким и тем более никаких delay.
Итог - переписывать все.
ЗЫ. А у вас какое образование? Мне кажется вы очень далеки от программирования не всем оно даётся…
В pinMode надо передавать номер пина в Ардуино (от 0 до 69)
В SET надо передавать номер пина в порту (от 0 до 7)
И если в UNO они совпадают для порта D, то для 2560 по моему не совпадают.
В приведенном в начале коде вы делаете нечто похожее на Soft Serial, В Soft Serial обработка приема байта ведется в прерывании. Просто надо учитывать в остальном коде эту особенность. Тем более, что вы писали, что это временное решение, на время экспериментов.
В прерывании может быть что угодно, если это не приводит к ошибкам работы остального кода.
да временно , я уже переделал теперь в прерывании только флаг… просто чтобы не заморачиваться на левые ошибки недочеты , весь код написал в прерывании на время эксперемента…
но сейчас все перенес в основной код.
ну в принципе можно и не в прерывании (имхо) если сделать ее атомарной, хотя я посчитал задержки , для моего кода даже на атомарность можно не заморачиваться…
Да, с флагом лучше. Я когда писал свой комментарий уже забыл исходный код, что вы сами формируете CLK, и что там допуск на времена огромный. Так что действительно в прерывании это делать нет смысла.