X-HUNTER писал(а):
Раньше думал, компилятор оптимизирует код и разницы быть не должно. А оно вон как…
компилятор оптимизирует код, но регистры МК (в частности, ваши DDR и т.п.) описаны, как volatile-переменные, а volatile - это значит неоптимизируемые.
X-HUNTER писал(а):
WDTCR = 0x61; // так меньше код
меньше, но, скажем так - не комильфо запись. более правильно записать как-то так:
Код:
WDTCR = _BV(WDTIE) | _BV(WDP3 ) | _BV(WDP0);
а совсем идеально - использовать модуль
avr/wdt.h и применять готовые функции и макросы, например, так:
Код:
#include <avr/wdt.h>
wdt_enable(WDTO_30MS);
возможно, мой пример не подходит под ваши цели, но он показывает направление движения в правильную сторону