12.01.2011

ArduinoIDE 0022

В ArduinoIDE 0022 нет существенных внешних изменений, поэтому начну с самого главного - ядра. Почему мне это особенно близко, легко понять, если пролистать вторую статью из цикла "Arduino из BM8036", в которой я адаптировал ядро из релиза 0019 для процессора ATmega32.

Изменена идеология ветвления в ядре, учитывающая тип процессора. Собственно - раньше это были макросы #if defined(__ATmega8__) - но со временем число официальных МК  росло, народ портировал ядро на другие МК семейства AVR, злостно чертыхаясь в процессе правки этих самых #if. Дело в том, что у каждого процессора свой набор таймеров, отвечающих за поддержку аппаратного ШИМ на определенных его ногах. И вот, революционная идея: вместо того, чтобы проверять тип процессора (подается gcc при компиляции через ключ -mmcu), проверяют определение регистров! Правда, это чуть-чуть расходует память программ - 14 байт для ATmega328 и 40 для ATmega1280, но зато означает, что теперь портирование на другие МК будет проще. Что ж, подождем всплеска Arduino-подобных проектов :)

Далее, менее значительные исправления:

  • поправили вычисление скорости последовательного порта - проявлялось только на Uno, если инициализировать скорость обмена в 57600;
  • исправили неверную генерацию звука через Tone() - теперь звук не плавает;
  • не компилялась работа с EEPROM под MacOS и Windows в платах Mega2560 - был добавлен кастомный eeprom.h;
  • немного оптимизирован код последовательного порта в плане вычисления указателя буфера - это позволило поднять максимум скорости до 115200;
  • поправлена работа pulseIn - теперь таймаут действует не только на ожидание завершения предыдущего импульса и начала текущего, но и на окончание - раньше бесконечный импульс подвешивал вызов.
Добавлена функция String.toInt, а также макросы определения типа символа - isNumeric(), isControl() и т.п., макросы простых преобразований - toUpperCase() и т.д.

Ряды официальных библиотек пополнила SD library

В плане изменений самой IDE в очередной раз улучшили поведение окна Serial Monitor-а, пофиксили режим копирования в формате html, заменили библиотеку регулярных выражений и поставили компиляцию скетча перед компиляцией ядра, должно ускорить процесс поиска ошибок. 

4 комментария:

  1. А я собрал недавно MRC-40 http://robozone.su/2008/06/01/universalnyjj-robo-kontroller-mrc-40.html, прошил сангуиновским загрузчиком, вроде бы при включении моргает светодиодом, но скетчи через компорт не льются.

    ОтветитьУдалить
  2. Несостыковка по скорости порта, не иначе.

    ОтветитьУдалить
  3. Хотелось бы увидеть продолжение темы "Arduino из BM8036" ;)

    ОтветитьУдалить
  4. Я бы с удовольствием - пока перегруз другими занятиями (в т.ч. основной работой). Пока запланировано еще 3 статьи, но когда выйдут те, которые пишу я... надеюсь к марту хотя бы одну...

    ОтветитьУдалить