Category: технологии

Category was added automatically. Read all entries about "технологии".

Одновременное использование двух ST-Link

Возникла необходимость подцепить к биглбону сразу два ST-Link программатора для прошивки и отладки сразу двух девайсов.
Прикупил дешевых китайских ст-линков


Как заюзать одновременно пару ст-линков понятно (например из статьи).
Но возникла трудность получения серийного номера каждого из ст-линков (так как серийник бинарный и команда "lsusb -v" выводит его коряво).
Помогла утилитка st-info из состава опенсорсного решения Stlink Tools.

Получаем для каждого из ст-линков его серийный номер в формате, который потом можно скормить OpenOCD


И вставляем серийник в конфигурационный файл OpenOCD


Не забываем в конфигурационных файлах для разных инстансов OpenOCD указать разные прослушиваемые порты.

Управление ESC по шине i2C

/* Дабы не забыть самому */

Для начала прошивка контроллеров
Берем исходники отсюда
Компилятор avrasm я взял отсюда http://www.vfx.hu/avr/download/avrasm2.zip
Распаковываем и прописываем в переменную окружения PATH
Правим Makefile исходников контроллера
Заменим компилятор avra на avrasm2
В переменной ALL_TARGETS оставляем только необходимую нам прошивку (в моем случае afro_nfet.hex)
Делаем копию файла tgy.asm и переименовываем ее в afro_nfet.asm
Правим исходник, устанавливая значение MOTOR_ID в необходимое нам значение
качаем
Здесь прямая ссылка (иначе придется регистрироваться на сайте Atmel чтобы получить эту ссылку)
Добавляем в PATH C:\Program Files\Atmel\AVR Tools\AVR Toolchain\bin
запускаем make в директории с исходниками контроллера
получаем файл с прошивкой afro_nfet.hex
Чтоб не париться с добыванием аврдуде, качаем прошивальщик от микрокоптера
Подготовка arduinousblinker
Идеально заюзать Turnigy USB Linker, но если его нет, то можно его заменить любой ардуинкой.
Прошиваем ардуинку скетчем, который берем отсюда
Вдуваем прошивку в контроллер

Юзаем площадки i2C


фьюзы не трогаем
Сначала подаем питание на ардуинку, а потом на контролер.
C:\Projects\tgy>C:\Users\alex\Downloads\kkmulticopterflashtool_0.72\lib\avrdude\
windows\avrdude.exe -C C:\Users\alex\Downloads\kkmulticopterflashtool_0.72\lib\a
vrdude\windows\avrdude.conf -p m8 -P COM11 -c arduinousblinker -b 19200 -B 8 -e
-U flash:w:afro_nfet.hex

Далее для остальных контроллеров
Удаляем файл прошивки afro_nfet.hex
правим исходник, устанавливая следующий номер мотора
собираем прошивку
прошиваем
просмотр на шине и управление
при помощи Bus Pirate
Давно купил и валяется, хотелось опробовать
команды баспирата для работы с шиной i2c
устанавливаем скорость порта баспирата 115200
Серый на SDA
фиолетовый на SCL
Зеленый на +5 для пулап резисторов
черный на массу.




поддержка Bitbang Mode
однобайтовые команды для работы в бинарном режиме
В репозитарии есть пример работы с баспиратом посредством Binmode написанный на C#
Но в том примере нет работы по i2c
дописываем класс и делаем простое приложение

не активируется, пока не получит 32 нуля.
Газ от 1 до 247

Промывка мозгов ATmega2560 на плате CRIUS ALL IN ONE PRO

Все что записано ниже (применительно к задаче - вытрусить прошивку мегапирата из платы) можно выбросить.
Правильный рецепт тут.

Влил в плату прошивку мегапирата (хотелось летать по проложенному пути), но не понравилась мне софтина MissionPlanner жутко. Решил снова перепрошиться на полюбившийся MultiWii. Но не тут то было!
avrdude: stk500_2_ReceiveMessage(): timeout и хоть ты тресни.
Стало ясно, что перепрошит бутлоадер и лечить надо программатором.
Тут снова выручил старенький, добренький, дешевенький AVR910.

Но не сразу. Стал курить тему. Прошивать удавалось, но не фига не работало.
Несколько часов танцев с бубнами и результат тут.
Прошивку берем прямо из поставки ардуины
arduino-1.0.4-windows\arduino-1.0.4\hardware\arduino\bootloaders\stk500v2\stk500boot_v2_mega2560.hex
avrdude там же - arduino-1.0.4-windows\arduino-1.0.4\hardware\tools\avr\bin\avrdude.exe
(пришлось еще рядом положить файлик avrdude.conf взятый из hardware\tools\avr\etc и раскомментировать в нем строку с моим программатором в секции ATmega2560).

В итоге после нескольких неудачных попыток, полез курить вдумчиво.
И нарвался на две статейки.
Первая на русском "Исправляем ошибку avrdude: stk500_getsync(): not in sync: resp=0×00 в китайской Arduino Mega 2560" и вторая, спасшая меня, на английском "Notes on Arduino Mega 2560 boot loader".
Видимо рецепт первой статьи не работает, потому что перед заливкой бутлоадера, надо прошить фьюзы, снимающие защиту (а заодно и всю периферию от контроллера отключить).
Что и делается во первой строке следующих команд приносящих счастье:

arduino-1.0.4-windows\arduino-1.0.4\hardware\tools\avr\bin\avrdude.exe -v -p atmega2560 -c avr910 -P com9 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD8:m -Ulfuse:w:0xFF:m

arduino-1.0.4\hardware\tools\avr\bin\avrdude.exe -v -p atmega2560 -c avr910 -P com9 -Uflash:w:stk500boot_v2_mega2560.hex:i -Ulock:w:0x0F:m

После этого полетный контроллер ожил и в него удалось снова вдуть MiltiWii.
Бинго! :-)