Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

Re: Научите мастерству на примере кода

Ср сен 14, 2022 21:24:32

Ну тогда вы просто неправильно работаете с шиной I2C. В конце обмена, завершаемого stop-битом, шина всегда возвращается к одному и тому же состоянию - высокие уровни на SDA и SCL, получаемые резисторами подтяжки. Это исходное состояние.
Я не пишу для ардуины. А написанный код для STM32 будет вам непонятен. Остальное я уже неоднократно объяснял на словах. Впрочем, извечная проблема всех ардуинщиков - "ниработает как хачю" и "дайте готовое".
Еще раз пишу - на двух проводах работают по очереди три разных протокола - I2C на дисплей, RS232 на Сериал и SPI термодатчика.

Re: Научите мастерству на примере кода

Ср сен 14, 2022 22:53:10

Это не протокол, а интерфейс. Протокол - это например Modbus, Profibus, MIDI.
Но даже при таком черезопном варианте утаптывания трех различный интерфейсов в два провода есть вариант несколько оптимизировать сию ардуинскую ерундень. Как я и говорил ранее - все команды должны отправляться за один раз, и инит I2C должен делаться перед началом отправки.
Да, конечно, типичный ардуинизъмъ - программная эмуляция интерфейсов, ограниченность входов/выходов, скудные ресурсы. Тут никакой "виртуозности", типичный ардуинизъмъ, щедро приправленный позицией "думать нихачю, дайте готовое".

Re: Научите мастерству на примере кода

Ср сен 14, 2022 23:00:28

Ariadna-on-Line писал(а):на двух проводах работают по очереди три разных протокола - I2C на дисплей, RS232 на Сериал и SPI термодатчика.
плохая идея. особенно с таинственным Сериал. Что это такое?

Re: Научите мастерству на примере кода

Ср сен 14, 2022 23:03:58

Под Сериалом автор понимает простой UART. Кстати, неверно его называть RS232, потому как RS232 - это физический уровень, и он имеет иные электрические характеристики, нежели те, что требуются для I2C.
То есть тут как бы не "RS232 на Сериал", а как раз наоборот, интерфейс UART, реализованный физически на стандарте RS232 (EIA232)/
Впрочем, это уже лингвистические тонкости, ардуинщики не привыкли в них глубоко погружаться.

Да, и совмещать разные по структуре интерфейсы на одних проводах - моветон, как говорят французы. У UART-а есть старт-бит и стоп-бит, у I2C тоже они есть, но кодируются иначе. Совпадающие сигналы могут приводить к ошибкам распознавания разными устройствами. Например, UART-устройство будет постоянно определять ошибку кадра при сигналах другого типа, частично совпадающих с требуемыми для UART. I2C тоже может уходить в ошибку при комбинации некоторых сигналов. И только SPI защищен наличием CS-линии. Если она конечно используется, а не повешана на землю.

Re: Научите мастерству на примере кода

Ср сен 14, 2022 23:46:53

Так по правилам той же адуринки одни и те же линии не могут быть использованы для разных задач без дополнительных ухищрений.
Другое дело, если аппаратный модуль может работать в нескольких различных режимах - uart, spi, i2c...
Но и в том случае потребуется постоянная перенастройка по завершении обмена по каждому из интерфейсов и дополнительно последующая перенастройка на новый режим перед применением. Теоретически возможно - но стоит ли такое делать?
Гораздо проще взять кристалл с большим числом выводов и распределить каналы обмена с внешними модулями.
Или как вариант сделать программную самоделку, умеющую работать на одни и те же произвольно выбранные выводы во всех вышеперечисленных режимах пересылки данных...
:roll:

Re: Научите мастерству на примере кода

Чт сен 15, 2022 06:24:56

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

Re: Научите мастерству на примере кода

Чт сен 15, 2022 10:25:03

В данном случае не ардуинка виновата - правила едины, независимо от того на основе какого семейства МК (или его разновидностей) делается самоделка.
Нужно просто использовать соответствующие особенности МК (или "платформы" с МК), не ожидая от них чего-то более того, что оные могут обеспечить.
В дремучие времена на ЛА3 пытались радиоприемники делать...
8)
MLX90640 писал(а):... Ардуина ... стала синонимом дилетантства.

Подход абсолютно ошибочный (хотя достаточно негативных примеров у начинающих) именно из-за подобного отношения со стороны "Матерых Котов".
Адуринка - всего лишь новый образец элементной базы. И отношение к этим "микросборкам" должно быть соответствующее.
:wink:

Re: Научите мастерству на примере кода

Чт сен 15, 2022 23:00:52

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

Re: Научите мастерству на примере кода

Пт сен 16, 2022 00:22:47

Ariadna-on-Line писал(а):А сделать из гов... того что валяется в столе
Сможете сделать например SSD из гов... и палок? :))) Очень интересно как из транзисторов и других дискретных элементов будете собирать флеш на терабайт! :facepalm:
Это я к тому что из подручных средств можно создать только примитивщину и искусство тут не причем.
Ардуина для серьезных проектов не годится. На ней можно попробовать что-то сделать, но результат будет заведомо хуже чем при нормальном подходе и правильном выборе МК под задачу. Если для задачи нужна скорость и параллельное выполнение, нужно смотреть на наличие соответствующей периферии и DMA, чего в ардуине исходно нет, т. к. отсутствует в основе ардуины - ATmega.

Re: Научите мастерству на примере кода

Пт сен 16, 2022 00:29:42

Тем более, что задача в основном решена, и три провода работают как им положено. Правда пока только в симуляторе.
Это означает, что задача решена процентов на 10, не более.

Re: Научите мастерству на примере кода

Пт сен 16, 2022 09:28:48

Мурик, в данном проекте даже не "полноценная" адуринка - платформа на основе 8-лапки аттини85...
Посему и изворачиваемся как можем.
Каждому МК свое применение должно быть, если конечно не ставится задача из области "а попробую ка я садомазохизм ради спортивного интереса (самообучения)".
8)
Адуринкины платформы на основе АВРок практически весь модельный ряд перекрывают - можно любую вытирать, хоть по количеству и раскладке выводов, хоть по размеру "начинки".
Да и у каждого свой подход к реализации проекта.
Но вот ежли уж делаем "запрос к сообществу" - то извольте и используемые сторонние библиотеки (не входящие в комплект IDE "по умолчанию") приложить - не будет же консультирующий ради одного раза те библиотеки в тырнете выискивать, чтоб хотя бы компиляцию проекта выполнить. У топикстартера таких в проекте аж две вставлены...
Версию платформы с указанием автора(изготовителя) также указать/приложить не помешает - для аттини85 таковых аж две версии (причем в одной из них три варианта использования - без бутлоадера, под optiboot и под micronucleus/digispark).
:beer:

Re: Научите мастерству на примере кода

Пт сен 16, 2022 11:33:36

BOB51 писал(а):Посему и изворачиваемся как можем.
Вместо того чтобы "грызть кактус" нужно правильно подобрать МК. Тогда не придется изворачиваться. Или принципиально нужно овладеть искусством забивать гвозди микроскопом?

BOB51 писал(а):Адуринкины платформы на основе АВРок практически весь модельный ряд перекрывают - можно любую вытирать, хоть по количеству и раскладке выводов, хоть по размеру "начинки".
В AVR8 начинка примитивная по сравнению с другими МК и задачи где нужно изворачиваться на AVR, намного проще решаются на других более мощных и современных МК. Речь не только про тактовую частоту и объем памяти. Речь также про встроенную периферию, позволяющую сделать аппаратно то что в AVR возможно (если возможно) только программно.
К примеру видели ли в AVR8 32-ух битные таймеры? А ШИМ захват сигнала? Или может DMA?

Re: Научите мастерству на примере кода

Пт сен 16, 2022 12:05:51

Да уж... Создать себе трудности на ровном месте и героически их преодолевать часами и это при цене часа как пучек ардуин - такое себе. Три интерфейса на двух проводах - это не виртуозность, а скорее извращение.

Re: Научите мастерству на примере кода

Пт сен 16, 2022 13:33:16

Ничо, через годик мы все начнём на восьмтногих динозаврах по три интерфейса мастрячить, да клавиатуры мультиплексировать с индикаторами. А то зажрались шибко - пару лет назад могли стоногий корпус поставить и на каждую кнопку отдельный вход, и ещё треть выводов незадействованных оставалось :lol: ничо, такими темпами нас щас научат любить искусство оптимизации.
Совсем раньше, помню, на малоногом PIC мультиплексоровал выходы дисплея со входами клавиатуры. А после на хорошую жизнь подсел, 100-ногий корпус STM32, 16 отдельных входов кнопок, 12 выходов на светодиоды, раздельные SPI для дисплея и радиомодуля, 10 выходов на реле, UART отдельно, батарейка, часовой кварц, пищалка, че-то еще.. И все это за каких то 300 руб. А нынче то за 300 руб только такую вот мелочь..

Re: Научите мастерству на примере кода

Пт сен 16, 2022 14:14:24

Оптимизация не садомазохизм.
И восмибитники вполне себе достойные машины.
Просто "с жиру...." стали в каждое устройство пихать и сетевую поддержку и связь через мобилки и прочих излишеств кучи...
На функционале того же утюга разве что электронный терморегулятор вместо биметалла полезен будет.
(В некоторых случаях тем утюгом даже навороченный детектор лжи заменять наловчились :wink: ).
Тем более, что "устаревших моделей" можно у каждого наскрести.
8)

Re: Сделайте за меня мою работу

Пт сен 16, 2022 14:15:46

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

Когда 30 лет назад я только заканчивал институт, один мудрый технолог с предприятия, где я проходил производственную практику в рецензии написал: "Конечный продукт не может быть лучше сырья из которого он сделан". А на словах добавил: "Конфетка, сделанная из г...на, это то же г...но, только в красивой обёртке". С тех пор я никогда не экономил на материалах и инструменте.
Что касается искусства, то, ИМХО, это умение не превратить в г...но качественные исходные материалы. Так то!

P.s. И хватит уже канючить - пишите свой код сами. Все необходимые советы по его оптимизации уже даны.

Re: Научите мастерству на примере кода

Сб сен 17, 2022 02:11:16

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

Добавлено after 11 minutes 56 seconds:
Да уж... и это при цене часа как пучек ардуин...
Если жизнь излишне деловая - функция страдает - половая... И. Губерман.

Добавлено after 10 minutes 44 seconds:
BOB51 писал(а):Посему и изворачиваемся как можем.
...Или принципиально нужно овладеть искусством забивать гвозди микроскопом?
Овладеть исскусством забивать гвозди микроскопом - надо обязательно, причем в совершенстве. А вот забивать гвозди микроскопом - совершенно не обязательно.
ПС. Прошу прощения за флуд. Но "зажранцы" реально "перегибают".
ППС. Допер что в код надо дописать функцию "самосохранения", то есть отключение нагрева при перегреве кристалла процессора.

Добавлено after 31 minute 36 seconds:
Тем более, что задача в основном решена, и три провода работают как им положено. Правда пока только в симуляторе.
Это означает, что задача решена процентов на 10, не более.
Можете считать что на 90 процентов. Разрабатывать и изготавливать печатные платы и паять элементы умею в совершенстве.

Re: Научите мастерству на примере кода

Сб сен 17, 2022 12:58:01

Ariadna-on-Line, зачем вы создали эту тему?
Чтобы научится мастерству? Тогда не нужно игнорировать опытных разработчиков знающих не только ардуину, но и много других платформ. Вам объясняют что ардуина не оптимальна на уровне софта и исправить это можно только полностью переписав все ее библиотеки. Кроссплатформенность возможна для ПК, но для МК это не позволительная роскошь, ведущая к большим накладным расходам и не оптимальному использованию возможностей - сплошной ногодрыг вместо правильного использования периферии.
Забудьте про AVR8. Они устарели и подойдут для очень простых задач. Их быстродействие, объем памяти и периферия оставляют желать лучшего. Может быть со временем поймете это если откажитесь от ардуины и перейдете на более современные МК с ядром ARM. Тогда сравните возможности и удобство разработки и поймете сколько времени зря потратили на не оптимальную ардуину.

Re: Научите мастерству на примере кода

Вс сен 18, 2022 10:16:27

Ну уж простые задачи АРМом закрывать - это тот же
"Осциллограф в роли молотка"...
8)
Для начала с обычными 8-битниками освоиться не помешает (хотя бы " улучшенная среднемладшая"от пиковых),
Суметь приткнуть пик18, пик 24...
Не забыть про новые АВРки , силабсы и прочих...
В общем -выбор достаточно широкий.
:beer:

Re: Научите мастерству на примере кода

Вс сен 18, 2022 10:45:33

Не, ну раньше так и было, чо. При цене мелкой STM-ки в несколько раз меньше того же PIC16/ATtiny весьма было выгодно ставить те же STM32F030F4, а сама задача решалась значительно проще благодаря возможностям микроконтроллера. Даже если взять хотябы приоритетный многовекторный контроллер прерываний и наличие DMA, уже только это очень упрощало жизнь. Да че там долго рассказывать, это стоило пару раз попробовать, чтобы уже не возвращаться обратно на старые авр/пик.
Вон в соседней теме автор спрашивает, как можно в 4-канальном DMX-контроллере освещения на PIC16 увеличить частоту ШИМ до 4 - 10 кГц. Вроде пустяковая фигнюшка - вход DMX и 4 выхода ШИМ, ниче сложного. А вот ответ - на PIC16 - ваще никак, его скоростных возможностей просто не хватит для этого ну никак. На STM32F030 - пожалста, запросто, 4 канала ШИМ автоматически сгенерируются.

Сейчас вот правда реалии подпортили малость - сначала 2020 год, а теперь еще и нынешнее положение в 2022 году. Вот я и говорю, что через пару лет в таком темпе - и поневоле начнешь экономить. Хотяяяяя... Вон на Али плата BlackPill с STM32F401 или 411 - вообще шикардос, в добавок еще и FPU на Cortex M4. И при выборе Arduino или BlackPill я полюбасу выберу на STM32.

хотя бы " улучшенная среднемладшая"от пиковых

Нееее, я еще в те годы смотрел, никаких там надежд - у нее (PIC16F1xxx) так и остались "детские болезни" от старых версий, просто их расширили. Страничная (банковая) организация ОЗУ и регистров периферии, 4 такта на инструкцию, какие-то там еще нерешенные проблемы, не помню уже. Да, что-то добавили и расширили, но не так уж, чтобы прям всё бросать и хвататься за PIC16F1xxx.
PIC18 - тоже как бы... промежуточное звено. С распространением в те времена STM32 по цене в несколько раз дешевле востребованности PIC18 в любительской среде вообще не наблюдалось.
PIC24 - я до них даже и не дошел, потому что при наличии STM32 они были бессмысленными и слишком дорогими. К тому же, мой программатор их не поддерживал.
Ответить