Гены Ардуинщика



    В очередной раз, при обдумывании самоделки на Atmega, встал вопрос проектирования соединений. В моем случае 12 внешних коннекторов и 21 связь. Расположение, соединение, пересечения, программирование, ошибки, ошибки, ошибки.

    При кажущейся простоте задачи поломать мозг придется день, а то и два. Без опыта — месяц.
    И… лень взяла свое.

    Как это делается


    Обычный алгоритм в таком случае:

    • используем макетную плату (самодельную или Arduino) не меняя или добавляя разъемы и разводку
    • подгоняем под макетку внешние коннекторы, чтобы не было пересечений
    • пишем программный код для настройки контроллера и макросы-переменные.

    А что если последовательность пинов в коннекторах уже жестко заданы?

    Как например у драйвера L298N. Пересечения проводов или дорожек сильно усложнят проектирование, сборку и эксплуатацию.

    Попробуем решить задачу с помощью генетического алгоритма. И для начала определимся с моделью.

    Список разъемов


    • Шина i2c для компаса I2C(SDA, SCL)
    • UART для связи с внешним миром UART(RXD, TXD)
    • Ультразвуковой сенсор SONAR1(Echo, Trig)
    • Управление маршевыми двигателями DRIVE(ENA, IN1, IN2, IN3, IN4, ENB) с помощью L298N — длинный коннектор как раз для шлейфа
    • Энкодер на колесе:
    • левый ENCODER_L(IN)
    • правый ENCODER_R(IN)
    • Сенсор-выключатель впереди робота:
    • левый SENS_L(IN)
    • правый SENS_R(IN)
    • Включение питания Мозга (OPI PC) CPU(EN)
    • Включение турбины VAC_CLEAN(EN)
    • Включение веника BROOM(EN)
    • Напряжение батареи и потребляемый ток PWR(LVL, CUR).

    Модель


    Получается ген, состоящий из 21 хромосомы, которые отображают пины микроконтроллера, а точнее их соединения с коннекторами.

    VCC и GND пины коннекторов игнорируем, так как шины мы можем вынести за коннекторы.
    Каждая ячейка может иметь значение от 1 до 32 (количество лап у микросхемы). Значения в гене не могут повторяться.

    Не допускается пересечений проводников (соединения делаются последовательно, если следующий пин занят — проскакиваем далее)

    Количество вариантов соединений:

    $32^{21}=$ 40 564 819 207 303 340 847 894 502 572 032.

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

    Ускоряемся


    Для уменьшения пространства поиска используем функции пина коннектора (ADC, INT, PWM, PCINT). Например, если пин может быть только ADC, то вести к нему линию PWM или дискретного входа бессмысленно.

    Данный фильтр уменьшает количество вариантов до 8 748 869 014 201 881 088. Разница ощутима. Но миллиарды миллиардов вариантов это тоже много.

    Так же ранее использовались «ручные» эмпирические правила:

    • начинаем процесс соединения с уникальных пинов (SDA, SCL, RXD, TXD)
    • после соединяем разъемы с большим количеством пинов
    • последними соединяем пины с более общим спектром функций.

    Но волшебный Collections.shuffle задающий последовательность коннекторов для обработки, решает эту задачу успешно на автомате.

    Решение


    Запускаем алгоритм и получаем решение для Atmega328p TQFP32. У меня на бюджетном ноутбуке находит менее чем за минуту.

    1 SONAR1.Echo
    2 SONAR1.Trig
    9 DRIVE.ENB
    10 DRIVE.IN4
    11 DRIVE.IN3
    12 DRIVE.IN2
    13 DRIVE.IN1
    14 DRIVE.ENA
    15 ENCODER_L.IN
    16 VAC_CLEAN.EN
    17 CPU.EN
    22 PWR.LVL
    23 PWR.CUR
    24 SENS_R.IN
    25 SENS_L.IN
    26 ENCODER_R.IN
    27 I2C.SDA
    28 I2C.SCL
    30 UART.RXD
    31 UART.TXD
    32 BROOM.EN

    Алгоритм находит решение за пару тысяч эпох. Иногда не находит и за миллион. В таком случаем просто надо перезапустить программу, потому что инициализация происходит случайно.
    Без фильтра по функциям пинов алгоритм так же находит решение. Правда за 74 минуты и 13 перезапусков алгоритма по миллиону эпох на каждый. Перед каждым запуском делаем shuffle последовательности соединений.

    Остается только соединить проводами макетку или нарисовать дорожки на плате с микроконтроллером.

    Детали


    Чтобы описать всё, надо будет написать не одну статью. Я постарался комментировать непонятные и самые интересные моменты в java-коде.

    Желающие углубиться в тему могут заглянуть в git-проекта.

    P.S.
    Pinswap это очень упрощённый вариант того, что хочет достичь автор: для pinswap-а надо сначала хоть как-то эти пины назначить, а тут вжух и готово.
    JerleShannara

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 138

      +5
      На youtube очень не хватает аналога drDIY, но который будет хаять поделки абдуринщиков. Занятно было бы…
        +2

        Учебник по радиоэлектронике.

          +2
          эдик, ты в каждой теме по ардуине успеваешь отметиться. как бы намекает.
            +2
            Не трогайте его, он наш Дон Кихот ардуинщиков! Ещё артамонов есть, но он политотой занялся.
            –3
            Мне как инженеру, изобретателю… Творцу всегда были интересны люди, которые наслаждаются неудачами других.
            Кто-то создает, а кто-то должен разрушать.
            Вселенная держит Баланс.
            «C'est la vie».
              0
              Народ.
              Хватит ставить минуса этому комменту ))
              Это сарказм.

              Лучше давайте конструктивную критику.
                0
                Если изобретатель делает что-то новое, то это прекрасно. Если «изобретатель» от нечего делать как кот лижет... делает невнятный шизофазойдный мусор, то грош ему цена.

                Для меня показатель изобретателя тот, который имеет практический общечеловеческий выхлоп, когда это идёт на пользу всем. Пример Тесла. А если идёт вот такой вот выс... эм, казус, то таких гореизобретателей надо гнать. Ибо это деградация.
                  0
                  Жестко!)
                  Это камень в мой огород или прописная истина?
                    –1
                    Абсолютно уверен, что то что вы пытались изобрести есть в любом современном разводчике печатных плат. Вместо того, чтобы найти подходящий инструмент под ваши задачи, вы изобретаете велосипед и костыли.
                    Итого, вы потратили время на создание инструмента который никому не нужен, так же написали статью, которая тоже никому не нужна. Вместо того, чтобы взять популярный мощный редактор и найти эти инструменты в нём. И написать статью для других поколений.
                      0
                      Абсолютно уверен, что то что вы пытались изобрести есть в любом современном разводчике печатных плат.

                      Можно как то поконкретнее? В каком разводчике есть такая ф-я? Как называется? Как ею пользоваться? Насколько она ускоряет процесс?

                      Итого, вы потратили время на создание инструмента который никому не нужен...

                      Этот Инструмент используется в нескольких проектах (позже выложу + статьи).
                      Хотя я скорей делился Идеей, наблюдениями, исследованиями, Опытом.

                      так же написали статью, которая тоже никому не нужна

                      Уже 29 человек добавили статью в закладки. Цифры не врут ;)
                        +1
                        Уже 29 человек добавили статью в закладки. Цифры не врут ;)


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

                        Я понимаю проблематику которую вы пытаетесь решить. Комбинаторика выводов с оптимальным решением. Ну неужели вы думаете, что данную проблему никто не пытался решить до вас и не внедрил в САПР? Переходим тут к вашему вопросу.

                        Можно как то поконкретнее? В каком разводчике есть такая ф-я? Как называется? Как ею пользоваться? Насколько она ускоряет процесс?


                        Не знаю. Вы провели анализ популярных САПРов на отсутствие данной опции? Проанализировали функционал таких программ как:
                        • Mentor Graphics PADS
                        • Altium Designer
                        • TopoR

                        ? Вы утверждаете, что в данных пакетах функционал не реализован?

                          0
                          Я так и не увидел ответа на свой вопрос.
                            0
                            Перечитайте.
                              0
                              Перечитал.
                              Вижу названия САПР. Я могу еще десяток написать.
                              Не вижу названия и примеры функций автоматического соединения элементов по функциональному признаку.
                                0
                                Я специально процитирую то что я сказал. Ответ на ваш вопрос:
                                Не знаю.


                                Не развожу печатные платы, чаще выступаю заказчиком. Но не проведя анализ САПР на наличие такой штуки изобретать смысла нет. Поскольку современные САПРы безумный комбаин, то там такая штука есть, просто надо научится ей пользоваться.

                                Давайте проще. Вы проводили анализ хоть одного САПР на наличие такой функциональности или сразу начали писать?
                                  +1
                                  Автор тут не автотрассировщик плат рассматривает, который сто лет в обед в более-менее САПРах есть, а автоматический генератор схем рассматривает, которого полноценного нет.
                                    –1
                                    Я прекрасно понимаю что хочет автор. Оптимальный комбинатор нетов относительно пинов по заданным правилам.

                                    а автоматический генератор схем рассматривает, которого полноценного нет.


                                    Вы проводили анализ текущих САПРов? Их точно нет, или просто вы недостаточно изучали вопрос?
                                      +1
                                      Изучал, готового не находил (ментор и каденс не смотрел, честно скажу) среди того, с чем работал.
                                        +2
                                        Swap-pin для оптимизации роутинга по матрице, заданной в модели компонента, присутствует во всех профессиональных САПР уж лет 30. Но, ни одна САПР вам самотужки не перекорячит, например, последовательность бит в байте (пускай даже и на локальной шине). А, если перекорячит (без соответствующей перекомпиляции кода) — место ей на мусорке.

                                        ЗЫЖ На заре контуперной эры решили русифицировать партию видео-адаптеров Hercules, знакоген которой (под иврит) был прошит в ПЗУ, а не прогружался в ОЗУ как в VGA. Всё-бы ничего, но они там и всю шину данных (хорошо, что и не адресов :-) ) перекорячили под оптимизацию топологии pcb. Самописная софтина, перебрав С из n по m, нам выдала правильные иероглифы, а после и знакоген с русскими пуквами в прошиваемую обратку затоптала.

                                        ЗЗЫЖ Не, это был ещё не пик маразма тех времён. Пиком была регенерация изображения на белорусском стеклышке LCD (без драйвера) зацепленного между шинами адресов и данных — сжирала 30-40% производительности i8085.
                                          0
                                          Swap-pin для оптимизации роутинга по матрице, заданной в модели компонента, присутствует во всех профессиональных САПР уж лет 30.


                                          Ну вот, я же говорил, что автор изобрёл бесполезный велосипед!

                                          Всё-бы ничего, но они там и всю шину данных (хорошо, что и не адресов :-) ) перекорячили под оптимизацию топологии pcb.


                                          А какая разница куда чего записано, главное чтобы удобно было разводить. Может они прямо в видеокарте и прошивали, какие-нить пады были дополнительные.
                                            +1
                                            > Ну вот, я же говорил, что автор изобрёл бесполезный велосипед!

                                            В том-же P-CAD по-умолчанию swap-pin на уровне пинов пассивных компонентов, гейтов и их входов в
                                            ЭРЭ. Причем, относительно текущего дизайна PCB с указанием % оптимизации за секунду. Никто не мешает и в модели MCU пины портов (или даже все GPIO) назначить эквивалентными. Только, кто в своём уме (явно не о ардуинщиках), под такой дизайн после станет перекорячивать и все define i/o in src, с вовсе не гарантированной их работоспособностью (точнее, гарантированой на 80% неработоспособностью ) после компиляции. Можно, конечно, хаять ардуино-стайл и их IDE (или взяв за готовую хардверную базу писать свой код), но оно хоть как-то работает. В отличие от такой «автоматизации».
                                              0
                                              Те кто придёмал ардуино не дураки, а вот не все кто пользуются ей умные!
                                                +1
                                                100% Зачем мне свою PCB (трассировать/травить/паять/выбрасывать готовую — от «взрослых» под размер GLCD, до миниатюрных — чуть больше RF-трансивера на ней, если достаточно и готовой копеечной мелюзги, при необходимости расширений IO вставляемой в DIP-32.
                                              +1
                                              Та не, там был абсолютный минимализм :-) ПЗУ, помнится, не была доступна с ISA, но, на панельке.
                                                0
                                                Могла быть площадка подключения или вообще своя платка для программатора.
                                                –1
                                                Ну вот, я же говорил, что автор изобрёл бесполезный велосипед!

                                                Автор:
                                                — не пишет пишет диплом
                                                — не оформляет патент
                                                — не продвигает стартап в бизнес-инкубатор
                                                — не продвигает свой продукт.

                                                Мы здесь обмениваемся идеями и мнениями.
                                                Или я ошибаюсь?
                                                  –1
                                                  Мы здесь обмениваемся идеями и мнениями.


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

                                                  Я уже молчу о дилетанстве.

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

                                                  То что я не знаю что такое Proteus не является моим недостатком. В последний раз я его видел более 12 лет назад, и в моей практике он не встречался за это время.

                                                  Вы сделали статью и программу. Я честно открыл код вашей программы. Для меня это бесполезный мусор, что ваша статья, что код. Так как как этим пользоваться мне не ясно.
                                                    0
                                                    Давайте вести диалог в рамках вашей статьи и вашей программы. И не переходить на личности. Уверен, что вы отличный человек. Лично я высказался и держусь только этой позиции конкретно о данной статье и вашей задумки. У меня в мыслях не было как-то вас оскорбить или унизить.
                                                    Но имейте же мужество держать удар и отстаивать свои позиции.
                                                      0
                                                      Ааа. Мужество. И на личности не переходили?
                                                      Понятно)

                                                      Статья не о схемотехнике вообще. Точнее не только о ней.
                                                      Статья о комбинаторике, сложности и оптимизации.
                                                      И на вашем месте и месте других конструкторов, я бы 100500 раз перечитал бы статью и постарался услышать мнение со стороны.

                                                      У меня ж профиле написано «Инженер-программист».
                                                      Все ваши хваленые САПР когда то и начинались с абстракций и идей, подобной которой я описал в статье.

                                                      Это не битва мозги против чипов и программеров.

                                                      Я пытаюсь донести до вас, ребята, что мы входим в новую Эру. У нас появились новые инструменты… более мощные компьютеры и алгоритмы. И проектировать уже надо, ставя Цели и правила для ИИ (или тому что мы так называем).
                                                        0
                                                        Ааа. Мужество. И на личности не переходили?
                                                        Понятно)


                                                        Вы хотя бы на википедии почитайте что означает переход на личности. Вот когда вы мне сказали про воспитание, то это прямое оскорбление и переход на личности.
                                                        Но я оставлю это за скобками.

                                                        Тем не менее дальше по сути.

                                                        Я пытаюсь донести до вас, ребята, что мы входим в новую Эру. У нас появились новые инструменты… более мощные компьютеры и алгоритмы. И проектировать уже надо, ставя Цели и правила для ИИ (или тому что мы так называем).


                                                        Абсолютно согласен. Вот прям подписываюсь! Поэтому изучайте и используйте инструменты, а не изобретайте их заново.
                                                          0
                                                          Отвечать надо «за базар».
                                                          Если вы считаете, что я «изобрел велосипед» — вы мне должные его предъявить.
                                                          Пока что вы ищете соринку в глазу.

                                                          Я уже молчу об этом «изобретении»
                                                          habr.com/ru/post/120480
                                                          Вы прямо все проблемы человечества им решили))
                                                            0
                                                            Вижу, что конструктивного диалога не получается.

                                                            Тезис который я продвигаю: используйте готовый инструмент. Разберитесь и используйте. Не нужно изобретать велосипед и вводит в заблуждение людей.

                                                            Вы же зачем-то пытаетесь меня оскорбить и подколоть. Зачем-то мои школьно-студенческие поделки нашли и пытаетесь меня ими попрекнуть. Тем более, что там исключительно развлекательный контент.

                                                            Пожалуйста. Возьмите себя в руки и не переходите на личности. Оставайтесь в тезисах данной статьи и примените бритву Оккамы.
                                                              –1
                                                              Конструктивный диалог? С вами?
                                                              С автором исключительно развлекательного контента?

                                                              Не вводите людей в заблуждение своим буквоедством.
                                                              Мы тут с коллегами серьезные вещи обсуждаем.
                                                                0
                                                                С таким хамством вы долго не пробудете на данном ресурсе.

                                                                Вижу что кончились доводы, поэтому вы решили просто перейти на личности.
                                                                  0
                                                                  Специально для тех кто залезет в ветку срача, вот пример того что «изобрёл» автор в Altium Designer 17



                                                                  Первая ссылка в гугле по запросу «Swap-pin»

                                                                  З.Ы. Я потратил чтобы найти это около 30 секунд.
                                                                    0
                                                                    30 секунд после того как про это сказал Vitvp.
                                                                    Не приписывайте себе чужие заслуги.
                                                                      –1
                                                                      Товарищ, прекратите уже истерику. Вы сделали ненужную вещь, написали бесполезный пост. Когда вас спросили, проводили ли вы анализ текущих решений вы спустились до хамства. При том за вас Vitvp сделал данную работу.

                                                                      Я открыто говорил, что не являюсь разводчиком печатных плат и инструменты знаю постольку-поскольку. И не отрицаю, что не владею всеми особенностями. Вы же предлагаете инструмент, ну или хотя бы его демонстрируете. Задаю простой вопрос: в чём его новизна? Вы начинаете атаковать (ну потому, что лучшая тактика обороны это нападение), чтобы я сделал это.
                                                                      Потом опускаетесь до откровенного хамства и ругани, понимая что сделали бесполезный мусор и потратили своё время. Не расстраивайтесь. Теперь у вас есть опыт.
                                                                        0
                                                                        Я? Атаковать?
                                                                        Что вы… Я всего лишь инженер, а не боевой генерал.

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

                                                                        Меня вдохновила на это ваша статья habr.com/ru/post/358168
                                                                          0
                                                                          Рад что она вам понравилась. Она была хорошо воспринята публикой и получила много отзывов. Пишите дальше, и будут и у вас такие хорошие и популярные статьи. Главное не хамите и не опускайтесь до перехода на личности. Удачи!
                                                                            0
                                                                            Она была хорошо воспринята публикой и получила много отзывов.

                                                                            Еще бы. Ее ведь писал автор развлекательного контента.

                                                                            Пишите дальше, и будут и у вас такие хорошие и популярные статьи.

                                                                            Я не за лайки. Я — за Истину. :-)

                                                                            Главное не хамите и не опускайтесь до перехода на личности. Удачи!

                                                                            Взаимно :-)

                                                                            Pin-swap это очень упрощённый вариант того, что хочет достичь автор: для pinswap-а надо сначала хоть как-то эти пины назначить, а тут вжух и готово.
                                                                            JerleShannara

                                                0
                                                Pinswap это очень упрощённый вариант того, что хочет достичь автор: для pinswap-а надо сначала хоть как-то эти пины назначить, а тут вжух и готово (правда этот самый вжух нереален) — крутанул цапу и получил схему.
                                                  0
                                                  Я уверен, что нонче всё ушло далеко вперёд.
                                            0
                                            Не знаю.

                                            Вот когда будете знать — будем предметно говорить.

                                            Давайте проще.
                                            Почитайте мой диалог с JerleShannara.
                                            Ниже.

                                              0
                                              Я слежу за комментариями в этой теме. Вопрос про анализ САПРов оставляю открытым. За вас этого делать не буду.
                                                0
                                                Я слежу за комментариями в этой теме.

                                                Сомневаюсь.

                                                Вопрос про анализ САПРов оставляю открытым. За вас этого делать не буду.

                                                Не вижу никаких проблем. Нанимайте себе команду — пусть проводит исследования.

                                                  0
                                                  Не вижу никаких проблем. Нанимайте себе команду — пусть проводит исследования.


                                                  habr.com/ru/post/507484/#comment_21762864

                                                  круг замкнулся, в общем я был прав.
                                                    0
                                                    «Следящий за комментариями» увидел бы, что тут упоминаются некоторые САПР.
                                                    Я могу добавить Proteus.

                                                    Если Вы хотите другие САПР — habr.com/ru/post/507484/#comment_21763490
                                                      0

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


                                                      Proteus, на сколько я помню симулятор.

                                                        0
                                                        No comments ))
                                                          +1
                                                          Если не изменяет память (последними видел v7.5-7.7 когда вышли), в Proteus есть разные подсистемы под sch/pcb. В первой и симулятор в т.ч. некоторых MCU (PIC/Atmel/ARM) и их периферии, почему его и помянул. Их поведенческие модели там закрыты (типа подключаемых .dll), да и лицензирование муторное. Поэтому для профессионального использования такое не рекомендую, а на поиграться — в самый раз.
                                                            0
                                                            Ну в разработке не используется, я не встречал. На уровне поиграться.
                          +7
                          Метаардуино)
                          Как то очень все нипонятна, зачем оно если:
                          Для уменьшения пространства поиска используем функции пина коннектора (ADC, INT, PWM, PCINT). Например, если пин может быть только ADC, то вести к нему линию PWM или дискретного входа бессмысленно.

                          сначала мы задействуем пины на которых висит аппаратная периферия
                          если не хватает, то мы берем программную реализацию периферии на ЛЮБЫХ пинах (ну кроме аналоговых конечно же)
                          все остальное можно как угодно раскидать по GPIO

                          Как например у драйвера L298N. Пересечения проводов или дорожек сильно усложнят проектирование, сборку и эксплуатацию.


                          Дык это уже проблема решается при проектировании топологии на ПП, где можно раскидать те же GPIO для минимизации подключений, а у вас к ней привязки нету.
                          Я вижу, что вы хотите донести что-то интересное, но черт возми, ничерта непонятно.
                            –2
                            Дык это уже проблема решается при проектировании топологии на ПП

                            Ага. Опыт он и есть опыт.
                            Только здесь все делает машина. Сядьте как-нибудь и сделайте замеры времени на проектировании новой, пусть и простой, самоделки. Учтите время на продумывание, а не только на сам процесс разводки.

                            Я вижу, что вы хотите донести что-то интересное…

                            Все верно! Для Arduino просто понятный пример. А вот когда связей будет не 21, а 1К, 1М… 1G — тут уже другой коленкор. Но метода все та же.
                            Приписали коннекторы и чипЫ, и пусть комп отрабатывает свою стоимость.
                            Я думаю продолжить тему. Следите за публикациями.
                              +1
                              Если говорить о ПП, то для «100% лень» в САПРах обычно есть кнопка «Autorouter», ткнув в которую САПР вполне себе(пускай часто и отвратительно, особенно если не настроить правила) разведёт всю плату, впринципе порой бывает и кнопочка «Autoplace», которая и компоненты раскидает по плате(опять-же, часто фигово и ужасно, если не настроить правила и не зафиксировать некоторые).

                              Ну а когда мы выходим на схемы уровня «100500 точек пайки», то я сильно сомневаюсь, что ваш алгоритм вообще сможет такое переварить в удобоваримые сроки.
                                0
                                Соединения (netlist) тоже «Autorouter» умеет делать?

                                Ну а когда мы выходим на схемы уровня «100500 точек пайки», то я сильно сомневаюсь, что ваш алгоритм вообще сможет такое переварить в удобоваримые сроки.

                                Конкретно этот — да. Но на таких принципах и работают промышленные CAD.
                                  0
                                  Всмысле? Вам ещё и схему надо автоматом нарисовать?
                                    0
                                    В смысле… моя утилита это и делает.
                                    Почти.
                                    Задаются не конкретные пины чипа и связи к ним, а их функции (ADC, PWM, INT). То же на коннекторах.
                                    А утилита находит варианты схемы. В данном случае без пересечений проводников.
                                      0
                                      А время на описание для утилиты всех пинов и всех их функций + ограничений, которые накладывают какие-либо варианты (к примеру специфичные таймеры, сильно кастрированные UARTы и прочее) вы учли? Не быстрее ли получится открыть редактор схем и сделать это руками там?
                                        0
                                        Вы всеравно их описываете в CAD в том или ином виде.
                                        Ограничения у меня очень простые, как и задача. Можно добавить в утилиту весь функционал МК. Пока не актуально.
                                        Не быстрее ли получится открыть редактор схем и сделать это руками там?

                                        Ген. алгоритм зависит от random генератора. У меня автогенерация netlist занимает в среднем секунд 40. Самое быстрое было 11 сек.
                                        Сможете за такое время открыть редактор и нарисовать схему для данной задачи?
                                          0
                                          Меня волнует не экономия времени на одном этапе, а общая экономия времени на весь маршрут проектирования.
                                            0
                                            Я за весь маршрут не смогу ответить, но участок создания схемы ускорил.
                                            В перспективе добавлю еще кодогенерацию настройки МК, переменные-псевдонимы.
                                              +1
                                              Создание простейшей схемы вы ускорили. А вот этапы создания УГО и прочего для интеграции результатов вашей работы в САПР вы замедлили. И это мы ещё не рассматриваем универсальность данного решения. К примеру оно очень было бы вкусным для генерации схемы с подключением чего-то с кучей ног, но вот тут беда возникает — надо ставить множество костылей и ограничителей из разряда «если вы включили модуль X1, то модуль Y71 использовать нельзя», которые не просматриваются при случае «Ножка AB2 занята». Ну а когда мы смотрим в ПЛИС, то под ваш софт надо будет делать новую модель каждый раз (там очень много ограничений на назначение вроде-бы универсальных ног).
                                                0
                                                А вот этапы создания УГО и прочего для интеграции результатов вашей работы в САПР вы замедлили.

                                                Я всетаки программист, а не конструктор. Слабо знаю форматы. Но я думал про экспорт в SPICE формат, который Вы потом сможете загрузить в CAD схему. Знаю как резисторы и дорожки выгружать, но пока не нашел как выгрузить МК и коннекторы.

                                                «если вы включили модуль X1, то модуль Y71 использовать нельзя»

                                                Это все решаемо. Просто эти правила придется прописать в неком формате и загружать при старте утилиты.
                                                Замечу, правила в виде функций пинов уже прописаны. Они ускоряют процесс, как ни странно.

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

                                                В идеале надо делать целый Продукт со всеми правилами, МК, пассивной базой итп.
                                                Насколько мне известно все это уже есть в кастомном софте у Intel, AMD, Samsung итп.
                                                  0
                                                  В идеале надо делать целый Продукт со всеми правилами, МК, пассивной базой итп.


                                                  Проведите для начала анлиз, может кто-то сделал это до вас. А если не сделал (в чём я сомневаюсь, так как идея лежит на поверхности), то предложите им в их продукт внедрить ваше решение.
                                                    –1
                                                    я обязательно воспользуюсь Вашим советом )
                                                    +1
                                                    Вам в любом случае надо будет для САПРа подготовить компонент, который будет в себя включать кучу всего:
                                                    1) УГО на схеме (как выглядит компонент)
                                                    2) Пины, подписи к ним и прочее (включая например, что AA1 и AA2 — это диффпара, чтобы всякие средства контроля САПРа это учли при проверках)
                                                    3) Хотя-бы футпринт компонента, иначе плату вы с ним никогда развести не сможете.
                                                    И всё это вы из своего софта выгрузить не сможете, т.к. как минимум пункт 3 надо будет делать ручками (порой это можно сделать отталкиваясь от стандартных корпусов, но не всегда).

                                                    Про кастомный софт вы правы — для ПЛИС как минимум интел осознали, что полноценный Place&Route порой может занять пару суток и выкатили быстрое решение, которое ещё на ранних этапах раскидает вам пины. Правда в нём первые версии три я прослеживал детские болячки, которых ваш софт тоже не избежит — оно косячило с назначениями пинов. STM32 тоже таковое решение выкатил — CubeMX. Но у всех у них есть одно но: поддержка только своих чипов.
                                                    А вот сделать софтину, которая сможет соединить между собой кучу разных компонентов автоматом — это уже очень весёлая и адово сложная задачка, список ограничений будет огого. К примеру первое пришедшее в голову — разные уровни сигналов. Далее надо ещё учесть нагрузочные способности выходов компонентов — не перегрузим ли этот самый выход и т.д.
                                                      0
                                                      Вам в любом случае надо будет для САПРа подготовить компонент, который будет в себя включать кучу всего

                                                      Зачем? Мне надо только указать id компонента, номер пина и связь с други пином. Примерно как в SPICE формате (U1 1 SONAR1 Echo).
                                                      Зачем делать визуальную часть, если она уже есть в CAD?
                                                      Я делаю абстрактную.

                                                      CubeMX не делает авто netlist с внешними элементами. Или я ошибаюсь?
                                                        0
                                                        В выбранном САПРе нужного вам компонента может и не быть, прийдется рисовать.
                                                        Из софта — да, куб не делает, как и прочий софт. Причин этому — миллион, одну я вам уже называл, это уровни сигналов.
                                                          0
                                                          (U1 1 SONAR1 Echo)

                                                          И конечно все это должно быть интегрировано. Желательно. А не импорт/экспорт.
                                                            0
                                                            А что делать, если в САПРе нет футпринта корпуса/модуля, который вы хотите поставить?
                                                              0
                                                              net list
                                                                +1
                                                                Ну хорошо, я от вашего софта получил нетлист, но чтобы от него перейти к плате — нужны футпринты, которые надо будет нарисовать. Или создание печатной платы мы вообще не рассматриваем?
                                                                  0
                                                                  У меня частично учитывается геометрия (последовательность пинов в чипе и коннекторах, а так же стороны чипа), поэтому я и говорил про интеграцию — чтобы не прописывать дважды их. Тут или импорт или экспорт.

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

                                                                  Футпринт ручками. Хотя и его можно генерировать. Тут вопрос постановки Целевой Функции. Какие критерии?

                                                                  Подразумевается, что элементный базис уже выбран.
                                                                    0
                                                                    А как быть, если корпус BGA?
                                                                      0
                                                                      Давайте остановимся.
                                                                      Мы говорим о 328p.
                                                                      Мы (я) говорим о самоделках, а не промышленных разработках.
                                                                      В данной утилите можно описать простые квадратные корпуса. Если другой тип корпуса, МК, последовательности пинов, то мы добавляем новый класс и прописываем модель.

                                                                      Вот так это выглядит сейчас.
                                                                      addSide();
                                                                      		addPin("PD3", "OC2B", "PWM", "INT1", "PCINT19");
                                                                      		addPin("PD4", "T0", "XCK", "PCINT20");
                                                                      		addPin("", "GND");// OR
                                                                      		addPin("", "VCC");// OR
                                                                      		addPin("", "GND");
                                                                      		addPin("", "VCC");
                                                                      		addPin("PB6", "OSC1", "XTAL1", "PCINT6");
                                                                      		addPin("PB7", "OSC2", "XTAL2", "PCINT7");
                                                                      
                                                                      		addSide();
                                                                      		addPin("PD5", "OC0B", "PWM", "T1", "PCINT21");
                                                                      		addPin("PD6", "OC0A", "PWM", "AIN0", "PCINT22");
                                                                      		addPin("PD7", "AIN1", "PCINT23");
                                                                      		addPin("PB0", "ACP1", "CLKO", "PCINT0");// CLKO|0?
                                                                      		addPin("PB1", "PWM", "OC1A", "PCINT1");
                                                                      		addPin("PB2", "SS", "PWM", "OC1B", "PCINT2");
                                                                      		addPin("PB3", "MOSI", "PWM", "OC2A", "PCINT3");
                                                                      		addPin("PB4", "MISO", "PCINT4");
                                                                      


                                                                      До меня дошло, что не все участники беседы могут клонировать и отредактировать код из github — всетаки это расчитано путь на junior, но программиста.

                                                                      Я сделаю импорт из текстового файл и скомпилирую в запускаемый бинарник, чтобы Вы могли «пощупать». Норм?

                                                                      если корпус BGA

                                                                      А как это сейчас решается? Многослойная разводка? Тонкие дорожки между ножками-пупырышками?

                                                                      С точки зрения ген. алгоритма, да и других ML, AI процессов — задается вектор-ген и набор правил. В данном случае геометрические.
                                                                      Дальше магия и… результат.
                                                      +1
                                                      Тебе про Фому, а ты про Ерёму :-) SPICE-моделирование — хорошо для аналоговой, но, не применимо для цифровой техники. А, для описания нет-листа, — это вообще даже не мазохизм, а маразм. Возми, что-ли для поиграться Proteus, там хоть какие-то (закрытые) библиотеки поведенческих моделей MCU есть. Модели-то всё стерпят, но, не факт, что фирмварь работающая в эмуляторе будет работать на реальном «железе». Твоя софтина автоматически не учитывает казалось-быочевидные для схемотехника вещи — последовательность инициализации IO, влияние состояния пинов при (ре)старте/зависаниях, включения их пулл-ап/даун,… Чтобы дым и «голубой огонек» с мощной переферии не пошел пока проц прочухается.

                                                        0
                                                        В последний раз, когда я симулировал в протеусе (о боже, это был 2008 год), на реальном железе это не заработало. Там не учитываются тысячи мелких параметров, в т.ч. мелкие тайминги и т.п., кторые в реали выплывают.
                                                          +1
                                                          Не у тебя одного :-) Именно так.
                                                            0
                                                            Можно подумать после Altium Designer как-то по-другому :-).

                                                            Там вообще нельзя симуляцию даже Atmega сделать. И тайминги никак не смоделируешь и не предскажешь.
                                                            В итоге все тыком шлифуется.
                                                              0
                                                              Лучше отсутствие моделирования, чем кривое моделирование с ошибками. Проверено кривой связкой САПРов на ПЛИС — дурной timing analysis обеспечил мне три дня мата «да какого лешего рассыпается протокол».
                                                                0
                                                                Иногда это проблема настройки софта, а не его кривая работа. Иногда кривое программирование кристалла (тупо ошибки из-за усталости). Иногда кривая разводка платы.
                                                                Мне хорошо знаком конфликт Программеры против Конструкторов. Кто спалил дорого чип? Менять софт или PCB?

                                                                Сейчас вопрос как уменьшить количество косяков и как быстрее найти оптимальное решение.
                                                                Снизить количество ошибок.

                                                                Но хороший осциллограф и острый глаз/ум конечно не помешает))
                                                                0
                                                                Симуляция не очень хорошо работающая хуже её отсутствия. Ибо она даёт ложное представление о хорошо работающей системе. Ну вообще даже сверхсложные схемы с которыми мне доводилось сталкиваться, никто не симулирует. Разве что идёт проверка процессоров перед отправкой в изготовление в кристалле.
                                                                  0
                                                                  Мне неоднократно помогала симуляция. Отладка кода перед реализацией прототипа в железе очень экономит время и нервы.
                                                                  Кстати влияет на разводку в итоге. Аппаратные ограничения МК так же можно выявить на этом этапе.
                                                                    0
                                                                    Никто не против симуляции. И не зря существует данный инструмент. Просто уровень моих задач обычно такой, что симуляция тут не поможет.
                                                                      0
                                                                      Тут речь шла об Ардуинке. Комбинаторика поменьше.

                                                                      Никто не умоляет достижений конструкторов. Насколько мне известно и материнки и процессоры уровня AMD и Intel добивают вручную. Пока с человеческим мозгом ничто не сравниться в производительности.

                                                                      НО.
                                                                      Если детально прописать прописать Модель, правила, ограничения, формулы — современные машины превосходят человека (Deep Blue — Каспаров, AlphaGO итп)
                                                                  0
                                                                  Не, ну если мелкоскопом забивать гвозди, то не тыка и не получишь. AD — это EDA, а не целевая (под конкретную группу MCU) IDE разработки/отладки софта, типа AtmelStudio/WinAVR, CodeVision, Keil или ещё чего. Их под десятки различных ядер… При должных навыках работы с MCU и знании кодогенерации компиляторов практически не нужных в 95% случаев — хватает редактора и шелла на запуск make проекта. При наличии опыта «грабли», требующие дебага, если и случаются, то чаще всего при подключении незнакомой периферией, со времянками её инициализации и т.п. Cкажу большее, в том-же make or main можно элементарно задать условную кодогенерацию с доступом к i/o как угодно — по их символическим именам, адресам SFR, ассоциациям с периферией… И это будет на порядок быстрее и эффективнее мышковозительства в средах разработки.
                                                              0
                                                              Это все решаемо. Просто эти правила придется прописать в неком формате и загружать при старте утилиты.
                                                              Замечу, правила в виде функций пинов уже прописаны. Они ускоряют процесс, как ни странно.
                                                                0
                                                                Тебе про Фому, а ты про Ерёму

                                                                Прям с языка снял.

                                                                Твоя софтина автоматически не учитывает казалось-быочевидные для схемотехника вещи

                                                                В данный момент она совсем простая и очень эффективно решает простую задачу.

                                                                Модели-то всё стерпят, но, не факт, что фирмварь работающая в эмуляторе будет работать на реальном «железе».

                                                                Но как я уже писал ранее — правила можно добавлять. Главное в них не накосячить)) Машина все проглотит и жаловаться не будет.

                                                                Пулл-ап/даун — это всего лишь еще одна переменная в целевом векторе для Алгоритма.
                                                                  0
                                                                  Дело в том, что этих переменных будет просто куча, для примера рассмотрю более-менее интерфейс I2C:
                                                                  1) Сколько у нас устройств там будет?
                                                                  2) Какие уровни сигналов у этих устройств (1.2/1.8/2.5/3.0/3.3/5.0) и у нашего МК?
                                                                  3) Как будем делать топологию?
                                                                  4) Какая скорость работы у наших устройств?
                                                                  5) А на шине точно чистое I2C, может там SmBus/PmBus?
                                                                  6) Если у нас разные уровни сигналов — какие преобразователи уровня будем использовать?
                                                                  7) Если преобразователи уровня — на какой скорости они будет работать?
                                                                  8) Выходы МК точно по току потянут то, что мы туда повесим?
                                                                  И это вытащено за пару минут, если подумать дольше, то ещё вопросы вылезут.
                                                                    0
                                                                    Переменные и Правила.
                                                                    Они взаимно снижают область поиска решения.
                                                                    Вот Вы уже почти прописали их.
                                                                    ТЗ ведь всеравно пишется. И спецификации. И все это итеративный взаимозависимый процесс.

                                                                    Ваш список вопросов можно переписать на ЕСЛИ-ТО и машина легко их подхватит. Я не говорю уже о ОЕЯ.
                                                                    +1
                                                                    > правила можно добавлять. Главное в них не накосячить)) Машина все проглотит и жаловаться не будет.

                                                                    Гдето мы уже слышали «Нажми на кнопку — получишь результат»(с)
                                                                    Только, кто сказал, что это не кнопка самоликвидатора? :-)

                                                                    Ты ещё просто не понял что в реальной, даже цифровой, схемотехнике между 0/1 не «ещё одна переменная», а туева хуча аналоговых параметров — коэффициенты разветвления, подавление «звона» ДЛ, согласование их волновых сопротивлений и т.д. Не от хорошей жизни для высокоскоростного дизайна PCB рассматривают IBIS-модели компонентов и SI (Signal Integrity). По-незнанию, видя мир бинарным и детерминированным, оно конечно всё «просто». Только потом поЦчемуто ёжиков иголками вперёд рожают.

                                                                    ЗЫЖ Для иллюстрации недетерминированности, даже чисто в разрезе ПО. Сменили опции оптимизации кода и всё, приплыли — при поплывших растактовках/времянках скомпилированного. Сменили версию компилятора на новую и получили вовсе неработоспособное овно. Накатили очередной сервис-пак на Вынь&полож, и трасфер в USB-канале упал в 2-3 раза, преписывай драйверы. С FPGA: из трех трассировок кристалла по одному *HDL-исходнику в системе c высокоскоростным (~100МГц) DAC, работает 1/3, а остальные откровенно глючат, стробируя невалидные данные. И это именно «гонки сигналов» в FPGA, а не SI при идеальных платах.

                                                                    Во всех этих случаях на входе всё, казалось-бы одинаковое, а выхлоп…
                                                                      0
                                                                      Ты ещё просто не понял что в реальной, даже цифровой, схемотехнике между 0/1 не «ещё одна переменная», а туева хуча аналоговых параметров

                                                                      Народ. Давайте не будет лезть в бутылку. Статья концептуальная. Ардуино — как пример. Простой.
                                                                      Я уже говорил в комментах про 1К, 1М, 1G параметров.

                                                                      Почему никто не хочет абстрагироваться?

                                                                      Когда вы ставите разъем на платку — вы задаете переменные {x,y,rot} + куча переменных из библиотеки, которые уже заданы. Никто же не заставляем вас делать это вручную.
                                                                      «Все есть число».
                                                                      Сменили версию компилятора

                                                                      Это тоже может быть переменной, о которых я говорил выше.

                                                                      Но их количество конечно.
                                                                      Вопрос лишь — сколько их? Конкретно.
                                                                        0
                                                                        В качестве примера я неполное кол-во переменных для I2C привёл. Если я начну приводить такие переменные под что-то высокоскоростное — то можно будет тушить свет от их кол-ва. И главный вопрос — какая скорость работы получится, если на каждое соединение будет по 10000 проверок, а самих соединений будет 1000000. Сколько памяти будет сожрано при этом? Может вообще прийдётся такой софт запускать на двуголовом серваке с 64Gb+ оперативки. Для показательно примера можно посмотреть на рекомендуемый размер оперативки для разработки под какой-нибудь Intel Spartan 10, задача внутренней разводки (Plan, Fit, Route) там какраз весьма схожа с вашей. Плюс я уже давно(года с 2015) не видел версии Quartus, которая хотя-бы раз в неделю у меня не вылетала с ошибкой и предложением написать об этом в Intel.
                                                                          0
                                                                          Сколько памяти будет сожрано при этом?

                                                                          А что вам память? 64GB это 300-400$. Для фирмы это копейки. Плюс есть различны методы оптимизации и потребления ОЗУ, процессора и диска.

                                                                          Может вообще прийдётся такой софт запускать на двуголовом серваке с 64Gb+ оперативки.

                                                                          Мелко мыслите. Я предполагаю GPU и TPU.
                                                                          Плюс я уже давно(года с 2015) не видел версии Quartus, которая хотя-бы раз в неделю у меня не вылетала с ошибкой

                                                                          Про него молчу. Я вообще слабо понимаю для чего она сделана и главное как.
                                                                          Кстати, а у него сделали поддержку вычислений на GPU или еще нет?
                                                                            0
                                                                            Не сделали ещё ускорения, только гомогенные вычисления на куче ядер. Плюс сборка проекта с утилизацией под 30-40% средней жирности Arria 10 в части анализа и синтеза обычно занимает менее часа, а вот Fit+Place+Route(то, что весьма схоже с вашим софтом) вполне себе съедает от пары часов до почти дня. И это при том, что особого множества интерфейсов внутри там нет. Нафига сделано — а как вы что-то на плис планируете делать?
                                                                              0
                                                                              Нафига сделано — а как вы что-то на плис планируете делать?

                                                                              Я понимаю что это IDE/CAD для ПЛИС. Сам немного имел дело с простейшей ПЛИС (искал косяки в схеме, софте и разводке одного девайса).
                                                                              Но как то криво очень она сделана. Возможно я недооцениваю сложность всех задач в ней, но……… )
                                                                              Тут камень в наш (программерский) огород. Вероятно её модули надо как-то по другому делать.
                                                                              Fit+Place+Route(то, что весьма схоже с вашим софтом) вполне себе съедает от пары часов до почти дня

                                                                              Про это и речь. Пусть хоть день, хоть неделю.
                                                                              Человек (опытный конструктор) сможет сделать то же самое за этот же период времени?

                                                                              По-честному.
                                                                                0
                                                                                Схематику за неделю? Вполне.
                                                                                  0
                                                                                  Без CAD?))
                                                                                  Сильно сомневаюсь.

                                                                                  Fit+Place+Route хоть как-то используется или можно совсем без него?
                                                                                    0
                                                                                    Схематику без CAD-а я задолбаюсь на бумаге рисовать. Естественно возьму какой-нибудь альтиум/ментор, он всёравно далее будет нужен для разводки платы.
                                                                                      0
                                                                                      Я подтруниваю) Простите.
                                                                                      Но то, что «вижу» я — инструментарий всетаки хромает.

                                                                                      Такой вот вопрос… Вспомните — часто схему приходиться менять? Пины, соединения из-за обратной связи из «реального мира»: помехи, пересечения, расположение?
                                                                                        0
                                                                                        Одна-две ревизии обычно бывает, плюс часто это выходит из-за упущенной errat-ы.
                                                      0
                                                      ээээм
                                                      если мы отсекли все хардварно зависимые пины то расстановка остальных функций на пинах МК РАВНА расстановке на коннекторах.
                                                        –2
                                                        Это Опыт.
                                                        Так же ранее использовались «ручные» эмпирические правила:
                                                        — начинаем процесс соединения с уникальных пинов (SDA, SCL, RXD, TXD)
                                                        — после соединяем разъемы с большим количеством пинов
                                                        последними соединяем пины с более общим спектром функций.

                                                        А если нет Опыта? Неизведанное? Новая система проектируется?

                                                        В итоге shuffle все решил.
                                                        Хаос — рождает Опыт ;)
                                                      +1
                                                      От понятия схемы в современном дизайне (нередко глазками просто не обозримом — сотни тысяч/миллионы гейтов) вообще пытаются уйти. К описанию её поведенческой модели — *HDL, Verilog. Автоматизировано имплементируемой на определённый хардверный базис — PSoC, CPLD/FPGA, топологии ASIC.
                                                        0
                                                        А вот это очень по теме!
                                                        И очень интересно.
                                                        Вы можете чуть подробнее, но доступно для неконструкторов?)
                                                          +1
                                                          А что подробнее? Как есть языки топологического описание аналоговых схем (SPICE, for example, исползуемый десятками систем моделипрования), так есть и языки описания поведенчиских моделей цифровых схем. Hardware Design Language — AHDL/VHDL/Verilog/…
                                                          Когда 25 лет назад друг начинал читать курс разработки на ПЛИС на каф.ЭВМ ХИРЭ не было ни литературы, ни Гугла, — мы сами методички писали. А ныне, ищущий — да обрящет. От AN ведущих фирм — Xilinx, Altera, Actel, до архивов Xcell Journal. У кого с английским напряг есть учебники и на русском, навскидку:

                                                          proektirovanie_vstraivaemyh_MP_xilinx.djvu
                                                          Proektir_i_verifikac_cifr_sistem_na_kristallah_2010.djvu
                                                          Вальп Полезные схемы с применением МК и ПЛИС 2006.djvu
                                                          Говард Высокоскоростная передача цифровых данных высший курс черной магии 2005.djvu
                                                          Грушвицкий Системы на ПЛИС VHD 2002.pdf
                                                          Зотов Проектирование микропроцессорных систем на основе ПЛИС 2007.djvu
                                                          Максфилд Проектирование на ПЛИС Курс молодого бойца Серия Программируемые системы 2007.djvu
                                                          Проектирование и тестирование цифровых систем на кристаллах 2009.djvu
                                                          Стешенко ПЛИС фирмы ALTERA проектирование устройств обработки сигналов 2000.djvu
                                                          Суворова Проектирование цифровых систем на VHDL 2003.djvu
                                                            0
                                                            Не языки, а способы проектирования с помощью постановки целей машине. Правил и параметров.
                                                  +1
                                                  Сядьте как-нибудь и сделайте замеры времени на проектировании новой, пусть и простой, самоделки. Учтите время на продумывание, а не только на сам процесс разводки

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

                                                    «Общая архитектура» связана с процессом создания схемы. Тут ведь не один вариант, а много.
                                                    Всеравно процесс проектирования итеративный.
                                                    Но возвращаясь к этапу схемы, добавляем ограничения или исправления, делаем его с помощью утилиты.
                                                      +1
                                                      Потом понимаем, что в ATMega8 мы не влезли, надо брать что-то жЫрнее и делать модель этого жЫрнее под ваш софт.
                                                      • UFO just landed and posted this here
                                                          0
                                                          Ну вот при использовании полного стека ардуины ситауция «не влезли» гораздо более вероятна, чем при использовании среды от производителя чипа, т.к. код попахивает и зачастую избыточен =)
                                                          • UFO just landed and posted this here
                                                          0
                                                          Буду рад, если спецы в STM32 и других МК помогут мне добавить их поддержку в мои наработки.
                                                          Кстати, если прога не находит решение — это сигнал, что надо базис менять. Если на этапе моделирования это выясниться, то это будет дешевле, чем после реализации «в железе».
                                                  +2
                                                  Чего только люди не сделают ради того, чтобы не учить схемотехнику.
                                                  • UFO just landed and posted this here
                                                      0
                                                      Я ардуину очень сильно не люблю за несколько вещей:
                                                      1) Адов говнокод в библиотеках.
                                                      2) То, как рисуют схемысоединения хлама с этой самой ардуиной (те картинки, где вместо нормальных УГО рисунки, картинки и цветные линии).
                                                      3) Частое незнание основ, порой даже на уровне закона Ома.
                                                      • UFO just landed and posted this here
                                                          0
                                                          Но Борисов и Сворень в итоге потом переходили к нормальным УГО, а вот у ардуинщиков развитие обычно останавливается увы.
                                                          • UFO just landed and posted this here
                                                      –1
                                                      Странно. Всегда считал, что со схемотехникой «на ты» :-)
                                                        +1
                                                        Тогда я вообще не понимаю, чего сложного в соединении 10-20 модулей может быть? Тут даже нет ни одной высокоскоростной шины, нет ни единой диффпары и прочих развлечений, которые просто требуют согласования и расчётов кучи параметров.
                                                          0
                                                          Время — Деньги.
                                                            +1
                                                            Это абсолютно верно, поэтому пока вы будете заводить модель под STM32 в вашем софте я уже успею запустить CubeMX, раскидать в нём все интерфейсы, которые нужны(и куб мне не даст накосячить и выбрать ноги так, что это нельзя будет использовать), открыть любимый САПР(который в любом случае надо будет открывать), нарисовать в нём схему, перейти к плате, разместить внешние разъёмы и нажать пару кнопок, чтобы на выходе получить гербера и сверловку, которую уже смело отправить на завод(или китайцам на завод). Если же мы начнём делать что-то на ПЛИС, да ещё и с высокоскоростными интерфейсами, то к моменту, когда ваш софт начнёт выдавать картину распиновки, на которую не будет ругаться среда разработки, я уже наверняка успею получить готовые прототипы.
                                                              0
                                                              Это прекрасно!
                                                                0
                                                                Правильно. Потому что кто-то уже это сделал.
                                                                Но схему и соединения эти проги сами не делают.
                                                        +6
                                                        по заголовку думал статья будет о том как ардуинщики на генетическом уровне принимают ошибочные решения как железные так и софтовые. почти угадал.
                                                        +2

                                                        Это гены прогАмера :-) Которому лениво даже даташит на используемый в готовом девайсе проц прочитать дальше его распиновки. Чтобы понять что пины у Atmega функционально жёстко к блокам привязаны. И вовсе не равноправны, если задача получить результат, а не поморгать Led.

                                                          –2
                                                          Про Гены — верно!))
                                                          А вот про даташит — ошибаетесь. На 328p я почти наизусть знаю.
                                                          Буду рад, если спецы в STM32 и других МК помогут мне добавить поддержку в мои наработки.
                                                          Спасибо, что читаете мои статьи.
                                                          • UFO just landed and posted this here
                                                              0
                                                              Ага. Базис в виде образования и 18+ лет опыта ))
                                                              И Вам Привет!)
                                                              +1
                                                              В Atmega уровень GPIO (General P....), можно сказать зачаточный. Те, кто знает их потроха никогда не будет их программно использовать, если рациональнее задействовать аппаратную реализацию имеющейся архитектуры. Производительность системы при хардверном распаралеливании функций, эффективном использовании подсистемы прерываний и т.п. будет выше в разы/десятки раз.
                                                                +1
                                                                В более развитых MCU, например, тех-же ARM, и уровень виртуализации периферии (GPIO) от архитектуры уже совсем иной. Как софтовый — SPL, for exampl, так и хардверный — APB. Это к тому, что все эти генные алгоритмы привязок к распиновке теряют смысл. Аналогичено и при исходно правильном (time critical) дизайне и с FPGA.
                                                                  +1
                                                                  С FPGA есть ограничения всё же, когда используются аппаратные блоки. К примеру на пины трансиверов вывести что-то другое среда может и не дать, как и наоборот.
                                                                    +1
                                                                    Да, конечно. В них тоже нужно учитывать архитектуру. Помянул их просто в разрезе также уже заложенной виртуализации периферии. И неактуальности темы — Atmega, на которой под сотню своих проектов сделана, уже уходит из проф. разработок — ARM дешевле и масштабируется не хуже. *дуинки — любительский конструктор, который и использовать пытаются с беспаечными («что-бы линии не пересекались»© ) макетками — для дитяток, которым стрёмно паяльник безнадзорно давать :-)
                                                              +1
                                                              решение которое предлагает автор всегда делается инженером вручную.
                                                              свап пин это немного другое и присутствует в автоматических трассировщиках схем таких как спектра или топор. решение автора делается при разводке схемы.однако не всегда надо соединить линии например spi (хотя чаще всего если элементы присутствуют они соединены). далее на чипе может быть несколько интерфейсов и какие и куда инженер подсоединит зависит от задачи.
                                                              данная поделка решает некому ненужную задачу. хотя и решает.
                                                              если к ней добавить язык для написания конечной задачи то наверное это можно будет рассматривать как один из новых вариантов решения задач топологии схем. решением на полном автомате.
                                                                0
                                                                Ну почему же никому не нужную, а как же Skynet? ))

                                                              Only users with full accounts can post comments. Log in, please.