В 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, заменили библиотеку регулярных выражений и поставили компиляцию скетча перед компиляцией ядра, должно ускорить процесс поиска ошибок.
А я собрал недавно MRC-40 http://robozone.su/2008/06/01/universalnyjj-robo-kontroller-mrc-40.html, прошил сангуиновским загрузчиком, вроде бы при включении моргает светодиодом, но скетчи через компорт не льются.
ОтветитьУдалитьНесостыковка по скорости порта, не иначе.
ОтветитьУдалитьХотелось бы увидеть продолжение темы "Arduino из BM8036" ;)
ОтветитьУдалитьЯ бы с удовольствием - пока перегруз другими занятиями (в т.ч. основной работой). Пока запланировано еще 3 статьи, но когда выйдут те, которые пишу я... надеюсь к марту хотя бы одну...
ОтветитьУдалить