31.01.2010

ArduinoIDE 0018

В пятницу, 29.01.2010 вышел очередной релиз ArduinoIDE 0018. На этот раз, хоть и после длительного перерыва, но никаких грандиозных нововведений. Сплошные грандиозные багфиксы. Традиционно, подтянулись к Processing 1.0.9.

Начнем с куска, который присутствует всегда - с библиотеки-ядра (Arduino core).

1. Теперь последовательный порт умеет выключаться. В самом деле - а вдруг оно больше не пригодится? Поэтому, появилась Serial.end():

void HardwareSerial::end()
{
  cbi(*_ucsrb, _rxen);
  cbi(*_ucsrb, _txen);
  cbi(*_ucsrb, _rxcie);
}

cbi - это аналог avr-gcc-шного макроса сброса бита в управляющем регистре МК. После вызова Serial.end() уже ничто не вызовет передачу или прием данных по последовательному порту.

2. Внутри delayMicroseconds() прерывания больше не запрещаются, перед циклом задержки убран cli(). В принципе, это идеологически верно: ведь в delay() же они тоже не запрещаются. Кстати, это дало возможность нормально работать функции millis(). Также, слегка поправили micros(), чтобы она возвращала корректные данные и внутри прерывания тоже.

3. Теперь можно включить и выключить генерацию акустического тона:

void tone(uint8_t _pin, unsigned int frequency, unsigned long duration);
void noTone(uint8_t _pin);

Под генерацию тона можно использовать какой-либо один пин, зато звук у нас будет аппаратный (фоновый) - соответствующим способом будет запрограммирован свободный таймер и активирован его обработчик прерывания. У MEGA свободных таймеров больше, но пока она также ограничена одним доступным - может быть, это когда-нибудь изменят.

4. В MEGA можно использовать аналоговые пины 8-15. А всего-то надо было заменить в строчке

ADMUX = (analog_reference << 6) | (pin & 0x07); 

..0x07 на 0x0f.

Но, как говорится - все ошибаются, и это нормально.

5. Наконец-то можно выводить вещественные числа с заданной точностью:
void print(double, int = 2);    
void println(double, int = 2);

На существующий код это влияния не окажет, потому что новый параметр (число цифр после точки) объявлен по умолчанию двум. И ведь самое обидное, что это уже  умеет Print::printFloat(double number, uint8_t digits), она остается прежней. Положительный момент - излишество не займет много места в памяти программ.

Небольшие изменения в самой IDE:

  • нажатие Shift во время Upload или Verify/Compile делает вывод ошибок более информативным;
  • чествование Serial Monitor продолжается: теперь у него не только отдельное окно, но и собственная горячая клавиша;
  • сделан очередной шаг по защите базовых каталогов. Теперь можно унести все модификации файлов hardware/arduino в SKETCHBOOK/hardware и больше не перетаскивать их при обновлении ArduinoIDE. Обычно, первым страдает boards.txt.  Но в теперь SKETCHBOOK/hardware/figuino/boards.txt будет благополучно объединена с arduino-0018/hardware/arduino/boards.txt. В целом, это позитивный шаг, облегчающий жизнь Arduino-совместимых плат, например того же Sanguino.

Ну и прочее - багофиксы в Firmata и LiquidCrystal, небольшие улучшения в версии для MacOS.

Как всегда - качайте ArduinoIDE по адресу http://arduino.cc/en/Main/Software и помните: это абсолютно бесплатное программное обеспечение! Но раз уж скачали бесплатно - обязательно что-то сделайте и поделитесь с другими: так вы внесете свой посильный вклад в этот знаменитый проект!

Комментариев нет:

Отправить комментарий