Здравствуйте, alex_public, Вы писали:
_>Кстати говоря, современный C++ с его статическим полиморфизмом, constexpr и т.п. — это просто мечта для программирования маленьких МК, у которых обычно сильно ограничена память.
А реальность такова, что на AVR он нафиг не упёрся, т.к. большинство "программ" под него очень простые, да и динамическое распределение памяти редко используется из-за того, что этой самой памяти с гулькин нос. С АРМами конечно всё обстоит по-другому, но там и комлилятор умеет гораздо больше, в т.ч. и С++хх.
Здравствуйте, alex_public, Вы писали:
_>Так вот, то что обычно называют ардуинкой — это готовый фреймворк для любителей, созданный для работы с процессорами архитектуры AVR. Т.е. это убогое решение сразу по двум измерениям. Естественно есть готовые фреймворки/платы (всяческие другие *duino'ы, edison'ы, ChipKIT'ы и т.п.) и под другие архитектуры, чтобы любители особо не страдали. Но если заниматься по серьёзному, то лучше сразу начать с низкого уровня: голый МК и чистый C++.
Во-первых, многие либы, написанные под Ардуино, работают и под АРМдуино (типа такой — там стоит Cortex-M3) — я лично проверял и пока не натыкался на какие-то проблемы. Во-вторых, обилие готовых библиотек — это как раз то, что нужно любителям, у которых нет целых отделов, занимающихся железом, и отделов, занимающихся софтом, и которым для поддержания мотивации нужны быстрые результаты, а не многочасовые корпения над даташитами.
Что-то ты вообще ничего не понял из написанного. Профессионально/любитель — это речь совсем не о месте работы, а о навыках человека. Любители используют готовые типовые решения, а профессионалы редко их используют, т.к. они обычно неоптимальны по всем параметрам. И соответственно профессионал будет использовать одинаковый подход и дома и на работе.
Далее, ты тут привлёк ещё одно "измерение", когда заговорил о производительности МК (типа ардуинки не хватит на коптер). Так вот это вообще отдельная тема и обычно не особо влияет на выбор платформы/архитектуры, т.к. сейчас почти у каждого производителя есть большая линейка моделей на любой вкус. Т.е. тех же AVR (для которых ардуинка создана) множество. А про Cortex-M я вообще молчу. Есть любой "мощности", за очень разные деньги. Т.е. нет шкалы "слабая ардуинка и более мощные решения", а есть параллельные линейки процессоров разных архитектур.
S>Я — любитель (хотя и на работу уже пару вариантов применения обдумываю, в том числе часы 4хсегментные из светодиодных лент, высотой в три этажа). Как я понял — пока что мне хватит ардуинки. Если перестанет хватать её — буду смотреть дальше уже осознанно и с пониманием.
Не понятна фраза "пока что мне хватит ардуинки". Тебе подходит любое решение влезающее по деньгам (а таких будет множество даже в низшем ценовом диапазоне). Но определяясь с выбором платформы, ты тем самым ещё и определяешься с выбором языка программирования/моделью памяти/компиляторов/IDE/библиотек и т.п. Так вот у ардуинки с этим всё достаточно специфично. Огромные готовые библиотеки компенсируются общей убогостью и отсталостью всего остального.
Здравствуйте, koandrew, Вы писали:
K>Во-первых, многие либы, написанные под Ардуино, работают и под АРМдуино (типа такой — там стоит Cortex-M3) — я лично проверял и пока не натыкался на какие-то проблемы.
Ну так как раз это я и пытаюсь объяснить Шеридану. Что оси "Любительское/профессиональное (ардуино и т.п. или нет)", "архитектура (avr/pic/arm и т.п.)" и "производительность (частота процессора, набор периферии)" являются абсолютно независимыми друг от друга и их можно менять каждую по отдельности под свой личный вкус. )
K>Во-вторых, обилие готовых библиотек — это как раз то, что нужно любителям, у которых нет целых отделов, занимающихся железом, и отделов, занимающихся софтом, и которым для поддержания мотивации нужны быстрые результаты, а не многочасовые корпения над даташитами.
Ну всяческие серьёзные библиотеки (под разные протоколы и т.п.) на самом деле везде имеются. У ардуинки просто есть ещё и всякая мелочь под простейшие действия или под свои бесчисленные платы расширений. Вообще мне кажется, что ардуинка — это такой идеальный конструктор для обучения старших школьников основном современной электроники. Там достаточно соединить готовые купленные блоки (главная плата и пара шилдов), а потом совместить в ide пару готовых модулей под неё и всё заработает. Однако для целей разработки, а не учёбы это всё выглядит крайне несерьёзно.
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Sheridan, Вы писали:
_>Что-то ты вообще ничего не понял из написанного. Профессионально/любитель — это речь совсем не о месте работы, а о навыках человека.
Нет. Профессионал это тот, кто занимается чем либо профессионально, у него такая профессия. Если я уйду из админства в программисты, я перестану быть профессионалом-админом и стану профессионалом-программистом.
А то, о чём ты говоришь — это навыки, опыт.
_>Малоопытные используют готовые типовые решения, а мастера редко их используют, т.к. они обычно неоптимальны по всем параметрам. И соответственно мастер будет использовать одинаковый подход и дома и на работе.
Я подправил. Теперь правильно звучит, с этим согласен.
_>Далее, ты тут привлёк ещё одно "измерение", когда заговорил о производительности МК (типа ардуинки не хватит на коптер). Так вот это вообще отдельная тема и обычно не особо влияет на выбор платформы/архитектуры, т.к. сейчас почти у каждого производителя есть большая линейка моделей на любой вкус. Т.е. тех же AVR (для которых ардуинка создана) множество. А про Cortex-M я вообще молчу. Есть любой "мощности", за очень разные деньги. Т.е. нет шкалы "слабая ардуинка и более мощные решения", а есть параллельные линейки процессоров разных архитектур.
Ок, спасибо, буду знать.
S>>Я — любитель (хотя и на работу уже пару вариантов применения обдумываю, в том числе часы 4хсегментные из светодиодных лент, высотой в три этажа). Как я понял — пока что мне хватит ардуинки. Если перестанет хватать её — буду смотреть дальше уже осознанно и с пониманием. _>Не понятна фраза "пока что мне хватит ардуинки". Тебе подходит любое решение влезающее по деньгам (а таких будет множество даже в низшем ценовом диапазоне). Но определяясь с выбором платформы, ты тем самым ещё и определяешься с выбором языка программирования/моделью памяти/компиляторов/IDE/библиотек и т.п. Так вот у ардуинки с этим всё достаточно специфично. Огромные готовые библиотеки компенсируются общей убогостью и отсталостью всего остального.
Ну, во первых, не пугай меня сложностью языка. Я писал на куче их, от форта и перла до ц++ и пэхапэ. Разберусь
А во вторых, просто дай линк на ебэй\алиэкспрес на стартеркит твоего любимого МК, я посмотрю, возможно и его прикуплю на потрогаать. Я ж сразу у IID линк попросил... Я вот хз, нопример, в этих МК, ну то есть ни в зуб ногой воащпе, но интересно потрогать\попрограммировать. И мне тупо трудно с нуля начать разбираться в моделях этих МК. Дай линк, пожалуйста.
Здравствуйте, Sheridan, Вы писали:
S>А во вторых, просто дай линк на ебэй\алиэкспрес на стартеркит твоего любимого МК, я посмотрю, возможно и его прикуплю на потрогаать. Я ж сразу у IID линк попросил... Я вот хз, нопример, в этих МК, ну то есть ни в зуб ногой воащпе, но интересно потрогать\попрограммировать. И мне тупо трудно с нуля начать разбираться в моделях этих МК. Дай линк, пожалуйста.
STM32. Впрочем, я настоящую STM32 Discovery Board использовал, она что-то типа в $12 обошлась.
Здравствуйте, Sheridan, Вы писали:
S>Нет. Профессионал это тот, кто занимается чем либо профессионально, у него такая профессия. Если я уйду из админства в программисты, я перестану быть профессионалом-админом и стану профессионалом-программистом. S>А то, о чём ты говоришь — это навыки, опыт.
Это всё вопрос терминологии. ) ОК, если хочешь, я могу общаться в твоих терминах. )
S>Ну, во первых, не пугай меня сложностью языка. Я писал на куче их, от форта и перла до ц++ и пэхапэ. Разберусь
В том то и дело, что оно не сложное, а убогое — там ухудшенный C. А я предпочитаю как раз более сложное, но зато удобное и мощное — современный C++.
S>А во вторых, просто дай линк на ебэй\алиэкспрес на стартеркит твоего любимого МК, я посмотрю, возможно и его прикуплю на потрогаать. Я ж сразу у IID линк попросил... Я вот хз, нопример, в этих МК, ну то есть ни в зуб ногой воащпе, но интересно потрогать\попрограммировать. И мне тупо трудно с нуля начать разбираться в моделях этих МК. Дай линк, пожалуйста.
Здравствуйте, alex_public, Вы писали:
_>Ну так как раз это я и пытаюсь объяснить Шеридану. Что оси "Любительское/профессиональное (ардуино и т.п. или нет)", "архитектура (avr/pic/arm и т.п.)" и "производительность (частота процессора, набор периферии)" являются абсолютно независимыми друг от друга и их можно менять каждую по отдельности под свой личный вкус. )
Лично я выбрал атмел (дла и чего греха таить — вообще повторно заинтересовался этой темой) из-за наличия ардуино, для которого в инете бездонное море информации для самого разного уровня (от "впервые вижу" до эксперта).
_>Ну всяческие серьёзные библиотеки (под разные протоколы и т.п.) на самом деле везде имеются.
По большому счёту драйверов шин (UART, SPI, I2C и т.д.) достаточно, чтобы подключить всё что угодно. Но для этого нужно обладать навыками программирования и электроники, а у многих любителей они отсутствуют (по крайней мере на начальной стадии — потом всё равно разбираются).
_>У ардуинки просто есть ещё и всякая мелочь под простейшие действия или под свои бесчисленные платы расширений. Вообще мне кажется, что ардуинка — это такой идеальный конструктор для обучения старших школьников основном современной электроники. Там достаточно соединить готовые купленные блоки (главная плата и пара шилдов), а потом совместить в ide пару готовых модулей под неё и всё заработает.
И именно этим она привлекает новичком типа Шеридана, которым интересно что-то сделать, но отсутствует теоретическая база. Со временем они разберутся во всём этом (ибо нет там ничего сложного), но при этом избегут "шоковой" терапии, которая возникает в случае, когда тебе просто вручают девкит, даташит и требуют рабочее решение "уже вчера".
Мой случай особый, потому что я всё это изучал в универе, а потом просто карьера сложилась в другом направлении, и в итоге эти знания оказались невостребованными. Но занявшись этой темой, я довольно быстро вспомнил всё, чему меня учили, и потому в принципе без проблем могу взять любой МК и любое устройство, и заставить их говорить друг с другом при наличии даташита.
_>Однако для целей разработки, а не учёбы это всё выглядит крайне несерьёзно.
Это не что иное, как обыкновенный профессиональный шовинизм ("сначала добейся"). На самом же деле платформа Ардуино даёт полный и 100% доступ к железу (в Ардуино можно сделать 100% того, что можно сделать на "голом металле"), более того в Atmel Studio имеется импортёр проектов Адруино ИДЕ, который позволит плавно перейти от "скетча" в Ардуино ИДЕ к полноценному продукту на самом что ни на есть православном С/С++. Кстати сами по себе библиотеки для Ардуино написаны на самом обычном С++, и они обычно с минимальными изменениями переносятся на "голый металл" (собственно этим фактом и пользуется Atmel Studio, когда экспортирует скетчи).
Здравствуйте, Sheridan, Вы писали:
S>А если я захочу себе дома собрать гексакоптер, да еще с мозгами, то тут да, желательно нечто пошустрее ардуинки, ибо реагировать надо в реальном времени. Это — "любитель, хобби".
Я ещё хотел отметить один факт — в отличие от компа, железо которого обычно фиксированное, в мире МК, если производительности (или памяти, или портов ввода/вывода, или ещё чего) чипа перестаёт хватать, всегда можно добавить второй чип, и вынести на него какую-то часть общей задачи. Причём это можно масштабировать почти сколько угодно, при этом один из чипов будет "главным" — то есть он будет координировать работу всех остальных — а остальные будут "ведомыми", и каждый из них будет выполнять какую-то часть общей работы. Общаться между собой они могут, например, по шине I2C (используя ардуиновскую библиотеку Wire, общение займёт всего несколько строчек кода). Да, кстати, если ты сам ещё не нашёл — вот тут лежит документация (с примерами использования) по всем библиотекам и функциям платформы. Сохрани эту ссылку — она тебе пригодится много-много раз.
Здравствуйте, koandrew, Вы писали:
K>Ну и нафига тогда этот АРМ нужен для моргания светодиодами?
Я до сих пор не услышал ответа на вопрос, а почему нет? Почему за бесплатно не получить возможность кодить в нормальном С++, почему не получить возможность сделать на операционке FreeRTOS, почему не получить просто так больший объем памяти? Разница в цене просто копейки.
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, Denwer, Вы писали:
D>>Ну так с этого и нужно было начинать, а не писать что 8-ми бит хватает.
K>Нет — важно именно то, что "хватает". А раз мне любого МК хватает, то в дело вступают другие факторы — в моём случае тулчейн. Если бы мне не хватало МК, то никакая ИДЕ не заставила бы меня иметь дело с платформой, которая не может решить моих задач.
Ну тогда при таком подходе вообще спорить какой МК лучше или хуже нет, каждый выберет по тулчейну. И это верно. Но постановка вопроса была в другом — какой МК использовать, без учета тулчейна. Во всяком случае он тут даже не упоминался. Разумеется, если у тебя опыт по атмелу, то SТМ32 явно не нужен.
Здравствуйте, koandrew, Вы писали:
K> Использовать 32-битный контроллер для управления миганием светодиодов (и прочих подобных задач, где справился бы и 20-летний калькулятор) — вот это и есть настоящий идиотизм.
на самом деле армы удобнее. Особенно cortex-m3. Там единое адресное пространство, там больше ресурсов, для них больше инструментов и они дешевле, m3 специально заточены под си, там не надо писать на асме вообще (в том числе и стартап) и не нужны расширения компилятора (а для авр-ок нужны, как минимум для прерываний — ибо специальная инструкция возврата). Три адресных пространства (flash, ram, eeprom) тоже удобства не добавляют. В stm32 удобнее организована работа с периферией, да масса плюсов
Кроме того, они стоят так же или даже дешевле.
8-битники живы по историческим причинам, плюс в некоторых специфических областях, с повышенными температурными и прочими требованиями.
Ардуинки изначально были сделаны на мегах, эта модель самая распространенная и дешевая, и как ты совершенно верно замечаешь, ее более чем достаточно для большинства применений
Здравствуйте, qwertyuiop, Вы писали:
Q>Да, именно. Увеличивается сложность, хотя бы потому что в АРМе нужно вначале запрограммировать тактовый генератор.
если использовать не голый арм, а какую-нить библиотеку, то все это сводится к вызову соотв. функции. Периферия настраивается чуть сложнее, зато она гибче (к примеру можно перекидывать ее между разными ножками.
Ну и единое адресное пространство, заточенность stm32 под си — это уже сплошные плюсы.
А если взять ардуино-арм, то всем этим занимается библиотека, скетчи те же самые будут работать
Здравствуйте, alex_public, Вы писали:
_>Это не идиотизм по одной простой причине: используя процессор типа Cortex-M я без проблем могу работать на полноценном C++14 со всеми его возможностями, а не на убогом Processing/Wiring.
ты не прав gcc-avr у меня счас 4.9, т.е. вполне себе актуальный. Подозреваю, уже можно и 5.х найти.
А Processing/Wiring — это просто плюсовая библиотека. Можешь использовать, можешь не использовать.
Здравствуйте, alex_public, Вы писали:
_>Но если заниматься по серьёзному, то лучше сразу начать с низкого уровня: голый МК и чистый C++.
зачем? К голому МК нужна обвязка, ее нужно покупать / заказывать уже распаянную плату. Производители выпускают киты, но кит по уровню документации, библиотек, сообществу и т.п. до ардуинки обычно не дотягивает. И стоит в разы дороже.
Если цель — поиграться или что-то автоматизировать в доме — ардуинка самое оно
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, Sheridan, Вы писали:
_>Что-то ты вообще ничего не понял из написанного. Профессионально/любитель — это речь совсем не о месте работы, а о навыках человека. Любители используют готовые типовые решения, а профессионалы редко их используют, т.к. они обычно неоптимальны по всем параметрам. И соответственно профессионал будет использовать одинаковый подход и дома и на работе.
Имхо, ты не прав. Любительская ардуинка оптимальна по цене и по простоте использования. Именно поэтому я ее дома и применяю. А эффективность? Что это? Если ардуинки хватает для моей задачи — все ок. Если не хватает — есть ардуиноМега или ардуиноАРМ
А на работе есть схемотехники, есть конструктора плат, есть производство, есть отдел заказов — там ардуинки не в ходу
Здравствуйте, DiPaolo, Вы писали:
DP>Сам сейчас играюсь с Ардуино. Было бы интересно узнать, как Вы применили Ардуино в домашней автоматизации. Не могли бы рассказать?
Я заказал плату — блок управления (развязанные входы, реле, диммеры, 1wire). На плате — разъемы для ардуинки и ethernet-шилда. Блоки управления стоят в щитке, и подключены к отдельной локалке. Ардуинки обрабатывают входы (антидребезг), температуру от датчиков по 1-wire и сообщают об изменениях серверу. Сервер выдает команды управления реле и димерами. Сервер — миникомп с линкусом, где крутится управляющая софтина.
Если сервер отваливается — блок переходит в автономный режим и сам управляет выходами.
Плюс к этому будут отдельные ардуинки в некоторых комнатах, туда прицеплен датчик освещенности и ИК-излучатель — для управления кондиционером
Здравствуйте, enji, Вы писали:
E> и не нужны расширения компилятора (а для авр-ок нужны, как минимум для прерываний — ибо специальная инструкция возврата).
Нет, прерывания оформляются как функция с именем ISR(), а аргументом пишется название вектора. Компилятор сам понимает что это прерывание, сохраняет слово состояния, определяет какие регистры используются этой функцией и сохраняет их.
E> Три адресных пространства (flash, ram, eeprom) тоже удобства не добавляют. В stm32 удобнее организована работа с периферией, да масса плюсов
Для программиста может и не удобно, но зато удобно для функционирования: благодаря этому команда выполняется за один такт. Из флэш читается команда и сразу же выполняется.
Я отвечаю за свои слова, а не за то как вы их интерпретируете!