?

Log in

No account? Create an account
Костерок

eddy_em


Емельянов Эдуард Владимирович


Entries by category: it

[sticky post]Содержание
Костерок
eddy_em
Здесь - краткое содержание моего графоманстваCollapse )

promo eddy_em 12:33, saturday 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:

Как нонче официально "прошивку" принято обзывать?
Костерок
eddy_em
Что-то голову ломаю: в неофициальной технической документации я просто пишу "исходники прошивки МК смотри в репе на гитхабе", а что написать в официальной? Если писать "исходные коды микрокода МК", получается какая-то тавтология...
Кто что пишет в таких случаях?

Косяк с эмуляцией PL2303
Костерок
eddy_em
Я уже писал, что изредка у меня возникают такие ошибки:
pl2303 ttyUSB0: pl2303_set_line_request - failed: -32

Но на работу они не влияют, и я не обращал внимания, пока не попробовал железку приконнектить к игровой приставке. Не получилось: прошивка считает ее "нераспознанным устройством" и работать с ней отказывается. А вечером я попробовал приконнектить хронометр к смартфону. Попробовал несколько терминальных клиентов — все сообщают, что устройство не опознано (но при этом к китайскому PL2303 нормально подключаются).
Шайтан, однако! Я уже час сижу в логи wireshark гляжу. И не вижу никакой разницы между моей железкой и китайской PL2303! Но при этом в dmesg от китайской ошибок нет, а от моей есть! Возможно, что-то не то с таймингами. Надо еще покорпеть...

UPD, все починил. Как это часто бывает, "методом Монте-Карло"... Обновленный код лежит на гитхабе. На игровых приставках не проверял, но андроид не ругается.

Оптимальная эмуляция EEPROM во флеш-памяти STM32
Костерок
eddy_em
Работая над более свежей версией хронометра для разнообразных соревнований (пока что все еще на STM32, с ESP32 я немного поковырялся, испугался и забил до поры до времени), опять столкнулся с необходимостью сохранения настроек. Сначала взял свой старый сниппет, немножко подкорректировал (сниппет разрабатывался для STM32F0x2), но потом мне стало как-то неуютно от того, что из более чем 110кБ свободной флеш-памяти я использую лишь 1-2кБ. После поиска решений на разных форумах пришел к такому результату.
ДальшеCollapse )
Tags: ,

Да это ж просто [censored]!!!
Костерок
eddy_em
Заходим на гитхаб, а там...
> Microsoft is acquiring GitHub!

Просто слов нет! Такое хорошее репохранилище было… Сначала гуглокод скурвился, теперь гитхаб. У меня, конечно, есть клоны всех репозиториев на сосфорже, гитлабе и битбакете, но все это совсем не то.

Когда ж эти проклятые мелкомягкие загнутся?

Роботелескоп
Костерок
eddy_em
В пятницу разработчики прислали мне обновленную версию протокола работы с контроллером телескопа. Сегодня проверил — все работает, кроме сетевого соединения (но оно нам и не нужно).

Выложу краткую инструкцию по базовой установке RTS2, да буду помаленьку писать модуль управления совокупностью "телескоп+монтировка". В самой RTS2 нет поддержки 10micron, да и даже LX200 только на самом базовом уровне — надо будет переделывать и расширять.

Установка RTS2Collapse )

Об arm-none-eabi в генте замолвите слово...
Костерок
eddy_em
Три вечера бьюсь с установкой сей штуки на ноутбук. К сожалению, сразу, когда ставил генту, про gcc для STM32 забыл, поставил только на компьютер. Компьютер теперь живет своей гентой (т.к. слишком древний для обновления модулей nvidia, уже уйму пакетов на нем пришлось замаскировать), а crossdev, к сожалению, не создает бинарных пакетов, которые можно было бы перенести.

Итак, сначала я пробовал crossdev — после часа сборки получил невнятную ошибку. Обновил до 20160602 — не помогло.

ОК, устанавливаю crosstool-ng. Фигвам — куча ошибок. ОК. Сношу и ставлю "по-слаковски", сделав git clone. Другая проблема: не может найти elf2flt-21c6a41885ad544763ccd19883c1353f3b0b7a47.tar.gz. Я с трудом нагуглил один-единственный файл с таким именем. И тоже фигвам!

Ну, все. Буду пробовать напрямую скомпилять arm-none-eabi, содранный из репы. Если не выйдет — придется заново ставить генту (уж больно уже намаскировал)... Худший случай страшно представить, т.к. довести до ума бубунту — это МИНИМУМ МЕСЯЦ напряженной работы по вечерам (часа по 3-4).

Переход с сосфоржа на битбакет
Костерок
eddy_em
В связи с тем, что происходит с сосфоржем, я решил зеркалировать свои велосипеды на битбакет. Мой профиль.
Кое-что из сравнительно нужного (совсем уж мусор я не стал копировать), что было только на сосфорже, пришлось сначала завести на гитхабе. Зато битбакет умеет полностью копировать все проекты с гитхаба, очень удобно.
Потом осталось лишь в директории каждого проекта отредактировать .git/config, скопировав строчку url под именем pushurl и добавив аналогичную строчку для битбакета. Скажем, вот:
    pushurl = https://eddyem@github.com/eddyem/BTA_utils.git
    pushurl = https://eddyem@bitbucket.org/eddyem/bta_utils.git


Еще я попытался сделать зеркало на гитлабе, но так и не понял, как с ним работать по https: пробовал и eddyem, и Edward, и Emelianov в качестве имени пользователя в .git/config — ничего не проходило. А потом и вовсе гитлаб решил, что я ломаю пароль, и перестал пускать... В общем, черт с ним. Битбакет работает — и ладно!

UPD с гитлабом разобрался: оказывается, там регистр такой же, как был в оригинале на гитхабе (а не маленькими буквами все, как на битбакете). А в качестве имени пользователя почему-то фамилия, а не логин...

Псевдоаппаратный 1-wire на STM32
Костерок
eddy_em
Наконец-то дошли руки допилить "псевдоаппаратный" 1-wire (сосфорж,
гитхаб).
Реализация довольно простая: через таймер TIM2 и DMA, разве что сброс происходит через прерывание (но эта процедура выполняется один раз перед отправкой пакета данных, так что не страшно). Канал 4 таймера TIM2 используется одновременно как выход и вход: TIM2_CH4 работает в режиме ШИМ-выхода, а TIM2_CH3 — в режиме ШИМ-захвата. Соответственно, используются два буфера DMA: канал 7 DMA1 последовательно заполняет из буфера передачи регистр TIM2_CCR4 (этот регистр буферизуется, чтобы его содержимое обновлялось лишь по окончанию передачи предыдущего байта); канал 1 DMA1 по событию захвата CCR3 считывает содержимое TIM2_CCR3 в другой буфер.
По истечению захвата DMA генерирует прерывание, внутри обработчика которого отключается все ненужное и устанавливается флаг готовности принятых данных. Дальше уже обработчик анализирует буфер и выдает нужную информацию (использую простейший конечный автомат, который по завершению приема запускает функцию-обработчик, для нее выделена отдельная глобальная переменная).
Еще немного текстаCollapse )

Макетка для STM32F030
Костерок
eddy_em
Недавно пришел десяток STM32F030F4P6 — недорогих 32-битных МК в 20-ножечном корпусе. Т.к. в них нет USB (я бы взял F042 или F072, но такие МК на ибее еще не продаются), то чтобы не городить сопли, прислюнивая долларовый переходник на PL2303, я решил сделать макеточку, на которой сразу будет впаян и переходник (он же будет использоваться для программирования МК через bootloader).

Схемка вот такая:

14.07.28_11:22:38
Принципиальная схема


Вчера долго сидел, пытаясь развести дорожки на как можно меньшем размере платки. Не получилось. Пришлось удваивать количество штырьков, значительно увеличивая размер платы. Сказывается недостаток опыта разводки плат. Получилось вот что:

14.07.28_11:22:55
Разводка дорожек


К сожалению, домашний принтер я все никак не починю, надо будет на работе искать нормальный принтер (а там что-то все понакрылись медным тазом), на котором можно будет для ЛУТа негативы распечатать.

Для сверления плат я планирую собрать мини-станочек из старого CD-ROM'а. Жду, когда придут низковольтные H-мосты и Дарлингтоны. На них и каком-нибудь STM8 сделаю управление станком. Управлять подачей думаю при помощи педальки (вроде той, что управляет швейной машинкой): нажал педальку, сверло пошло вниз; отпустил — сверло пошло вверх.