24.02.2009

PulseIn() в Arduino

Немного повозившись со своим sketch-ем, я пришел к выводу, что не работает инициализация однопроводной шины. Внимательно присмотрелся - а там стоял вызов PulseIn:

if (!pulseIn(dataPin,HIGH,70)) return false;
if (!pulseIn(dataPin,LOW,280)) return false;

Прочитал внимательно релиз-ноты, вот что изменилось:

Modifying pulseIn() to wait for a transition to start timing (i.e. ignoring any pulse that had already started when the function was called)

То есть, говоря по-русски, теперь PulseIn ждет начала импульса, и злостоно игнорирует ситуацию, когда ожидаемый уровень уже установлен (не запускает таймер). Заменил на строчку:

pulseIn(dataPin,LOW,70);

... и всё тут же заработало! Так что релиз 0013 - вполне жизнеспособный (ну кто бы сомневался?)

17.02.2009

ATmega328P-20PU и Arduino

Пока все тривиально: прошил arduino bootloader в новенький чип ATmega328P-20PU, выбрал новый target, компильнул и залил:



Как видите, 30720 - это размер доступного пространства памяти программ (в байтах :), где теперь можно резвиться. Кстати, а почему ATMEL не выпустила до сих пор чип ATmega648P?... А ведь было бы более чем логичное продолжение такой популярной серии МК...

Как всегда, что-то я не совсем правильно написал в своей программе-градуснике (видно не зря я не спешил ее публиковать): использовал собственную (во многом интуитивную) реализацию однопроводного интерфейса. Сейчас попробую, сколько по времени будет стоить переход на существующую.

12.02.2009

Новый target в Arduino IDE

Вот так теперь выглядит меню выбора цели компиляции sketch-а в Arduino IDE:



Действительно, добавили ATmega328P.

Кстати, один экземпляр этого чипа все-таки мне приехал, на 2 недели раньше срока - так что завтра я уже смогу опробовать свои программы на новом процессоре и поделиться ощущениями.

Хотя, чего особоенного? Ну, больше памяти...

10.02.2009

Новый релиз Arduino IDE

Вышел новый Arduino IDE 0013. Список изменений весьма внушительный:

  1. Официальная поддержка ATmega328! Наконец-то: раньше надо было для этого брать релиз 0011 и обрабатывать напильником, но благодаря, в том числе, ladyada, оно теперь поселилось в основной ветке;
  2. Фиксы в Ethernet library: каждому исходящему соединению присваивается новый порт (!), больше нет проблем с использованием пинов 9 и 8 (на которых обитает неиспользуемый в Ethernet Shield кардридер);
  3. Добавили вывод чисел с плавающей точкой в Print;
  4. Новый тип word и функции word(), bitRead(), bitWrite(), bitSet(), bitClear(), bit(), lowByte(), и highByte() - ищите их на странице с расширенным списком;
  5. Пофиксили pulseIn, random и работу PWM на 5 и 6 пине.
Надо попробовать эту штуку в работе. Особенно на процессоре ATmega328P, который недели через две меня посетит в виде посылки.