Main Menu

iqrate.comТехнологииРобототехника → Avr-gcc :: совместимость кода

Avr-gcc :: совместимость кода

возможности интернета

В интернете существует множество примеров кода для AVR-GCC, написанного с использованием функций и макросов, которые больше не поддерживаются в новых версиях компилятора. Чтобы использовать эти примеры и понять с помощью них суть работы с портами микроконтроллера, необходимо переписывать код или использовать специальные макроопределения.

Для начинающих осваивать программирование микроконтроллеров AVR такой подход может оказаться сложным. В результате многие переходят на другие компиляторы и больше никогда не используют ставшую для многих культовой среду разработки WinAVR. Хотя существует простой способ решить все проблемы и вновь вернуть отвергнутые разработчиками функции в AVR-GCC. Для этого можно использовать специально созданный myROBOT AVR-GCC PATCH for WinAVR.

Прежде чем мы перейдем к описанию патча, рассмотрим, какие же функции он возвращает. В последних версиях библиотеки avr-libc, входящей в состав компилятора AVR-GCC, использующегося в WinAVR, больше не поддерживаются функции inp, outp, sbi и cbi. Сделано это для оптимальной интерпретации исходного текста программы при ее компиляции и определения, как обращаться к порту - как к регистру или как к ячейке памяти.

Поддержка этих функций отсутствует уже начиная с версии WinAVR-20050214. В том числе отсутствует поддержка столь популярных и бывших для многих удобными bit_is_set и bit_is_clear. Эти функции можно встретить во множестве примеров программ для начинающих, в том числе в популярном проекте сайта "РобоКлуб" под названием "Делаем робота вместе".

Конечно же, никто не призывает пользоваться исключительно "старыми" функциями, патч предназначен вернуть обратную совместимость программам на AVR-GCC. Используя патч, вы не лишаетесь возможности работы с новой нотацией, а только возвращаете возможность использования исключенных функций. Например, проверив в работе какой-либо из найденных в интернете примеров, можно потренироваться, переписав его с использованием нового синтаксиса.