?

Log in

balmerdx
Прогресс он необоримо движется вперед. Кто-то еще использует Atmega8 и доволен жизнью. Кто-то (как я) перешел на STM32 и тоже более менее доволен периферией, дешевизной и предоставляемой мощностью процессора.
Но пргресс уже далеко впереди.Collapse )
 
 
balmerdx
07 January 2017 @ 10:05 pm
В свое время зарекся иметь дело с резисторами/конденсаторами 0402. Мелковаты они для меня. Да и место не так просто при помощи их сэкономить по сравнению с 0603 типоразмером.

Однако места на платах вечно не хватает. Стал смотреть на сборки резисторов 8P4R 0402.


А что? - они очень даже хороши! Шаг между выводами аккурат 0.5 мм как у самых ходовых микросхем. Очень часто надо 3-4 одинаковых номинала на ножки микросхем посадить. Даже если требуется 3 номинала, то такая сборка экономит пространство на плате.
 
 
balmerdx
06 January 2017 @ 09:01 pm
Примерно полтора года назад стал переходить от Eagle в KiCAD. Eagle и KiCAD, если кто не в курсе, это такие программы для рисования схем и разведения плат.

Eagle хорош, но в его бесплатной версии есть несколько ограничений. Ограничение на размер платы 100x80 мм. Ограничение на количество сигнальных слоев (только два слоя). Невозможность сделать merge двум проектам.

Из плюсов Eagle - довольно большое количество библиотек элементов. Но по факту пользы от этого нет, т.к. все современное приходится все равно рисовать самому.

У KiCAD по факту знааааачиительно больше плюсов. Основной - это отсутствие ограничений. И вот таки сегодня настал тот день, когда пришлось объединять две платы в одну. Тадам!



В KiCAD-е это делается легко и непринужденно. И таки мне в KiCAD удобнее схемы рисовать, потому как shortcut более продуманные.
 
 
balmerdx
02 January 2017 @ 04:16 pm
Неожиданно оказалось, что у меня завалялось парочка CP2102. Что-ж, развел плату, вытравил. В этот раз получилось крайне удачно.



Но как всегда, с новой железкой почему-то много возни, и заработала она соовсем не сразу. Причина - в старом тестовом проекте одна из ножек UART была заремаплена на PA14. Тупил часа два, пока не решил таки тщательно посмотреть на код. Удивление было то еще, на уровне "как только додумался до такого?". Впрочем, TSSOP20 ответ на этот вопрос.

Еще оказалось, что при питании микроконтроллера STM32F030 от 3.3 V приходящего от CP2102 не всегда пишется Flash микроконтроллера. Подозреваю, что это из-за того, что реальное напряжение 3.47 V. Но может быть причина и другая.

Одна из задач - это протестировать CTS/RTS выводы CP2102. Тут меня тоже ждал косяк. Написал код и стал думать, как бы забить очередь так, чтобы CTS или RTS таки сработали. При baudrate=500000 (а это максимум, что тянет STM32F030) не получилось придумать случая, когда будет проблема с производительностью. Поэтому видимо буду софтварно busy отсылать, если устройство ответить не может.

Про плюсы CP2102 по сравнению со встроенным вариантом COM порта от STM32. Под Windows есть драйвера, и она автоматом распознается. Под Linux эта микросхема распознается именно как Vitrual COM port. STM32 сэмлик распознавался как модем, из-за чего система пыталась его как модем инициализировать, а это неудобно.

С PL2303 была другая засада. У меня они были "пиратские", поэтому новые драйвера под Windows распознавали их как пиратские, и прописывали VID & PID = 0.
 
 
balmerdx
23 December 2016 @ 11:51 am
Попробовал заказать печать на 3D принтере переднюю панельку, вот что получилось (справа старый вариант).


А это вблизи, чтобы видно было качество поверхности.


Цена печати 550 руб, но надо было еще "добить заказ" до 1000 руб и еще пересылка 260 руб.

Пробовал заказать в местном университете, но там так дооолго отвечали, что забил на это дело.

Теперь могу смело говорить, что бюджетная 3d печать - гавно!

Надо будет попробовать заказать фрезерование в местной рекламной фирме, видимо качество будет лучше. Тем более, что там поверх можно будет сразу напечатать полиграфию.

Дисплей 3.2 выглядит уже вполне уместно по размерам.
 
 
 
balmerdx
05 December 2016 @ 12:24 am
Понадобилась сигнализация, которая пищит при отключении сетевого напряжения. В кои-то веки сделал что-то, что заработало с первого раза и по размерам корпуса.
 
 
balmerdx
30 November 2016 @ 12:13 am
- Надо взять процессор. Для простоты возьмем STM32F405.

- Обязательно нужен дисплей, иначе ничего видно не будет. Возьмем например на распространенном чипе ILI9481.

- после этого подключаем дисплей к процессору. Для этого нужно всего 24 провода. Мы же хотим чтобы текст отобразился быстро? Хотим. Поэтому параллельная 16-ти битная шина.

- после этого читаем учебник по С. Ибо язык С простой, и для него есть компилятор под Cortex-M4 семейство процессоров. Тут надо сделать важное отступление. Есть опасные сектанты, которые будут рассказывать, что C#, JavaScript, Python, Lisp, Forth (нужное пожчеркнуть) проще в изучении. Некоторые ведутся, и потом долго ли, коротко ли - пишут компилятор с этого языка на ARM инструкции.

- после изучения языка С можно начать читать даташит на Cortex-M4 и компилировать простые примеры. Самый первый пример - наверняка будет мигание светодиодом. Некоторые даже называют это "Hello, World!" программой. Но лично я с негодованием отметаю такую интерпретацию. Где вы тут видите Hello? Где запятая? Где восклицательный знак?

- поэтому следующий этап - скачать первую попавшуюся графическую библиотеку/драйвер для дисплея. Если нашлась библиотека под Arduino и ILI9341 - не беда. На Arduino тоже пишут почти на C. У ILI9341 аж 4 первых символа совпадают с ILI9481. Поэтому далее, при помощи молотка и какой-то там матери пытаемся это запустить на нашем железе.

- дальше вспоминаем, что мы не в каменном веке, поэтому надпись должна быть выведена по русски на utf-8, используя пропорциональные шрифты и с антиалиасингом

- и не забудьте настроить гамму на дисплее, иначе от вашего антиалиасинга не будет никакого прока!

 
 
balmerdx
12 November 2016 @ 08:03 pm
Тут из первых недостатков от альфа тестеров выявился недостаточный размер дисплея. Что ж, надо будет исправить в будущем. Прикупил по этому поводу 3.2 дюйма дисплеи на ILI9481 с разрешением 480x320. По сравнению с двухдюймовым ILI9341 выглядит вполне прилично по размерам.


Библиотека от ILI9341 подошла к ILI9481 с минимальными переделками. Единственное, почему то цвета стали инвертированными. Так и не понял причины. Добавил команду Enter_invert_mode (21h) и успокоился.

Подключил по 16-ти проводам, пока софтово дергаю посылаю данные. Но даже в таком режиме вывод на экран этих всех буковок - 63 милисекунды. Что вполне достаточно.

PS: Немного оптимизировал код. Когда данные передавались по SPI эти оптимизации были неактуальны, т.к. тормозила именно передача по SPI. Теперь отрисовка всего этого текста на экран занимает 9 милисекунд! Неплохо, очень даже неплохо.
 
 
balmerdx
03 November 2016 @ 10:57 pm
Введите имя героя калибровки. Пользуемся старыми, проверенными решениями.

 
 
balmerdx
Мне, как программисту и разработчику компьютерных игр приходится немало писать кода на работе. А еще часто приходится слышать и наблюдать, как какая нибудь простая фича выливается в огроменное количество кода. Это получается из за сложных и противоречивых требований (не буду углубляться в причину возникновения такой ситуации). Естественно на работе используется C++11 с кучей новых фич. С GUI библиотекой, и т.д. и т.п.

Но еще пишу дома свой pet-project, на C (без плюсов). И там тоже есть главное меню. Код меню выглядит как-то так:


Здесь нет виджетов, нет сообщений и обработчиков сообщений. Но это меню, и оно работает.

PS: Да, надо будет добавить еще status bar с хелпом о каждом пункте. Это будет еще 6-7 строчек кода. Возможно даже в отдельной функции...