Перейти к содержанию
    

Выбор способа написать программу.

В 25.06.2023 в 13:53, xinortcele сказал:

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

Если для шагового двигателя, то проще всего купить управляющею плату от 3D-принтера.  Могу рекомендовать "MKS Gen М1.4" или  "MKS Gen-L" (последняя чуть дешевле). Цены на Aliexpress приблизительно 1800 руб за первую и 1400 руб за вторую. Я же себе вообще на Авито с рук покупала за 1000 руб, например, здесь:

https://www.avito.ru/moskva/orgtehnika_i_rashodniki/mks_gen_v1.4_3197159280

В этом случае разбираться с микроконтроллерами и программировать вообще можно не уметь 🙂 - плата управляется текстовыми командами - задается координата для каждого из 4-х моторов. Родные драйвера обычно на ток до 2А, но можно при желании подключить и внешние на любой ток.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, Ruslan1 said:

ESP32 имеет очень мало пинов. приходится обвешиваться всякими експандерами.

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

5 hours ago, Ruslan1 said:

ESP32 очень тормознуто реагирует на прерывания. Даже когда отдельное ядро на это выделил для поллинга.

есть такое, но не все задачи решаются на прерываниях, а при двухядерности и скорости ядер можно опрос по циклу сделать

5 hours ago, Ruslan1 said:

Дебаггер для ESP32 (чтобы пошагово ходить и смотреть) нужно делать, и выделять еще пины для JTAG, а в STM32 все уже есть в кейле и работает через ст-линк.

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

5 hours ago, Ruslan1 said:

Если в ESP32 cделать много шагов в сторону и упереться в коре паник, то отлаживаться приходится методом научного тыка (потому как дебаггер не организовал).

ну да, но вебинтерфейс реально помогает 🙂

5 hours ago, Ruslan1 said:

Если нужно больше памяти- то только через сериал, и про перформанс такого решения думать не хочется. 

а какой памяти? 8МБайт вроде в проц встраивают, я только такие покупаю. В STM - только борда с какой-то внешней памятью и регулярными глюками по кеш-миссу по внешней памяти. Но 8МБайт вроде не медленные, у меня 32 битное слово за 20 тактов читается, если несколько слов читать. Да, одно слово читается долго, тактов 100.

 

Не спорю - большая мозоль, я долго на них не хотел переходить, но сейчас только на них - дешего и сердито, даже АЦП, если пользовать от 0.5 до 2.5 вольт - тоже все нормально получается. Причем у меня нет проблем с покупкой всего остального, так как территориально не в РФ, но, черт, все остальное как-то реально расстраивает. А, да, иногда пользую экспандер на GoWin - реально бомба получается, можно гигабитный трафик засасывать, что надо на проце, что надо на плиске обрабатывать, и все можно даже на двухслойке за пару дней развести.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Xenia said:

А чтобы избежать "разводки того же стма со всеми его питаниями" я как раз и рекомендовала готовые платы китайского производства (они недорогие), где базовая обвязка микроконтроллера уже сделана. Они на Aliexpess даже маркируются как "совет по развитию", "минимальная плата", "макетная базовая плата ARM", "обучающая плата" и т.п, поскольку предназначены для начинающих. Тем не менее, даже продвинутые разработчики порой используют такие платы в своих конструкциях. Например, мой знакомый из Новосибирска хорошо отозвался о модуле TI Sitara AM3354 (всё собрано на одном модуле:  Cortex-A8 600 МГц, 128 МБ DDR3, 1 ГБ NandFlash), который одно время довольно дешево продавался у китайцев для кассовых аппаратов (видимо потому и дешево, что выпускался большим тиражом).

почти согласен, то ТС хотел и графики сразу, и, как я понимаю, если смотреть в сторону СТМ - там все будет очень грустно - надо будет разбирать как программировать на линуксе, на контроллере, скорей всего поиметь еще какой-то свисток с мутными драйверами вайфая, и реально - застрелиться будет. А в есп32 - все из абдуриновой коробки блочно собрать за пару дней при должном желании можно. Правда графики будут на жаваскрипте, но там фреймворков много, можно быстро осилить.

 

Единственно, пока ТС от 5 страниц в день до сотни не пройдет, или не осилит ЧатГПТ, у него реально ноль шансов, даже за год, и даже за год постоянного вопрошайничества на форуме.

 

ОФФ: модераторам. А не завести ли пользователя типа ЧатаГПТ, который бы после публикации вопроса сразу бы что-то советовал бы? Реально клево было бы!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, xinortcele said:

Почему можно узнать? В двух словах хотя-бы. 

Потому что на Ардуино вы решите свою задачу быстрее всего, а развитая экосистема Ардуино позволит вам быстро обучиться. Имейте ввиду, что Ардуино не сводится к 8-битным микроконтроллерам.

7 hours ago, EdgeAligned said:

 

ESP32 -штука странная и на любителя. Работа через фреймворк.

ESP32 можно программировать в среде Ардуино.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, iiv сказал:

если смотреть в сторону СТМ - там все будет очень грустно - надо будет разбирать как программировать на линуксе

Ой-вэй, зачем-таки линух на СТМ? 🙂 Тысячи людей цепляли самые различные дисплеи к СТМ-кам и с успехом выводили на них любую графику с любыми диаграммами. Так же цепляли вай-фай-модули и организовываали передачу в сеть или припаивали слот SD-карты и сохраняли на нее файло. Без линуха. Да, для этого нужны знания, усидчивость и умение учиться, а не просто "5 страниц и тормоз".

Посему, топикстартеру - еще раз Ардуина и перебор готовых скетчей до тех пор, пока не заработает. Иных вариантов нет у него.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, EdgeAligned said:

Да, для этого нужны знания, усидчивость и умение учиться, а не просто "5 страниц и тормоз".

золотые слова, полностью с Вами согласен! И, именно поэтому - там однозначно ардуина, хоть на есп32, хоть на буффале, хоть еще на какой борде, что есть под рукой и с разумным и не тормознутым (не атмегой) процессором.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/26/2023 at 11:31 PM, iiv said:

есть такое, но не все задачи решаются на прерываниях, а при двухядерности и скорости ядер можно опрос по циклу сделать

Я бы с удовольствием про ESP32 пообщался, сейчас это рабочая лошадка #2 в моих разработках, но, подозреваю, это не в теме топика :)

Единственное что тут замечу из его недостатков, критичных для меня, это про упомянутую реакцию на прерывания.

Коротко: Если кому-то нужно реагировать быстрее чам 350 ns - то врукопашную на ЕСП32 не получится.

 

Длинно:

Прерывания нужны, когда нужно сделать интерфейс, отсутствующий в ЕСП32. Для меня это был SAI для чтения потока из АЦП. Для его эмуляции нужен SPI, запускаемый в нужный момент по внешнему сигналу. На отдельном ядре поллингом удалось получилось время реакции, плавающее от 150 до 350 ns. Это ограничивает частоту SPI (350ns должно быть меньше половины клока, чтобы все работало). А частота SPI ограничивает возможности АЦП.

image.thumb.png.c908aaa47298ccea5fc947d972737513.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 минут назад, Ruslan1 сказал:

Прерывания нужны, когда нужно сделать интерфейс, отсутствующий в ЕСП32. Для меня это был SAI для чтения потока из АЦП.

Что такое SAI? I2S? Master or slave? И если I2S, то зачем вообще нужны прерывания для его эмуляции через SPI?

PS: Не знаю как на ESP32, но например на XMC4xxx если нужно, то можно эмулировать I2S на SPI без всяких прерываний (и тормозов с ними связанных).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

32 minutes ago, jcxz said:

Что такое SAI? I2S? Master or slave? И если I2S, то зачем вообще нужны прерывания для его эмуляции через SPI?

PS: Не знаю как на ESP32, но например на XMC4xxx если нужно, то можно эмулировать I2S на SPI без всяких прерываний (и тормозов с ними связанных).

В стм32 решением стал именно аппаратный SAI (выбрал камень где он есть), потому я его тут так назвал. В есп32 ничего похожего не нашлось, пришлось свой огород городить.

В документации АЦП интерфейс никак не называется, чтобы никто не спорил :) 


Однонаправленный стрим от АЦП в микроконтроллер (DCLK , DOUT и DRDY это выходы из АЦП), данные нужно начинать читать после DRDY. Проще некуда, но требует быстроты реакции.

image.png.53e26fb4372ab91b8e536fb45dab1e51.png

Тут как ни крути- нужно по DRDY начинать принимать, или фиксировать этот момент (если парсить бесконечно принимаемый поток битов).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, Ruslan1 сказал:

В есп32 ничего похожего не нашлось

Открываем "ESP32 Technical Reference Manual" читаем:

Цитата

12 I2S Controller (I2S)
12.1 Overview
The I2S bus provides a flexible communication interface for streaming digital data in multimedia applications, es-
pecially digital audio applications. The ESP32 includes two I2S interfaces: I2S0 and I2S1.

...

врутс?  :umnik2:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

58 minutes ago, jcxz said:

Открываем "ESP32 Technical Reference Manual" читаем:

врутс?  :umnik2:

Думаю не врут, и I2S там есть. Просто мне I2S не подходит, там WS длинный, не меняется во время передачи данных от одного канала. С моим пульсом DRDY оно не будет работать.

image.png.759cf4d35f339354f035a4e804d7566c.png

Да, в ЕСП32 есть разные режимы I2S. Вначале тоже думал: раз I2S есть то получится какой-то режим подобрать, но не получилось. Ну и у меня не два канала на один период WS, как думает этот I2S.

Upd: Еще одно. Рабочей версией было изменение схемы: добавить железячное удлинение DRDY на следующее нужное количество клоков, и использовать его как CS для слейва SPI. Но удалось обойтись без аппаратных костылей, чисто программными.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, Ruslan1 said:

Рабочей версией было изменение схемы: добавить железячное удлинение DRDY на следующее нужное количество клоков, и использовать его как CS для слейва SPI.

А поставить триггер на DRDY и получить на его выходе WS для I2S не подошло?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...итак, завершается 5-я страница темы - достигнут психологический предел для топикстартера, он встал на ручной тормоз 🙂  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, xvr said:

А поставить триггер на DRDY и получить на его выходе WS для I2S не подошло?

 

Боюсь что просто WS из RDY счетным триггером (то есть получить скважность 2) и пользовать I2S не вариант, У меня же до 32 байт на каждый DRDY валится (8 каналов x 4 байта), я не уверен что I2S в ESP32 имеет такой режим чтения.

 

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

Это тоже сработало бы. Проще и гибче, чем аппаратный счетчик, но требует еще один пин есп32 занимать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, EdgeAligned сказал:

5-я страница темы

Тема ни о чём, автор в первом её сообщении известил всех, что способ уже выбрал, но снова на будущее, с оказией.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...