?

Log in

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

eddy_em


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


STM32 & rotary encoder
Костерок
eddy_em
Сниппеты от ST — очень классная штука! Читал я даташит, читал, но со всеми этими опциями черт ногу сломит! Зато взял готовый сниппет — вуаля, заработало!

Правда, на один щелчок энкодера насчитывает 4 импульса (т.к. счет идет по всем фронтам, но это и к лучшему — можно повысить точность). В ARR можно занести какое-нибудь значение и разрешить прерывание по UEV, в этом случае каждые ARR+1 импульсов будет срабатывать прерывание, где можно выставить какой-нибудь флаг. Ну или выполнить какие-нибудь действия, что удобно, если энкодер стоит на валу шаговика: один таймер просто тактирует, в ARR заносим требуемое количество шагов, выставляем направление счета в зависимости от направления вращения, а как сработало прерывание, отключаем тактирование шаговика.

promo eddy_em january 20, 18:17 Leave a comment
Buy for 10 tokens
Пока проводил опыты с чиллером (графики позже выложу), почти закончил свою часть документации. Табличку с настройками драйверов ШД сделаю, когда буду в очередной раз разбирать прибор (забыл сразу эти данные куда-нибудь схоронить). Можно сразу скачать PDF, чтобы не клонировать себе всю репу.

Кототроллер на DMA
Костерок
eddy_em
Сейчас, придя с работы, решил поиграться с DMA — не получится ли его использовать для создания различных эффектов. Спойлер: если и делать эффекты, то явно не на SG-90 с их жуткой динамической характеристикой, отсутствием обратной связи и медлительностью...

ПродолжениеCollapse )

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

Ну почему нельзя было просто выложить стилевой файл и написать: "оформляйте в латехе, используя наш стилевой файл"?
Идиотизм какой-то! О какой науке можно говорить, если народ даже компьютерами пользоваться не умеет по назначению?

Разные поделки
Костерок
eddy_em
Вчера сделал тестовую плату для CH552G:
Вид спереди

А вечером занялся управлением серводвигателем SG-90 при помощи STM32F030, сегодня сварганил "кототроллилку" (ссылки на видео — дальше).
ДальшеCollapse )
P.S. Оказалось, что залить видео из огнелиса на тытрубу невозможно. Перезалил хромым. короткое видео, длинное видео.

Мышь+клавиатура на STM32F103
Костерок
eddy_em
На основе рабочего кода того же самого эмулятора клавомыши под STM32F0x2 и свежего USB CDC сделал
USB-HID для STM32F103. На "склеивание" двух монстров ушло почти 2 часа.
Теперь можно с чистой совестью забросить STM32F103 в самый дальний ящик и забыть о нем надолго.
Tags: ,

USB CDC на STM32F103
Костерок
eddy_em
Все-таки, вымучил я CDC для этого МК. Конечно, если сравнить с STM32F042, вообще непонятно, для чего нынче люди используют F103: периферия никакущая, уйма багов, в общем, через одно место его создавали, похоже. Получился эдакий первый блин комом. Похоже, из-за того, что он такой дерьмовый получился, ST не вставляет китайцам палки в колеса и позволяет их клепать в бешеных масштабах и чуть ли не за полбакса продавать!

Read more...Collapse )

Вундервафля
Костерок
eddy_em
Меня долго душила жаба, но таки удушил ее я и купил за 11 баксов на али переходник LQFP48 на DIP. Давно хотел сделать простую приспособу, при помощи которой можно было бы без пайки работать с микроконтроллерами в этом корпусе. STM32F0x2 и STM32F103 по ногам практически совпадают (как впоследствии оказалось, не на столько, на сколько бы хотелось ☹).
Железяка за работой

Ну и, конечно, файлы на гитхабе: схема и трассировка самой платы, код для STM32F0x2 (полностью рабочий) и зачатки кода для STM32F103.
Read more...Collapse )

Проблема с пинами PA13..PA15 на STM32F103
Костерок
eddy_em
Бьюсь-бьюсь, да что-то не выходит! Сделал "вундервафлю" (про нее позже напишу) для работы с STM32F0x2 и STM32F103 в LQFP48 без пайки. Проверил все 10 STM32F072, купленных на али — все работают (как ни странно), да еще и dfu-util почему-то 128кБ флеша у них показал вместо положенных 64...
Стал модифицировать прошивку для работы с STM32F103. И тут-то выползла засада: у него на PA13..PA15 висит нафиг не нужный SWD/JTAG, а я на "вундервафле" на PA13 повесил внешнюю подтяжку USBDP (т.к. у F103 внутренняя отсутствует), а на PA14/15 — кнопки! Вот такой код
static void gpio_setup(void){
    // Enable clocks to the GPIO subsystems, turn on AFIO clocking to disable SWD/JTAG
    RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN;
    // turn off SWJ/JTAG
    AFIO->MAPR = AFIO_MAPR_SWJ_CFG_DISABLE;
    // turn off USB pullup
    pin_set(GPIOA, 1<<13);
    // Set leds (PA0/PA4) as opendrain output
    GPIOA->CRL = CRL(0, CNF_ODOUTPUT|MODE_SLOW) | CRL(4, CNF_ODOUTPUT|MODE_SLOW);
    // Set buttons (PA14/15) as inputs with weak pullups, USB pullup (PA13) - opendrain output
    GPIOA->ODR = (1<<14)|(1<<15); // pullups
    GPIOA->CRH = CRH(13, CNF_ODOUTPUT|MODE_SLOW) | CRH(14, CNF_PUDINPUT|MODE_INPUT) | CRH(15, CNF_PUDINPUT|MODE_INPUT);
}

не спасает: почему-то ни кнопки не работают, ни подтяжка... Буду гуглить дальше, хотя, вроде бы, требовалось всего лишь отключить ненужные интерфейсы, предварительно затактировав шину AFIO.

UPD: отбой, это я нарукожопил в инициализации uart:
GPIOA->CRH = CRH(9, CNF_AFPP|MODE_NORMAL) | CRH(10, CNF_FLINPUT|MODE_INPUT);

(вместо |= поставил =, в итоге настройки "слетали" в дефолт).

Теперь ковыряюсь с STM32F103. Оказалось, что у него на PA4 нет вывода TIM14CH1, пришлось просто мыргать вторым светодиодом тоже. До USB пока далеко — пытаюсь с АЦП разобраться, что-то не выходит пока.
Код под STM32F103.

Мини-ремонт
Костерок
eddy_em
Празднички что-то подзатянулись. И решили мы купленные еще в январе обои наклеить на ободранную кошаками стенку. Еще одной проблемой было то, что современные обои — какой-то прозрачный мрак! А уж тот флизелин, что мы брали в зал, вообще кошмарен! И вот самую видную стенку было решено оклеить виниловыми обоями.
Изначальный вид стены после снятия обоев.

Еще фотографииCollapse )

libmmpp
Костерок
eddy_em
Так как мы с Тимуром решили, что управление MMPP надо в корне переделать на основе "настоящей" клиент-серверной архитектуры, для облегчения жизни Тимуру я написал библиотеку, которая сочетает в себе все возможности HSFW_management и MMPP_control (в дву примерах к библиотеке).
Опакетил ее, но с этим, конечно, намучился: все не мог понять, чего оно у меня примеры не ставит по emerge libmmpp при активном флаге examples. Косяк был в CMakeLists.txt: я там проверял флаг на равенство 1, а на самом деле он равен "yes". Просто выкинул проверку (все равно либо флаг установлен, либо нет).
Теперь можно будет заняться чем-нибудь другим. Например, написать уже библиотеку для веб-морд (на основе вебсокетов и БД в sqlite): полуметровые робото-телескопы сгниют скоро, а так не роботизированы до сих пор...