AVRISPmkII на STM32F4Discovery

Изучал USB-библиотеку на STM32F4 и как побочный результат этой деятельности получился клон AVR ISP mkII.
В архиве hex прошивки и исходник.

Распиновка ISP (AVR):
PD7 — RESET
PB3 — SCK
PB4 — MISO
PB5 — MOSI

Распиновка PDI (XMega):
PB13 — CLK
PB15 — DATA

PE5 — 4 МГц меандр на всякий случай

Красная лампочка просто моргает, зелёная — при активности.
stm32f4discovery as avrispmkII

Вдруг просто надо будет что-то авровское прошить, а под рукой программатора нет. А так можно быстро сколхозить из весьма распространённой отладки. Номер версии ПО: 0x18.

ОС как библиотека

Иногда внезапно возникает необходимость сделать какую-то работу в коде программы в синхронном режиме — то есть, не конечным автоматом, а просто дожидаясь результата каких-то действий. Например, скачать http-страничку, или, того хуже, https-страничку.

Но и тормозить основной цикл тоже как-то не очень хорошо. На этот случай есть известное решение — ОС.

Но если требуется допилить уже существующий проект с минимальным вмешательством в остальной код?
Вот мне стало интересно сделать мини-ОС, которая подключается к проекту как библиотека. То есть, делаем вызов какой-нибудь функции os_Init() и получаем возможность создавать потоки, не вмешиваясь в работу основного цикла. Он продолжает работать, как будто никакой ОС и нет, просто иногда управление передаётся дополнительным потокам.



Читать дальше

Редактор шрифтов

Часто бывает надо поменять какой-нибудь символ в шрифте, добавить иконку или что-то такое, но квадратики в тетрадочке закрашивать лень, высчитывать номер байта и бита в гигантском массиве тоже… На такой случай и была сделана программка для редактирования шрифтов прямо в .c/.h файлах. Естественно, для тех форматов, которые попадались под руку — а то больно их много всяких.

Открыл файлик font14x8.c прям в папке проекта, поменял растр буковки — и сохранил. Прелесть.


Читать дальше

Работа с SDR-свистками на C# (RTL2832)

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

Меж тем, подключить свисток к программе на C# достаточно просто.


Читать дальше

Проблемы с программаторами Atmel AVR и их решение

Нежданно-негаданно в новом 2016 году, как минимум, на двух компьютерах с Win10 и Avr Studio 5.1 одинаковым образом перестали работать avr-программаторы от слова вообще. Клон avrispmkII и самый настоящий jtagice3.

Выглядит это так: программаторы видны в списке, но сделать с ними что-то не выходит. Появляется окошко «Unable to connect to JTAGICE3», а в логе появляются несколько строк об ошибке, самой информативной из коих является одна:
[ERROR] USB driver initialization failed with error 0x20000009.


Код ошибки 0x20000009 означает «No valid license». Имеется в виду, как я понял, атмеловская лицензия на драйвер Jungo. Лицензия эта в виде строки забита намертво в файле com_atmel_hil_usb.dll (найти её можно по строке Atmel_Norway). То ли срок у неё вышел (офигеть теперь), то ли драйвера все испортились из-за очередного обновления винды — неясно, но работать ничего не хочет.


Читать дальше

X-Rite Colormunki Photo

Понадобился на работе прибор для сравнения и, в перспективе, калибровки осветительных приборов. Причём не абы какой, а такой, чтобы можно было встроить в своё ПО для прогона разных тестов. Неудобно же делать вручную всё это в куче разных программ.
Купили калибратор: X-Rite Colormunki Photo (стоимость порядка 20к рублей). По идее он умеет калибровать разные устройства вывода: мониторы, принтеры. Ну и считывать цвета с бумаги в графические программы. Как это всё происходит и кому оно надо за такие деньги — не знаю.

Используя сторонний софт (Argyll CMS) прибор можно использовать как спектроанализатор — получить файлики с данными спектра или там же их и посмотреть. Но программы консольные, неудобные, да ещё и как-то коряво сделаны, что из внешних программ чтением/записью в стандартные потоки с ними не пообщаешься. А я так хотел их в С# прямо получать, без возни с файлами.

К слову, характеристики не впечатляющи по сравнению со специализированными приборами даже низшего уровня, но достаточны для начала:
  • Диапазон от 380 до 730 нм (только видимый);
  • Измеряется максимум 106 линий спектра (ширина линии примерно 3.3 нм);
  • Подключение через USB.

То есть с его помощью можно посмотреть спектр видимого света и даже рассчитать цветовую температуру (которой белые светодиодные ленты маркируются).


Читать дальше

Генератор .hex/.bin файлов из командной строки

Возникла задача назначать устройствам уникальные номера. Соответственно, нужно было изготавливать для каждого устройства свой еепром.
Студия может делать еепромы, но для этого проект надо пересобирать каждый раз, неудобно.

Пришлось написать программку, с помощью которой можно получать hex-файлы с нужным содержимым: hexnyan.



Читать дальше

Оболочка для прошивки готовых устройств через внешние консольные программы

Возникла потребность на работе прошивать партии разных устройств: одни такие, другие сякие. То железо чуть отличается, то код должен работать несколько иначе. Вариантов в итоге куча.
Поначалу прошивал из всяких авр студий, но ясно дело, что неудобно. Потом появилась авр студия 5.1 с первыйм cli в виде atprogram.exe. Я мог делать bat-файлы типа таких:
atprogram -t %4 -d %5 -i isp -cl 100khz write -fs --values %3
atprogram -t %4 -d %5 -i isp -cl 1250khz chiperase
atprogram -t %4 -d %5 -i isp -cl 1250khz program -fl -f %1
atprogram -t %4 -d %5 -i isp -cl 1250khz verify -fl -f %1
atprogram -t %4 -d %5 -i isp -cl 1250khz program -ee -f %2
atprogram -t %4 -d %5 -i isp -cl 1250khz verify -ee -f %2

Хватало какое-то время, но появились другие потребности: например, обновить в авр флеш, не трогая еепром (требуется изменить фьюзы, стереть, прошить, вернуть фьюзы). Или сгенерировать серийный номер внешней утилитой и зашить в еепром. Или ещё что.
А ещё проблема в том, что если какой-то этап не выполнен, то остальные выполнять не нужно. Но bat-файлу это не расскажешь.

Читать дальше