27 МОСКОВСКАЯ ВСТРЕЧА
Форум самогонщиков Сайт Барахолка Магазин 27 МОСКОВСКАЯ ВСТРЕЧА

Выбор платформы автоматизации

Форум самогонщиков Автоматика
Mnz Магистр Город 254 86
18 Апр. 18, 11:44
Это простое и по-своему изящное решение, но годится только для очень простых задач. Дело в том, что там USB и i2c реализован фактически программно. Можно получить ту же головную боль, какую получили при реализации LITE на тиньках. Только уже со стороны мастера. Поэтому в качестве переходника USB-i2c для нашей задачи лучше выбирать аппаратные реализации как USB (отдельный чип, если делать на AVR-ках), так и i2c (если AVR-ки, то меги с нормальным TWI).OldBean, 14 Апр. 18, 03:05
Можно взять ардуино-совместимую плату о которой писал в соседней теме. В микроконтроллере установленном на ней, аппаратный USB и два аппаратных I2C, которые поддерживают режимы работы Master/Slave. Также поддерживается работа с SMBus.
Кроме USB и I2C на плате есть два SPI, три USART, RTC (часы реального времени), CAN и два 10-ти канальных ADC (АЦП).

Стоит такая плата примерно как Arduino Nano.
OldBean Доцент Красноярск 1K 1.4K
Отв.1  18 Апр. 18, 15:56
Стоит такая плата примерно как Arduino Nano.Mnz, 18 Апр. 18, 11:44
Ну так и Nano вполне может поиграть в USB-i2c бридж. Если целью не является освоить/поиграть с STM, то стОит ли всуе "множить сущности"?
Mnz Магистр Город 254 86
Отв.2  18 Апр. 18, 16:11, через 16 мин
У Nano нет аппаратного USB в микроконтроллере. Вместо него конвертер USB-USART на отдельной микросхеме. То есть кроме как виртуальным COM портом Arduino Nano быть не может.
OldBean Доцент Красноярск 1K 1.4K
Отв.3  18 Апр. 18, 18:42
У Nano нет аппаратного USB в микроконтроллере. Вместо него конвертер USB-USART на отдельной микросхеме. То есть кроме как виртуальным COM портом Arduino Nano быть не может.Mnz, 18 Апр. 18, 16:11
Я не знаю что Вы понимаете под аппаратным USB, но обычно под аппаратной или программной реализацией USB имеется в виду способ исполнения физического уровня протокола USB. Т.е. - "железно" на отдельном специализированном чипе или программно, например, на каких-нибудь универсальных портах (пинах) МК. Ну как, например, в недорогих USBAsp-программаторах. В этом смысле конвертер наны вполне обеспечивает требуемый от него функционал.
Mnz Магистр Город 254 86
Отв.4  18 Апр. 18, 21:17
Я не знаю что Вы понимаете под аппаратным USBOldBean, 18 Апр. 18, 18:42
Подразумеваю аппаратный периферийный модуль USB находящийся внутри микроконтроллера (как например, таймер, USART, SPI, I2C и т. д.).

на отдельном специализированном чипеOldBean, 18 Апр. 18, 18:42
В отличие от специализированной микросхемы которая обычно не позволяет изменить тип устройства, при подключении к компьютеру, модуль USB находящийся в микроконтроллере изначально не имеет определенного типа и то как его воспримет компьютер, полностью зависит от программы выполняемой микроконтроллером. Это дает гораздо большую гибкость чем у специализированной микросхемы, поскольку позволяет создать любой тип USB устройства - мышку, клавиатуру, COM порт, флешку и др. В качестве примера. [сообщение #12806507]
Что примечательно, драйвера устанавливаются автоматически, т. к. HID.
OldBean Доцент Красноярск 1K 1.4K
Отв.5  19 Апр. 18, 03:02
А... Понятно что Вы имели в виду. В самом микроконтроллере (328-й меге) USB, действительно, нет. Но соответствующий чип есть на плате наны. Для такой частной задачи (USB-i2c адаптер) какая разница?

Нет, конечно, если кому-то хочется, чтобы USB был непосредственно в МК (на плате по каким-то причинам не устраивает) и ему лень ставить драйвер (но совсем не лень ставить и осваивать средства разработки софта для STM, погрузиться в архитектуру STM, почитать соответствующую литературу и т.п.), то Ваше предложение может оказаться интересным ;)

PS
У ST великолепные МК, но она влезает в такую плотно занятую и давно освоенную нишу ("легкие" задачи), что, ИМХО, одних только количественных преимуществ (типа наличия очень богатой периферии) явно недостаточно, чтобы все массово стали переходить, например, с AVR-ок на STM-ы. Конечно, при условии, что в обоих случаях ресурсов для решения задачи хватает. Вот если бы они действительно предложили что-то принципиально новое с точки зрения конечных разработчиков, то тогда, наверное, мы бы уже все работали на STM-ах ;)
Mnz Магистр Город 254 86
Отв.6  19 Апр. 18, 08:50
Но соответствующий чип есть на плате наны. Для такой частной задачи (USB-i2c адаптер) какая разница?OldBean, 19 Апр. 18, 03:02
Разница в том что Arduino Nano при подключении по USB может быть только виртуальным COM портом. Т. е. скажем эту конструкцию на ней не сделать аппаратно. Поскольку в STM32F103 имеется USB модуль, то на нем сделать получится. Вот и вся разница.

У ST великолепные МК, но она влезает в такую плотно занятую и давно освоенную нишуOldBean, 19 Апр. 18, 03:02
Давно влезла и успешно заняла свое место. Микроконтроллеры от ST сейчас применяют в шлемах виртуальной реальности, квадрокоптерах и других устройствах, где AVRу не хватит производительности и его применение выйдет дороже (при серийном производстве цена комплектующих имеет значение).

ИМХО, одних только количественных преимуществ (типа наличия очень богатой периферии) явно недостаточно, чтобы все массово стали переходитьOldBean, 19 Апр. 18, 03:02
Не раз приходилось видеть как устройство собирают их нескольких ардуин, потому что у одной недостаточно производительности или периферии (например мало таймеров). На мой взгляд периферия имеет значение. Тот же регулятор напряжения на STM32 с программно-аппаратной точки зрения собрать проще чем на AVR. Во первых у таймера 16-ти битный предделитель с коэффициентом деления 1-65536, а не несколько делителей - 1, 8, 64, 256, 1024 как у таймеров AVR. Это позволяет без особых сложностей выставить нужный коэффициент предделителя. Кроме того у таймеров есть режим работы One Pulse, при котором досчитав до переполнения, таймер выключается, что удобно для фазового управления симистором. Нужно лишь запустить таймер, а после формирования импульса выключится автоматически. С прерываниями тоже лучше чем у AVR. Есть вложенные прерывания с приоритетами. Для фазового управления симистором (и некоторых других случаев) это имеет значение. Возьмем к примеру регулятор напряжения и тока. В AVR если при возникновении прерывания от входа INT выполняется другое прерывание, то от INT будет обработано после него что создаст ошибку времени открытия симистора а значит напряжение будет нестабильно. В STM32 можно настроить прерывания так чтобы наиболее важные могли прервать менее важные и даже если при возникновении прерывания от входа INT выполняется другое прерывание, оно будет прервано более важным от INT и ошибки времени открытия симистора не возникнет. При необходимости таймер можно настроить так чтобы управление углом открытия симистора происходило полностью аппаратно (без прерываний). Другими словами, периферия имеет значение поскольку позволяет достигнуть цели более простыми средствами и получить большую точность работы.

Вот если бы они действительно предложили что-то принципиально новое с точки зрения конечных разработчиковOldBean, 19 Апр. 18, 03:02
А они предложили, только те что привык к AVR и ардуинам на его основе не хотят изучать что-то новое.
Скажем есть ли в Arduino Nano поддержка нормальной внутрисхемной отладки (я не про вывод сообщений через USART, а про отладку по JTAG, SWD)? Есть ли модуль DMA и др.? В Arduino Nano микроконтроллер 8-ми битный, а STM32 - 32-ух битные микроконтроллеры. Это увеличивает производительность при работе с переменными с размером больше байта. У AVR АЦП 10-ти битный с максимум 15 тысяч измерений в секунду. В STM32F103 12-ти битный АЦП с 1 миллионом измерений в секунду. Продолжать можно и дальше. Это все равно что сравнивать автомобиль времен СССР и современный автомобиль.
m16 Модератор Тамбов 1.9K 1K
Отв.7  19 Апр. 18, 09:21, через 31 мин
Нужно лишь запустить таймер, а после формирования импульса выключится автоматически. С прерываниями тоже лучше чем у AVR.Mnz, 19 Апр. 18, 08:50
В AVR если при возникновении прерывания от входа INT выполняется другое прерывание, то от INT будет обработано после него что создаст ошибку времени открытия симистора а значит напряжение будет нестабильно.Mnz, 19 Апр. 18, 08:50
как всё запущено. приведу минимизированный вариант. РМ со стабилизацией напряжения на tiny13 с внешним управлением.
аппаратный таймер один 8-ми разрядный, программно работает как 16-ти раз-ный.
прерывания - 3 уровня: ADC, INT0, T0. приоритеты разруливаются ручками
отладка у авров - debugWire , jtag . пользую обе.
все эти шняги  в виде дма, юсб, десятки таймеров нах не нужны чтобы сделать отменный спирт.


OldBean Доцент Красноярск 1K 1.4K
Отв.8  19 Апр. 18, 10:23
Mnz, я не буду столько категорично и эмоционально защищать AVR, как уважаемый коллега m16. Потому что, "мамы всякие нужны..."

Я полностью и абсолютно согласен с Вами, по поводу замечательных характеристик STM. Я сам, в свое время был полон энтузиазма по поводу этих устройств. У меня даже с тех незапамятных времен завалялась парочка отладочных плат "на тему STM32". Вот, чтобы не быть голословным - откопал в глубинах стола и сфоткал ;)

Но, к сожалению, дальше чем "поиграть" дело не пошло. И главная причина в том, что для подавляющего количества моих текущих задач вполне хватало ресурсов AVR. А когда не хватало ресурсов, я с огромным удовольствием городил много-МК-шную систему. В распределенных системах и параллельных вычислениях есть своя прелесть и своя неповторимая эстетика ;) А иногда было достаточно просто подумать, переформулировать задачу и... ресурсов начинало хватать. Ну и зачем тогда менять платформу?

Конечно, если кто-то только начинает работать с МК, то ему лучше сразу начинать с STM. Тут - без вопросов. STM слишком хороши, чтобы начинать с других (старых) платформ. Тем более, что сейчас это делать гораздо проще, чем лет пять-семь назад.

Ну да ладно, поживем-посмотрим... Даст Бог здоровья - может быть следующую распределенную систему для наших спиртометных дел (SUPER LITE, целиком состоящую из USB-коробочек-контроллеров) сваяем на ардуиноподобных платках STM ;)
STM32.JPG
STM32.JPG Выбор платформы автоматизации. Автоматика.
m16 Модератор Тамбов 1.9K 1K
Отв.9  20 Апр. 18, 08:26
Микроконтроллеры от ST сейчас применяют в шлемах виртуальной реальности, квадрокоптерах и других устройствах, где AVRу не хватит производительностиMnz, 19 Апр. 18, 08:50
    совершенно верно, по причине жёсткого реалтайма. что же касаемо наших задач - процессы медленные и вялотекущие для обработки которых  даже AVR-а много.
про отладку по JTAG, SWDMnz, 19 Апр. 18, 08:50
    при таких достоинствах камня ты юзаешь  протеус что есть зло и пустая трата времени. не умеет он без глюков моделировать работу периферии контроллера. почему устойство работает в протеусе  а железе - нет? это частый вопрос на форумах.
Продолжать можно и дальше. Это все равно что сравнивать автомобиль времен СССР и современный автомобиль.Mnz, 19 Апр. 18, 08:50
неверно. каждому овощу своя грядка. ты же не нанимаешь самосвал для перевозки холодильника? не так ли
Mnz Магистр Город 254 86
Отв.10  20 Апр. 18, 10:29
при таких достоинствах камня ты юзаешь  протеусm16, 20 Апр. 18, 08:26
При необходимости, когда проще и быстрее проверить в протеусе чем собирать в железе. Протеус хорош тем что можно выложить проект на форум и работу устройства смогут проверить без его сборки.
m16 Модератор Тамбов 1.9K 1K
Отв.11  20 Апр. 18, 20:44
    Mnz, спич в том что на сегодня ни один софтовый симулятор/эмулятор не способен со 100% точностью повторять работу заявленного контроллера. не веришь мне  , пожалуйста  есть куча эмбендерских площадок : сахара, электроникс, изиэлектроникс и т.д.  , там почитать , задать вопрос. тебе всякий скажет , что отлаживать  программу/алгоритм  нужно только в железе  внутрисхемным отладчиком.  есть ещё  вариант - на бумаге с карандашом , без сарказма, я так  проверял работу/отлаживал  программы писанные в машинных кодах для 580-го проца в 80-х. всё остальное - грабли.
Немного оптимизировал код под протеус. Теперь работает быстрее.Mnz, 20 Апр. 18, 07:55
    опять же неверный подход. программа писанная на Сях  оптимизируется  через ассемблерный листинг компилятора. другого сспособа не существует.
Mnz Магистр Город 254 86
Отв.12  20 Апр. 18, 21:18, через 35 мин
ни один софтовый симулятор/эмулятор не способен со 100% точностью повторять работу заявленного контроллераm16, 20 Апр. 18, 20:44
Это понятно. Выше написал почему использовал протеус. Не у всех есть плата с микроконтроллером STM32F103 и даже если есть, то не у всех найдется время собирать конструкцию в железе. Намного проще и быстрее запустить протеус и посмотреть работу.

отлаживать  программу/алгоритм  нужно только в железе  внутрисхемным отладчикомm16, 20 Апр. 18, 20:44
Согласен. Здесь в первом сообщении кратко рассказал как выполнять отладку используя ST-Link.
Mnz Магистр Город 254 86
Отв.13  20 Апр. 18, 21:24, через 6 мин
опять же неверный подход. программа писанная на Сях  оптимизируется  через ассемблерный листинг компилятора. другого сспособа не существует.m16, 20 Апр. 18, 20:44
Изменение уровня оптимизации с -O2 на -Ofast немного увеличило скорость работы. Кроме того внес некоторые изменения с библиотеку дисплея HD44780, чтобы быстрее отображалась информация.
m16 Модератор Тамбов 1.9K 1K
Отв.14  20 Апр. 18, 21:31, через 8 мин
Намного проще и быстрее запустить протеус и посмотреть работу.Mnz, 20 Апр. 18, 21:18
блажен кто верует.
Hold Специалист Томск 129 89
Отв.15  21 Апр. 18, 19:40
Из личного - после перехода несколько лет назад на STM32(F1...F4) первое время были мысли типа - "и так можно? И ТАК? Ух, DMA! Продвинутые таймеры! и оперативки вагон! Еще и внешнюю на десяток-другой мегабайт можно повесить? Операционки! И так быстро и удобно?" И кстати, stm дешевле avr. Сейчас даже для простых проектов везде лепим stm. На них быстрее, понятнее отладка, нет ограниченности ресурсов. Рынку все равно, как хитро вы смогли впихнуть программу на асме в какую нибудь тини. Ему важно время разработки. Для хобби - хоть на логике собирайте, лишь бы работало как надо.
сообщение удалено
arkhnchul Доктор наук Москва, Уфа 990 367
Отв.16  21 Мая 18, 16:19
прям начать лучше с чегонить попроще. Если потом переползать на stm32 - можно с stm8, там подходы к документации и периферии примерно одинаковые.
Mnz Магистр Город 254 86
Отв.17  21 Мая 18, 17:03, через 45 мин
Не думаю что будет проще изучать STM8, а потом переходить на STM32. Они не такие сложные что нужен промежуточный этап.