Русский
Русский
English
Статистика
Реклама

Stm8

Перевод Создание уникальных часов

31.10.2020 16:04:39 | Автор: admin


Все началось, когда мое внимание привлек старый светодиодный дисплей, лежащий в ящике среди мелочевки и запасных деталей. Он сохранился еще со времен древних 386/486 ПК и мог отображать частоту до 99 МГц. Когда он был установлен на системном блоке в те времена, он показывал только две скорости, обычную и турбо, эти скорости работы центрального процессора выбирались специальной кнопкой. Фишка была в том, что сами цифры были желтыми, а надпись MHz (горящие непрерывно) светились красным. Такая комбинация цветов мне понравилась. *
*В те годы частота процессора менялась специальной кнопкой Turbo, и эта кнопка присутствовала на системном блоке, а частота отображалась на таком светодиодном дисплее. Прим. Переводчика.

Тогда я задумался, а можно ли собрать на основе этого циферблата часы. Оперируя всего двумя цифрами, мне пришлось бы мультиплексировать часы и минуты. Я решил, что в таком случае могу отображать 12:34 как 12H, сопровождаемое 34М.

Была и еще одна особенность, а именно то, что часть с MHz состояла из всего 7 сегментов. М делилась на три сегмента, а именно на две боковые вертикальные палочки и центральную часть V. В H 2 вертикальные палочки также были отдельными сегментами, но центральная ее часть уже объединялась с верхушкой буквы z, чья нижняя часть < представляла последний 7-й сегмент. Это означало, что после H всегда будет отображаться тире, т.е. 12:34 будет показываться как 12H-, а затем 34M. Пусть это будет фишка.
Каждый сегмент MHz состоял из двух последовательно соединенных красных светодиодов с прямым напряжением 3,6В. Желтые же цифры были представлены одиночными светодиодами с прямым напряжением 1,9В. Очевидно, что такой семисегментник изготавливался индивидуально для производителя ПК. Именно поэтому вы и не сможете воссоздать такие часы, если только не отыщите аналогичный экран, сохранившийся с тех времен. Тем не менее при желании вы можете изменить ПО (по большому счету исключить код, обрабатывающий мультиплексирование часов/минут) под использование с удобным 4-значным дсиплеем.

Цель


Я собрал эти часы, чтобы решить следующие задачи:
  • Запрограммировать STM8, в частности STM8S103F6, в C при помощи SDCC и портированной стандартной библиотеки периферийных устройств (SPL).
  • Мультиплексировать часы и минуты на двух цифрах.

Подключение


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



Кстати, кнопки тоже от старого ПК, раньше они служили в качестве Resetа. Для подачи питания на 7805 стабилизатор я приспособил восстановленную зарядку от телефона Nokia.
Паять пришлось довольно много соединений, что неудивительно при переделке не мультиплексированного дисплея в мультиплексированный, поэтому я даже был рад, что собирал всего одну плату. В последствии тестирование показало, что помимо нескольких коротких замыканий и непропаев, была еще пара косяков: я думал, что у транзисторных драйверов посадочное место EBC, но оказалось, что ECB. Ну это же очевидно! Пришлось переподключать провода. Причем переподключать их пришлось не только здесь, потому что еще я перепутал два контакта дисплея, поменяв местами сегменты b и g второй цифры.
Тем не менее в итоге все получилось, и я подключил плату к Arduino для отображения в соответствии с заданными параметрами.


Схема

Программное обеспечение


SDCC (Small Device C Compiler ) поддерживает архитектуру STM8, и мне понадобились только определить ресурсы процессора STM8, например такие как регистры. Было интересно, почему они не поставляются вместе с SDCC. Не буду углубляться в подробности всего этого приключения, но в итоге выяснилось, что изначально ST не предоставляли включаемые файлы и библиотеки по подходящей для открытых проектов лицензии. В конечном счете они осознали свою ошибку, но к тому времени по интернету уже гуляло много обходных путей. Тем не менее существовал вариант портирования SPL в SDCC. Вы можете прочесть инструкцию по сбору SPL под Linux, чтобы получить включаемые файлы и библиотеку, к плюсам которых можно отнести: улучшенное самодокументирование кода в случае его излишней подробности, наличие проверки ошибок использования, а также то, что SPL для STM32 аналогична, т.е. при необходимости вы уже будете знать, как ее использовать.
Кроме того, я использовал протопотоки Адама Дункельса для обработки переключения.
Прошивка для часов на базе MCU имеет несколько подсистем. Далее я указываю исходные файлы С, обрабатывающие каждую из этих подсистем. Может оказаться полезным обратиться к исходному коду.

  • код, отвечающий за хронометраж (tod.c), который считает миллисекунды, секунды, минуты и часы;
  • таймер периодичности (tick.c), обрабатывающий сканирование цифр и опрос кнопок;
  • дисплей (display.c), получающий время и преобразующий его в массив из 7-сегментных байтов для отправки на порт вывода;
  • обработчик кнопок (button.c), считывающий состояние кнопок;
  • системный модуль (mcu.c), устанавливающий начальную конфигурацию;
  • основная программа (clock.c), связывающая все модули.

Для хронометража используется Timer1, поскольку имеет больше возможностей и дополнительных опций, которые мне еще пригодятся. Частота CPU в 16 MHz поделена до значения в 64 Hz, которое затем пошагово увеличивает время дня, структуру которую содержат счетчики.
Timer4 используется для работающего на 500 Hz генератора тактов, который служит для динамического отображения цифр и опроса кнопок.
Техника отображения для мультиплексированных циферблатов достаточно проста. Есть массив байт, представляющий сегменты каждой цифры. Код обращается к цифрам и соответствующим сегментам по порядку. Таблица шрифтов переводит двоичные числа из счетчиков часов и минут в нужные шаблоны из 7 сегментов. Обратите внимание, что эти массивы должны обновляться только, когда изменяется видимая цифра, т.е. не каждую секунду, а каждую минуту, в том числе при установке самих часов.
Имейте в виду, что в отличие от более простых микроконтроллеров, контакты сегментов берутся из комбинации портов, так как ни один из них не предоставляет все 8 бит в корпусе TSSOP-20. Это значит я не могу использовать байтовые операции для одновременной обработки всех сегментов, но вынужден циклически обрабатывать по одному сегменту за раз. Однако этот микроконтроллер остаточно быстр, поэтому в сравнении с периодом тактов излишняя нагрузка ничтожна.
Обработчик этого таймера также занимается сканированием кнопок при каждом проходе цикла и обновляет конечный автомат протопотоков для действий кнопок. Одиночное нажатие приводит к однократному увеличению. Если же кнопку зажать, то спустя небольшую задержку начнется автоматическое увеличение со скоростью 4 раза в секунду.
Системный модуль инициализирует нужную конфигурацию микроконтроллера. В частности, я использую встроенный RC-генератор на 16MHz.
Основная программа вызывает процедуру инициализации каждого из перечисленных модулей, а затем входит в цикл тактов.

Модификации для мультиплексирования часов и минут


Для обработки мультиплексирования часов и минут я создал 2 массива вместо одного. Первый содержит две 7-сегментные цифры для часов плюс постоянный третий байт, представляющий сегменты H-. Второй массив содержит две 7-сегментные цифры для минут плюс постоянный байт, представляющий сегменты M.
В тактовом цикле при каждом изменении счетчика секунд, он проверяется. Если его модуль после деления на 5 будет от 0 до 2, то указатель циферблата переключается на массив минут, в случае же 3 и 4 он переключается на массив часов. В результате получается, что для, например, 12:34 он в течение 2 секунд показывает 12 H-, а затем в течение трех секунд 34M.
Это мультиплексирование понадобилось остановить при установке времени. В итоге при удержании кнопки прибавления часов циферблат показывает их до тех пор, пока она не будет отпущена. То же самое с кнопкой для минут. Небольшое замечание при прибавлении минуты счетчик секунд сбрасывается до 0. Это позволяет синхронизировать часы с другими часами, установив одно и то же время в минутах, а затем увеличив их значение резким одновременным нажатием во время смены секунд.
Я реализовал еще одну особенность, а именно выделил красным цифрам удвоенный цифровой период, компенсировав тем самым пониженное напряжение светодиода. В итоге рабочий цикл желтых цифр составляет 25%, а красных 50%.

Доработки для стандартного 4-значного дисплея


Здесь я описал свои непроверенные предположения о том, что нужно сделать тем, кто задумает модифицировать мой код для управления стандартным 4-значным дисплеем.
Из оборудования вам понадобится дополнительный вывод порта для управления 4-й цифрой. Первым логичным кандидатом для этого является D1, но нужно помнить, что на использованной мной коммутационной плате это также порт SWIM для прошивки исполняемого образа. Так что вам понадобится перемычка, которую можно будет снять при перепрошивке и установить обратно для работы. Еще один вариант не использовать двоеточие и задействовать A3 для 4-й цифры. Имейте в виду, что B4 и B5 задействовать нельзя, так как это контакты с открытым стоком для l2C, которые для включения катодного транзистора потребуют добавления подтягивающего резистора. Еще одна проблема в том, что B5 запускает мигающий светодиод. Думаю, вы могли бы приспособить его для 4-й цифры, тогда этот светодиод будет обеспечивать ток транзисторных драйверов для светодиодов. В этом случае свечение B5 будет означать, что часы работают.
В отношении ПО вы можете заменить один 4-байтовый массив на два раздельных 3-байтовых, тогда не потребуется переключения указателя между массивами. Естественно, число цифр увеличиться до 4, но это будет обрабатываться хэш-функцией, использующей оператор sizeof при добавлении вами еще одного элемента в объявления цифровых контактов порта. Кстати, при этом вы также избавитесь от необходимости определения для красных цифр дополнительного времени сканирования, так как в вашем случае все цифры будут одинаковы.
Можете смело делать форк моего репозитория, если возникнет желание опубликовать ваши изменения. Мой код открыт для использования под лицензией MIT.

Тестирование


Мне потребуется некоторое время для определения смещения времени, после чего я смогу применить необходимый фактор коррекции.

Настройка отсчета времени


Для настройки тактовой скорости часов использовался генератор с числовым программным управлением. Этот способ я подсмотрел у K. C. Lee, который использовал его в своих часах, собранных на микроконтроллере семейства STM8.
Давайте конкретизируем пример, взглянув на изменения в tod.c. Вы можете увидеть, что Timer1 по-прежнему настроен на генерацию 64 прерываний в секунду. Однако теперь счетчик миллисекунд вместо отсчитывания до 64 считает до 32. Мы создаем аккумулятор, назвав его DDS_Accum, который увеличивается на (2^23 + корректировка) при каждом прерывании таймера. Когда DDS_Accum превышает 2^24, на что почти всегда уходит 2 прерывания, счетчик миллисекунд увеличивается, а 2^24 вычитается из DDS_Accum. Я выбрал возведение в степень 2 для переполнения и последующее вычитание, потому что так мы можем выполнить первое путем проверки битов, а второе побитовым маскированием, сделав код более эффективным.
Теперь рассмотрим, какой эффект корректировка оказывает на накопление. Если она нулевая, то схема действует просто как деление на два. Если корректировка отрицательна, то иногда накопление не будет превышать лимит, и увеличение миллисекунд счетчиком происходить тоже не будет, т.е. такт будет утрачиваться. И наоборот, если корректировка будет положительной, иногда накопление будет превышать лимит два раза подряд, порождая лишний такт. Проще говоря, отрицательная корректировка замедляет часы, а положительная ускоряет. Дробная корректировка определяется как корректировка/2^23. Так как это происходит до срабатывания счетчика секунд, мы не замечаем этих мелких колебаний, тем более что минимально отображаемый отсчет ведется в минутах.
Все это можно обобщить до множителей (прерывание таймера/скорость миллисекунд), которые не равны 2, но в более крупных множителей необходимости нет.

Результат


Результат можно увидеть на видео.



Видимо придется залепить красный светодиод черной изолентой, так как иначе из-за своей дикой яркости он будет засвечивать остальные цифры в темное время суток.

Файлы к статье: 4digittest.ino

Ссылки:
Breakout Boards
Instructions for building SPL on Linux
Репозиторий проекта irreproducible-clock



Подробнее..

Начинаем писать под stm8, выбираем среды разработки и стартуем

28.04.2021 12:07:29 | Автор: admin
image

На пути в программировании stm8 есть развилка, о ней сегодня и поговорим.

Определимся что речь будет идти о средах которые могут писать под си. Для начала поговорим о подходах, я выделю 2 основных.

Первый установка ST Visual Develop и выбор в качестве компилятора COSMIC Бывший платный, а ныне бесплатный, но со своими заморочками; регистрация, получение ключа, и прочие танцы с бубном.

Второй же вариант, более простой VS Code + PlatformIO и компилятор SDCC полностью свободный. И опять же не все так просто. Sdcc не умеет исключать не используемые функции. Я решил этот вопрос хоть и успешно, но не без дополнительных действий при написании кода.

Первая среда, для любителей всё делать правильно


Для начала нам нужен ST Visual Develop. Устанавливаем и ставим запуск ярлыка всегда от администратора. В придачу к нему нам дают ST Visual Programmer, полезный инструмент, особенно когда стоит защита от записи и надо разблокировать микроконтроллер, а ведь китайские blue pill всегда приходят заблокированными. Китайцы бояться что мы украдём их круто оптимизированный Blink.

Вот так выглядит STVD
image
Я так понял её создали, когда в моде были 16 битные цвета...

Дальше нужно будет получить компилятор COSMIC и его лицензионный ключ. Заполняем то что просят, получаем дистрибутив и делаем запрос ключа по электронной почте (тут рулетка кому то сразу придёт, кому то придётся подождать).

После пройденного лабиринта из форм и запросов, когда всё уже установлено, начнём
image
image
При первом запуске нужно указать расположение ключа, его лучше поместить в директорию компилятора. После создания нажимаем F7, ошибок быть не должно. Если писать на чистых регистрах, то всё готово, но я такой хардкор не люблю, поэтому продолжим и добавим SPL библиотеку.

Распакуем куда-нибудь и заходим в папку STM8S_StdPeriph_Lib\Project\STM8S_StdPeriph_Template. Тут у нас шаблон проекта stm8s_conf.h это конфигурационный файл библиотеки, через него выбирается контроллер. Зайдём в main тут сразу с первых строк #include "stm8s.h" это ссылка на основную библиотеку, а так же кусок кода отладки который начинается с #ifdef USE_FULL_ASSERT, без отладочного кода будут сыпаться ошибки.

Теперь когда мы прошлись по верхам давайте пробовать запускать библиотеку. Добавляем в проект из шаблона main и конфигурационный файл в. В include files добавляем всё из STM8S_StdPeriph_Lib\Libraries\STM8S_StdPeriph_Driver\inc.
image
Теперь всё должно собраться.

Добавим stm8s_gpio.c и соберём простецкую мигалку. У меня один из светодиодов висит на D3, конфигурация ноги на выход выглядит так:

GPIO_DeInit(GPIOD);GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_SLOW);

Её вписываем в main до бесконечного цикла.

А вот функция смены состояния. GPIO_WriteReverse(GPIOD, GPIO_PIN_3); вписываем её в бесконечный цикл.

Но вот незадача, в SPL нету функций задержки, скопипастим из примера GPIO в библиотеке. Там она выглядит следующим образом.

void Delay(uint16_t nCount){  /* Decrement nCount value */  while (nCount != 0)  {    nCount--;  }}

Впишем её в конец перед #ifdef USE_FULL_ASSERT. Так же впишем её прототип в начало, где под это выделено место в шаблонном main.

/* Private function prototypes -----------------------------------------------*/void Delay (uint16_t nCount);

Ну и наконец впишем функцию со значением в бесконечный цикл после функции смены состояния: Delay(0xFFFF);

Подключаем ST-Link и прошиваем, для этого нажимаем Start Debugging и Run. Светодиод моргает значит всё хорошо.

У кого не получилось вот полный main.c
/**  ******************************************************************************  * @file    Project/main.c   * @author  MCD Application Team  * @version V2.3.0  * @date    16-June-2017  * @brief   Main program body   ******************************************************************************  * @attention  *  * <h2><center> COPYRIGHT 2014 STMicroelectronics</center></h2>  *  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");  * You may not use this file except in compliance with the License.  * You may obtain a copy of the License at:  *  *        http://www.st.com/software_license_agreement_liberty_v2  *  * Unless required by applicable law or agreed to in writing, software   * distributed under the License is distributed on an "AS IS" BASIS,   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  * See the License for the specific language governing permissions and  * limitations under the License.  *  ******************************************************************************  */ /* Includes ------------------------------------------------------------------*/#include "stm8s.h"/* Private defines -----------------------------------------------------------*//* Private function prototypes -----------------------------------------------*/void Delay (uint16_t nCount);/* Private functions ---------------------------------------------------------*/void main(void){GPIO_DeInit(GPIOD);GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_SLOW);  /* Infinite loop */  while (1)  {GPIO_WriteReverse(GPIOD, GPIO_PIN_3);    Delay(0xFFFF);  }  }void Delay(uint16_t nCount){  /* Decrement nCount value */  while (nCount != 0)  {    nCount--;  }}#ifdef USE_FULL_ASSERT/**  * @brief  Reports the name of the source file and the source line number  *   where the assert_param error has occurred.  * @param file: pointer to the source file name  * @param line: assert_param error line source number  * @retval : None  */void assert_failed(u8* file, u32 line){   /* User can add his own implementation to report the file name and line number,     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  /* Infinite loop */  while (1)  {  }}#endif/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/


Теперь посмотрим со стороны на эту среду.

По плюсам; у неё есть полноценная отладка, поддержка SPL из коробки. По минусам; она старая из этого вытекает, не очень приятный интерфейс и старый диалект си, на который многие свежие библиотеки придётся переписывать, в частности ставить переменные только вначале функций. Вес кода оставляет желать лучшего. Ну последний камень, этот инструмент может просто взять и вылететь, такое бывает, нечасто, но всё же.

Вторая среда, для тех кто не любит заморачиваться.


Второй подход это свободный и обновляемый компилятор SDCC, а так же среда PlatformIO.

Для начала установим VS Code и станем рабами Microsoft, далее найдём расширение PlatformIO.

image

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

Не удивляйтесь, проект будет создаваться прилично долго, потому как он на ходу будет подгружать компилятор, библиотеки и тд. И вот перед нами возник девственно голый проект, закрываем его он нам больше не нужен. В меню где мы создавали проект, открываем пример spl-blink, суть в том что blink генерирует неплохой шаблон в котором можно сразу писать. Правим пример под себя и прошиваем, всё моргает.

Разберем поподробнее среду разработки. Во первых весь проект должен лежать в src, иначе среда ведёт себя неадекватно. Во вторых открываем stm8s_conf.h и видим что все библиотеки кроме GPIO закомментированы, если этого не сделать то у мк не хватит памяти что бы поместить весь SPL в микроконтроллер (помните в начале я говорил что он загружает все функции что видит в код?).

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

/* Private define ------------------------------------------------------------*/#define _GPIO_DeInit#define _GPIO_Init#define _GPIO_WriteReverse#define _CLK_DeInit#define _CLK_SYSCLKConfig#define _TIM4_DeInit#define _TIM4_ITConfig#define _TIM4_ClearITPendingBit#define _TIM4_Cmd#define _TIM4_TimeBaseInit#define _TIM4_ClearFlag#define _HAL_GPIO_WritePin#define _GPIO_WriteLow#define _GPIO_WriteHigh//#define STM8S003/* Includes ------------------------------------------------------------------*/#include "stm8s.h"/* Uncomment the line below to enable peripheral header file inclusion */#if defined(STM8S105) || defined(STM8S005) || defined(STM8S103) || defined(STM8S003) ||\    defined(STM8S001) || defined(STM8S903) || defined (STM8AF626x) || defined (STM8AF622x)// #include "stm8s_adc1.h" #endif /* (STM8S105) ||(STM8S103) || (STM8S001) || (STM8S903) || (STM8AF626x) */#if defined(STM8S208) || defined(STM8S207) || defined(STM8S007) || defined (STM8AF52Ax) ||\    defined (STM8AF62Ax)// #include "stm8s_adc2.h"


Каждую функцию я включаю через макрос, для этого у меня переписана большая часть SPL. Если вам оптимизация сильно не нужна, то такой упоротостью можете не заниматься.

Пройдёмся по преимуществам: работает почти из коробки, полностью бесплатно без попрошайничества, редакции языка обновляются и не придётся учить и переписывать код под си 80-90г. Сам интерфейс настраиваемый и намного приятнее. Для тех кто не любит win есть linux версия.

По минусам: нету полноценной отладки (над ней активно работают, но пока ничего приближённого к cosmic я не видел), в проекте небольшой хаос, раскидать по папкам пока нельзя.

Послевкусие.


Ну и на последок есть ещё среды, варианты и компиляторы, но либо это тот же SDCC вкрученный силой в Eclipse или ещё куда и работающий хуже чем в VS Code, либо это платные варианты IAR, Raisonance. Я лично пользуюсь и тем и тем, но чаще VS Code. Рекомендовать ничего не буду каждому своё, увидимся в комментариях)

Подробнее..

Создание своей оценочной платы для микроконтроллеров

16.04.2021 02:15:22 | Автор: admin

Заказывая много оценочных плат из Китая, я и подумать не мог что всюду будет брак, недоработки и подделка. Всё это ужасно путало в изучении и порой было тяжело понять то ли мой код кривой, то ли контроллер. Примерно в это же время я нашёл микроконтроллеры и другую рассыпуху дешевле чем в Китае при это локально в России. Я сразу загорелся тем, что бы сделать себе платы и забыть о китайских корявых blue pill.

Брак или странная задумка инженеров

Земля на ножках для прошивки висела в воздухе, после доработки всё окей.

Я как раз переезжал, и из-за этого у меня появилось много свободного времени, чем я и воспользовался, когда рисовал платы в EDA. Начать было решено с STM8S003F3U6 потому как очень уж полюбилась мне эта серия микроконтроллеров.

Первые наброски выглядели примерно так:
v1v1

Тут я ещё не знал, что для нормальной прошивки мк нужен pull-up резистор на ногу сброса.

Хорошо что я проверил всё на макетной плате, прежде чем заказывать. По итогу я полностью переделал макет платы, избавился от односторонней компоновки, сделал заказ и стал ждать.

Когда приехали платы качество меня порадовало, но был и косяк с моей стороны текст настолько мелкий что кое где не читается.

Детальное фото печатной платы

В итоге у меня было куча плат, с пяток контроллеров и разных вторичных компонентов, выпаянных из разных плат. Всё это вылилось в 3 рабочих прототипа.

В итоге у меня было куча плат, с пяток контроллеров и разных вторичных компонентов, выпаянных из разных плат. Всё это вылилось в 3 рабочих прототипа:

Фото ужасное, но переснять не могу уже раздал их)Фото ужасное, но переснять не могу уже раздал их)

Немного о платах

Остановился на 6 светодиодах. Всего 3 группы: питание, 4 GPIO, 1 GPIO(ШИМ) на обратной стороне. У каждой группы есть маленькая напаиваемая перемычка.

USB только питание, по входу стоит диод, защита usb выхода от обратного напряжения которое может пойти если запитать схему >5в напряжением. Стабилизатор выдерживает пиковые 16в, штатное до 14в.

Контроллер может без проблем работать и от 5в, но расчёт резисторов для светодиодов выполнял для 3.3, да и базово считаю что лучше работать с 3.3, ибо потом по привычке можно что-нибудь спалить.

Продолжаем вакханалию

Это была только половина пути, я ведь хотел много плат и очень не хотел делать их вручную.

Для информации из паяльного инструмента у меня был только паяльник, не было даже фена (оставил там откуда уехал). Зато в новой квартире обнаружилась духовка с очень чётким контролем температуры, я думаю дальше понятно что будет, особо впечатлительные не принимайте близко к сердцу.

И так, надо было решать как спаять всё быстро и с минимумом косяков. Трафарета у меня не было и я решил попробовать просто намазать тонким слоем паяльную пасту (благо она была).

Сказано сделано, вот что из этого вышло:

Мелкие капельки припоя что никуда не стекли прилипли прилично, далеко не с первого раза я их смог убрать, так же видно что 2 контроллера немного поплыли и встали криво. Выглядит жуть, но в целом получилось неплохо. Я делал несколько прогонов, первый мк и обвязка, остальное вторым. И по выходу получилось около 70% годных и готовых сразу без танцев плат.

Финальный результат, usb портов к этому времени не подвезли, так что без них.

Пока остановился на этом, с новой партией плат должен прийти трафарет, там уже будут другие танцы и другие бубны.

Планы у меня наполеоновские, уже нарисовал и под stm32f0 и под f1 платы, ещё есть идея создать плату на stm32f4(7) с интегрированных ethernet.

Для тех кто дочитал, спойлер след платы!

В следующей статье затрону контроллер и среды, в которых пишу. Ни пуха ни пера и не болейте!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru