ОТЛАДЧИК (ДЕБАГГЕР)


Дебаггер эмулятора представлен функцией вывода содержимого портов alerts(), которая нужна только в том случае, если содержимое порта не меняется явно. Вывод содержимого портов и переменных с остановом выполняется сходной конструкцией вида alert(PORTx), без остановки по puts(переменная).

Циклы и логические конструкции, помимо while и if, не должны включать в себя пауз с delay.

В пределах основной программы while и if с открывающей скобкой нельзя вкладывать, они требуют в своем завершении комментария (как в примере). Ограничения не касаются использования в подпрограммах, кроме того, while и if без скобки при них (или помеченные значком "антидебаггера" /**/) работают как обычно. Эти меры позволяют отладчику замедлять темп вывода графической и текстовой информацию с тем, чтобы мы успели ее воспринять.

Иными словами, есть два вида if (и while), в первом (с завершением //if) дебаггер разрешает выводить графику и делать паузу - эти if нельзя вкладывать друг в друга, проверка условий идет только подряд



во втором дебаггер не делает пауз



Во втором случае нет комментария в конце.

Для простоты учебного дебаггера подпрограммы предваряются комментарием //function. Отсутствующие аргументы подпрограмм декларируются по void (пусто). Далее пишется тело исполняемой программы со стандартным наименованием main.

Две линии, PD0 и PC5, подсвечиваются "светодиодом". Зеленым маркером отмечается единичное (высокое) состояние пина. Для физических стендов характерно инверсное подключение, когда светодиоды горят при нулевых выходах. При анимации роботов команда clear() отключает заставку со светодиодами. Расположение индикаторов отладчика отвечает архитектуре микропроцессора ATmega8.

Глобальные переменные обязательно декларируются по //variables и после описания их следует переключатель //program. В AVR GCC переменная помечается при описании ее типа как volatile, иначе оптимизатор распространенного компилятора утрирует логические условия с ней, если она изменяется вне зоны его компетенции (при прерываниях).

Rambler's Top100