Революция по имени Arduino

8-битные микроконтроллеры AVR (AT90, ATtiny, ATmega) от Atmel (в настоящий момент принадлежит Microchip)

Moderator: Shaos

Mondx
Doomed
Posts: 505
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Революция по имени Arduino

Post by Mondx »

Mildi wrote: Не понимаю я радикалов с их вот такими бросаниями в крайности....
Всё должно быть гармонично.) Для себя ты можешь делать как угодно, а вот показывать людям... Засмеют.) Особенно, если попытаешься куда то тулить в серию.)
Mildi
Fanat
Posts: 57
Joined: 24 Aug 2022 23:08

Re: Революция по имени Arduino

Post by Mildi »

Mondx wrote: Как раз таки это и есть дурной тон. На то он и высокоуровневый язык, что бы видеть логику и не видеть физику.
Ввод-вывод выносится в хедеры в виде макро или инлайн функции. Либо используются функции Ардуино. В самом теле программы его быть не должно.
А тогда, при переносе на другой МК, правится только ввод вывод в хедере. Всё это в одном месте.

Смысл в количестве стороннего ПО - библиотек, примеров, проектов. Ты быстро макетируешь устройство и проверяешь функционирование. А дальше уже можешь вылизывать под себя. Плюс комьюнити, а это важно. И не только для начинающих.
C МК на голой логике далеко не уедешь. Физику надо учитывать даже в этом случае. Например отличие прерывания PCINT N от INT N.

Количество ПО увы не означает качество, да и не все что есть на С например перенесено в Ардуино, так и не все что есть в Ардуино реализовано на С. С остальным согласен, но комьюнити пишущих на С не меньше чем пишущих на Ардуино. Так что опять же никакого ощутимого профита в смене одного комьюнити на другое нет.
А вот для начинающих как раз да Ардуино очень удобно в связке (IDE + Язык + Урезанная под одни стандарты платформа + готовая переферия + комьюнити которое обсасывает эту связку со всех сторон)
Mondx
Doomed
Posts: 505
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Революция по имени Arduino

Post by Mondx »

Mildi wrote: C МК на голой логике далеко не уедешь. Физику надо учитывать даже в этом случае. Например отличие прерывания PCINT N от INT N.
Естественно. Я же не говорю что не нужно учитывать физику. Я говорю что бы она была оформлена. А это не только наглядность при чтении, но и удобство при переносимости. Как раз Ардуино для этого. Другое дело что многие пишут для него как не попадя, но это культура(.
Mildi wrote:Количество ПО увы не означает качество, да и не все что есть на С например перенесено в Ардуино, так и не все что есть в Ардуино реализовано на С. С остальным согласен, но комьюнити пишущих на С не меньше чем пишущих на Ардуино. Так что опять же никакого ощутимого профита в смене одного комьюнити на другое нет.
Да ладно! А вы сравните активность на русскоязычных форумах по Си и Ардуино.
Ну а качество вы уже сами для себя будете выбирать и делать. Главное, что бы было из чего выбирать.
Электромонтёр
Fanat
Posts: 97
Joined: 23 Feb 2018 22:20

Re: Революция по имени Arduino

Post by Электромонтёр »

Я ардуину использовал оочень недолго, а потом продал знакомому. Там был какой-то глюк компилятора, и если менять местами две строчки с независимыми операциями типа а+б и в+г то поведение мк менялось. Сын знакомого потом с этой ардуиной потом диплом в своём технаре защитил, один из всей группы притащил работающую вещь и продемонстрировал работу своего макета. Паял ему батя, а сам парнишка только программу писал )

Готовые платки есть с мк синие таблетки с STM32/1986ВЕ92, если неохота разводить и/или беспаечно макетировать надо. Я во второй итерации своего недоПЛК поставил STM и написал на С свою портируемую библиотеку функций. Можно эту библиотеку при надобности переписать под другой МК, хоть авр, хоть микроновский амур, хоть тот же миландрокортекс, и программа пользователя на макросах будет также работать. Так пять гидропрессов на местном заводе переоборудовано с релейной схемы на мой контроллер. Входы-выходы с помехоустойчивостью, подавление дребезга программное. Опторазвязку, пришлось ставить российскую, не всё можно достать контрабандным параллельным импортом и русские оптроны на удивление работают даже лучше.
Mondx
Doomed
Posts: 505
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Революция по имени Arduino

Post by Mondx »

Электромонтёр wrote: 03 Jan 2025 01:38 Я ардуину использовал оочень недолго, а потом продал знакомому. Там был какой-то глюк компилятора, и если менять местами две строчки с независимыми операциями типа а+б и в+г то поведение мк менялось.
Ну да, конечно! Там ТАКОЙ глючный компилятор, глюк на глюке, прям, ужос. Особенно поначалу. А пример не дашь? Что б самому не наступить. Заодно и проверим.
Всегда!
User avatar
FizikS
Maniac
Posts: 264
Joined: 11 Oct 2018 00:52
Location: г. Клинцы, Брянская обл.

Re: Революция по имени Arduino

Post by FizikS »

Я пробовал программировать Arduino на Flowcode v10 (бесплатная версия для некоммерческого использования после регистрации). Код получается более компактный и быстрый по сравнению с родным ардуиновским компилятором. Плюсом имеем множество встроенных библиотек для подключения различной периферии и возможность симуляции схем с наблюдением результатов (но не для всех схем). Программирование происходит в виде блок схем (визуальное программирование). Отторжения не возникает. Единственный недостаток - громоздкие схемы алгоритмов.
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Революция по имени Arduino

Post by Lavr »

Mondx wrote: 31 Dec 2024 02:46А тогда, при переносе на другой МК, правится только ввод вывод в хедере. Всё это в одном месте.
Вот это и называется:"Благими намерениями выстлана дорога в Адъ!" :mrgreen:
Нифига код так просто не переносится даже между близкими МК.

Вот живой пример: после НГ решил я перенести вот этот довольно простой проект:
viewtopic.php?t=9459&start=30
на простую ATMega8 в DIP корпусе, благо их есть у меня...

Сутки вчера башку ломал, переписывая работу ТС2 в режиме СТС. :roll:

А по началу тоже думал, вон автор проекта поменял хедеры, и - ура! :lol:

Code: Select all

;.include "m328pdef.inc"
.include "m168def.inc"
Но, как оказалось, ТС2 в режиме СТС и по родному мануалу ATMega8 не совсем
точно работает, если вникать в детали. :-?
iLavr
Mondx
Doomed
Posts: 505
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Революция по имени Arduino

Post by Mondx »

Это ассемблер. Заголовочные файлы m8def.inc, m168def.inc описывают регистры и биты соответствующих МК. Но мега8, мега16... - это старое семейство AVR. У нового мега88/168/328 значительные отличия от старого как в наименованиях регистров/бит, так и некоторые отличия в функционировании/инициализации.
См. хотя бы https://ww1.microchip.com/downloads/en/ ... oc2553.pdf.
В Ардуино же это может выглядеть так:

Code: Select all

#include "timer2.h"

// в самом скетче будет одинаково для любого МК
void setup() {
  timer2_init();
  ...
}

// в timer2.h будут отличия. Для мега168
inline void timer2_init() {
  OCR2A = TIMER_VALUE;
  TCCR2A = 1<<WGM21; TCCR2A = 0; //CTC mode
}

// для мега8
inline void timer2_init() {
  OCR2 = TIMER_VALUE;
  TCCR2 = 1<<WGM21 | 0<<WGM20; //CTC mode
}
В этом случае, при переходе с мега8 на 168, можно ручками подправить хедер, а можно включить директивы условной трансляции, типа, #ifdef __AVR_ATmega8__ ... #elif defined __AVR_ATmega168__ ... #endif
User avatar
Lavr
Supreme God
Posts: 16680
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Революция по имени Arduino

Post by Lavr »

Спасибо за лекцию, Капитан Очевидность... :wink:

Как говаривал один мой старый знакомый-телемастер:
"И мы знаем, как работает троллейбус,
вот только никак не поймём, как бензин
по проводам поступает..."

Я был далёк от мысли, что всё заработает при смене файла-хедера.
Но всё же надеялся, что хотя бы порты ВВ заработают, а уж таймер я сам подшаманю... 8)

Но именно такими благими намерениями и выстлана дорога в Адъ! :roll:
iLavr
Mildi
Fanat
Posts: 57
Joined: 24 Aug 2022 23:08

Re: Революция по имени Arduino

Post by Mildi »

FizikS wrote: 03 Jan 2025 02:30 Код получается более компактный и быстрый по сравнению с родным ардуиновским компилятором.
Там родной компилятор GCC, размер кода и торможения от того что элементарная работа с портами идет через библиотеку с кучей проверок.

Если нужна скорость, то не используешь встроенные библиотеки Ардуино, а пишешь на чистом С/С++ в Ардуино ИДЕ и получаешь код почти без лишнего мусора по быстродействию на уровне других компиляторов С/С++.
Mildi
Fanat
Posts: 57
Joined: 24 Aug 2022 23:08

Re: Революция по имени Arduino

Post by Mildi »

Mondx wrote: 03 Jan 2025 23:28
В Ардуино же это может выглядеть так:
Оно так на любом С подобном языке выглядит.

В любом случае чтоб это дописать, надо сначала даташит почитать.
Но заниматься этим будут скорее те кто пишет код изначально под разные МК.
При адаптации кода с одного МК на другой обычно этим не занимаются, а сразу инициализацию таймера правят под новый МК
Mondx
Doomed
Posts: 505
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Революция по имени Arduino

Post by Mondx »

Mildi wrote: 04 Jan 2025 09:41 Если нужна скорость, то не используешь встроенные библиотеки Ардуино, а пишешь на чистом С/С++ в Ардуино ИДЕ и получаешь код почти без лишнего мусора по быстродействию на уровне других компиляторов С/С++.
И не почти без, а вообще без.) И даже на ассемблере можно.
Оно так на любом С подобном языке выглядит.
Естественно. Так речь то об Ардуино.)
Mondx
Doomed
Posts: 505
Joined: 10 Aug 2022 07:27
Location: Crimea

Re: Революция по имени Arduino

Post by Mondx »

Mildi wrote: 04 Jan 2025 09:57...обычно этим не занимаются, а сразу инициализацию таймера правят под новый МК
Обычно тяп-ляп у многих.
Всегда!
Mildi
Fanat
Posts: 57
Joined: 24 Aug 2022 23:08

Re: Революция по имени Arduino

Post by Mildi »

Mondx wrote: 04 Jan 2025 10:18
Mildi wrote: 04 Jan 2025 09:57...обычно этим не занимаются, а сразу инициализацию таймера правят под новый МК
Обычно тяп-ляп у многих.
В большинстве случаев этого больше чем достаточно...
-Работает?
-Работает!
-Хай работает, оставляем.
Пару раз такой тяп ляп даже в серьезные проекты утек... Просто скопировали, даже не смотрели что к чему. Зато сразу видно у кого содрали :ebiggrin:
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Революция по имени Arduino

Post by Shaos »

тяп-ляп-работает-нетрож это девиз всех программистов всех времён во всех странах :lol:
Я тут за главного - если что шлите мыло на me собака shaos точка net