07.09.2012

Ангел для Петьки

Сегодня хочу предложить статью Andrew Doynikov - о том, как превратить Angelino в программатор STK-500 by Petka.

Сломался программатор STK500 by Petka. Можно было изготовить новый, но в наличии не оказалось FT232RL, зато был переходник USB-TTL, купленный давно и используемый во многих проектах для тестирования и отладки:


Также под рукой оказалась плата Angelino - самая дешевая, наверное, Arduino-совместимая плата - без USB:


Решено! Будем делать из этого программатор.

Если вниматнльно взглянуть на схему Angelino, практически - это половина программатора. 
Вот что потребуется изменить:
  • кварц 16 МГц надо заменить на тот, что используется в STK500 by Petka, я поставил 14.7456 МГц
  • убрать линию "Автосброса", которая присутствует на всех Arduino-совместимых платах;
  • добавить несколько резисторов, светодиод и разъем для программирования целевого контроллера.


На схеме сохранена нумерация элементов из оригинальной схемы STK500 by Petka, красным отмечены пины Angelino (например, А0 - аналоговый вход, D10 - цифровой).

Дополнительные элементы и разъем программирования было удобно разместить на отдельной Shield-плате, которую я развел в Sprint Layout и изготовил с помощью ЛУТ:



Далее, в Angelino устанавливается контроллер ATmega8-PU, через ICSP-разъем туда загружается прошивка для кварца 14.7456 МГц - от уважаемого Леонида Ивановича, который улучшил и оптимизировал ее. После этого основная плата стыкуется с полученной Shield-платой, подключается USB-TTL переходник (в процессе подключения к Windows может понадобиться установить драйвера FTDI).




Для проверки надо подключиться к программатору гипертерминалом, он должен сразу же ответить. После этого можно смело использовать его с AVR Studio.



Подводя итог: после двух часов неспешной работы - получен прекрасный и быстрый программатор. Мои благодарности автору программатора - Petka и Леонид Ивановичу за доработанную прошивку.

Материалы:

15.08.2012

RiP

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


Мы познакомились на почве совместного увлечения Ардуино и периодически пытались привести к общему знаменателю наши взгляды. Он верил, что на основе Ардуино можно построить открытый PLC (программируемый логический контроллер),  и даже завел на эту тему блог, в который я успел написать пару статей. В ответ он нашел время написать для этого блога статью Сеть 1-Wire в "полевых условиях", что было для него непросто - учитывая невероятную занятость на основной работе.

Юрий Геннадьевич всегда был приверженцем движения Open Source, смело использовал открытые разработки и, самое главное, умел вдохновлять и заражать своим оптимизмом, целеустремленностью. Именно благодаря ему я поверил и осознал, насколько важно делиться своим опытом и знаниями с другими, как это может повлиять на окружающий нас мир. 

16.07.2012

Launchpad и ArdhuinoIDE

Вчера из сообщения в блоге Hack-a-Day с интересом узнал о проекте Energia - ArduinoIDE для работы... с Launchpad!



Конечно, не все пока там гладко - на текущий момент насчитывается как минимум 18 проблем, в основном народ просит прикрутить библиотеки и починить Linux-дистро (его, кстати, можно временно скачать по ссылке в описании проблемы).

Тем не менее, с дистрибутивом под Windows все ОК, и его вполне можно опробовать в работе.


Технически, Energia - это форк на github-е от ArduinoIDE 1.0, поэтому выглядит всё более, чем привычно, разве что в красных тонах.


Как видите - в качестве типов плат сразу перечисляются совместимые с LaunchPad MSP, а в качестве программатора - единственный rf2500.

Все примеры на месте, но из библиотек адаптировано всего три:

  • SPI;
  • Wire;
  • TimerSerial
Последняя, впрочем - это вариант HardwareSerial, которая и так уже входит в ядро Arduino для ATMEL.

Скетчи, разумеется, пишутся по-прежнему на Wiring. Синтаксис за пределами Wiring тоже остался вполне похож - используется msp430-gcc 4.6.3, с самыми последними патчами. Карту распределения пинов можно найти в единственном файле-варианте: 

                      +-\/-+
               VCC   1|    |20  GND
         (A0)  P1.0  2|    |19  XIN
         (A1)  P1.1  3|    |18  XOUT
         (A2)  P1.2  4|    |17  TEST
         (A3)  P1.3  5|    |16  RST#
         (A4)  P1.4  6|    |15  P1.7  (A7) (SCL) (MISO) depends on chip
         (A5)  P1.5  7|    |14  P1.6  (A6) (SDA) (MOSI)
               P2.0  8|    |13  P2.5
               P2.1  9|    |12  P2.4
               P2.2 10|    |11  P2.3
                      +----+

Таким образом, чтобы, например, установить высокий уровень на пине P1.1, можно написать digitalWrite(P1_1, HIGH). Можно обращаться к пинам и по номерам, в следующем соответствии с символическими:


Символическое имяНомер пина
P1_0, RED_LED2
P1_13
P1_24
P1_3, PUSH25
P1_46
P1_57
P2_08
P2_19
P2_2, TEMPSENSOR10
P2_311
P2_412
P2_513
P1_6, GREEN_LED14
P1_515

Тут стоит сразу учесть, что P2_X доступны только для контроллеров в 20-контактном исполнении, и для 14-контактных они будут отсутствовать, создавая разрыв в нумерации. С другой стороны, позиционность будет сохранена - т.е. при замене 14-контактного на 20-контактный в скетче не понадобится менять ровным счетом ничего. 

Для избранных пинов доступен аппаратный ШИМ. Пины 3, 4, 14 доступны всегда, для МК в 20-контактном корпусе добавляются все пины P2_X. Есть и аналоговые пины, так что если на кристалле есть АЦП, будет работать analogRead().

Интересно? ;) Если да, то изучите wiki, закажите себе LaunchPad и дерзайте!

Я практически сразу обратил внимание на то, что реальная задержка, создаваемая delay() оказывается в два раза короче, чем указано. Возможно, это как-то связано с тактовой частотой - судя по boards.txt скетчи компилируются в расчете на 16МГц.

Так или иначе, уверен - Роберт Весселс (автор проекта) будет признателен за любую помощь. Если вы находите LaunchPad более привлекательным - помогите ему с адаптацией ArduinoIDE: уверен, что тогда число вовлеченного народа должно значительно возрасти ;) 

04.07.2012

ATmegaU R2


Плата ATmegaU,  выпущенная в свое время исключительно ради эксперимента и разошедшаяся почти сразу, возвращается во второй ревизии R2

  1. Теперь она поставляется только с MCU ATmega16u2 - для тех, кто пишет собственные прошивки это очень существенно - в предыдущем варианте ATmega8u2 свободной памяти было мало, и комбинировать прошивку USB-TTL еще с чем-то было тяжело :(
  2. Добавлен отключаемый резистор 10К на линии DTR, притягивающий ее к GND. Сделано по аналогии с Freeduino ONE / Arduino Uno R3: освобождает от необходимости сначала замыкать DTR на землю, и, не отпуская, нажимать сброс. Теперь сразу переходим в режим DFU единственным нажатием на сброс. При желании резистор отключается (solder-джампер с противоположной стороны).
См. также описание ATmegaU в магазине.




02.07.2012

ADK 2012

Недавно в официальном блоге Arduino появилось сообщение о том, что на очередной конференции Google IO была представлена новая плата ADK 2012, уже базирующаяся на Arduino Due:


Официальный выход собственно Arduino Due запланирован на этот год, вместе с новой  ArduinoIDE, которая будет способна генерировать код под ARM. Пока что можно полюбоваться на фото ограниченного выпуска для разработчиков:

Фото в этом посте лицензированы под CC BY-NC-SA.