В пятницу, 29.01.2010 вышел очередной релиз ArduinoIDE 0018. На этот раз, хоть и после длительного перерыва, но никаких грандиозных нововведений. Сплошные грандиозные багфиксы. Традиционно, подтянулись к Processing 1.0.9.
Начнем с куска, который присутствует всегда - с библиотеки-ядра (Arduino core).
1. Теперь последовательный порт умеет выключаться. В самом деле - а вдруг оно больше не пригодится? Поэтому, появилась Serial.end():
cbi - это аналог avr-gcc-шного макроса сброса бита в управляющем регистре МК. После вызова Serial.end() уже ничто не вызовет передачу или прием данных по последовательному порту.
2. Внутри delayMicroseconds() прерывания больше не запрещаются, перед циклом задержки убран cli(). В принципе, это идеологически верно: ведь в delay() же они тоже не запрещаются. Кстати, это дало возможность нормально работать функции millis(). Также, слегка поправили micros(), чтобы она возвращала корректные данные и внутри прерывания тоже.
3. Теперь можно включить и выключить генерацию акустического тона:
Под генерацию тона можно использовать какой-либо один пин, зато звук у нас будет аппаратный (фоновый) - соответствующим способом будет запрограммирован свободный таймер и активирован его обработчик прерывания. У MEGA свободных таймеров больше, но пока она также ограничена одним доступным - может быть, это когда-нибудь изменят.
4. В MEGA можно использовать аналоговые пины 8-15. А всего-то надо было заменить в строчке
..0x07 на 0x0f.
Но, как говорится - все ошибаются, и это нормально.
5. Наконец-то можно выводить вещественные числа с заданной точностью:
На существующий код это влияния не окажет, потому что новый параметр (число цифр после точки) объявлен по умолчанию двум. И ведь самое обидное, что это уже умеет Print::printFloat(double number, uint8_t digits), она остается прежней. Положительный момент - излишество не займет много места в памяти программ.
Небольшие изменения в самой IDE:
Ну и прочее - багофиксы в Firmata и LiquidCrystal, небольшие улучшения в версии для MacOS.
Как всегда - качайте ArduinoIDE по адресу http://arduino.cc/en/Main/Software и помните: это абсолютно бесплатное программное обеспечение! Но раз уж скачали бесплатно - обязательно что-то сделайте и поделитесь с другими: так вы внесете свой посильный вклад в этот знаменитый проект!
Начнем с куска, который присутствует всегда - с библиотеки-ядра (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 и помните: это абсолютно бесплатное программное обеспечение! Но раз уж скачали бесплатно - обязательно что-то сделайте и поделитесь с другими: так вы внесете свой посильный вклад в этот знаменитый проект!