> Программа для МК должна быть простой и надежной.Не любителям атмелов разглагольствовать про надежность, имхо.
1) У атмела нет никаких обработчиков исключений. Процессорному ядру - пофиг абсолютно все. Мусор в коде? Улет program counter? Клали на это AVR'ки. По мнению атмеловского ядра - системных ошибок не бывает. Если кажется что это не так, см. пункт 1. Заполнить пустую часть флешки опкодом, быстро вызывающим исключение? Ишь чего захотели.
2) По старой традиции у АВРок имеет тендецию слетать EEPROM и FLASH при пониженном напряжении. Фирменная фича семейства. Атмел пыжился, через годы воплей - BOD кой-как сделал. Но работает он с перемнным успехом. А ардуинонубы вообще не в курсе что это и зачем. Некоторые ардуинщики до сих пор сцыкуют по части 0-й ячейки еепрома.
3) То что наиболее критичные регистры неплохо бы защищать от случайных записей - до атмела стало доходить относительно недавно, местами, и в основном не в AVR.
4) Хилость периферии побуждает атмелистов городить фееричные костыли. Софтварно вытягивая дохлость периферии. Ну вот тот же уарт. Железячный UART делает изрядный oversampling, принимая решение о том единица или ноль по мажоритарному принципу. При этом неидеальная стыковка клоков с разных сторон линка или кратковременные импульсные помехи не вызывают ошибок. А в софтварных UART, особенно на приличной скорости с этим будет понятно как. Зато усложняется софт.
Так что у нас там про надежность?
> МК нужны для автоматизации рутинных действий, взаимодействие с человеком
> должно быть минимальным.
Микроконтроллеры - покрывают все ниши от замены жесткой логики до "совсем компьютерообразных" Cortex A. И потому бывают довольно разными. И вот так их всех под одну гребенку...
Тиньки - для дубья с 1 кнопкой, которое к писюку или чему-то подобному как правило не интерфейсится. А чему противоречит, например, интерфейснуть МК к компу и, допустим, утащить с мк более-менее приличный поток данных, ну скажем с ADC? Понятно что это надо не всем. Но кому надо - DMA могут оценить по достоинству: ADC у STM32 относительно шустрый.
И да, не в обиду атмелу - у них полный брейнфак например с обновлением прошивки в уже собранной схеме. Гарвардская сущность с невозможносью выполнять код из RAM делает апдейт прошивки не слишком пресным. А таскаться на отдельные программатор - каменный век. Гемор и для юзеров и разработчиков. В мегах с их бутлоадером еще относительно сносно. Но например замена бутлоадера на ходу... атмел показал, как "фантомас в очках на аэроплане" выглядит при программировании мк :)
> один светодиод, одна кнопка
Замечательно. Но вот самолично таскаться куда-то чтобы жать кнопки и смотреть на светодиоды - затея на любителя.
> бы наглядно видеть работает ли он вообще.
Вот только чтобы наглядно увидеть "работает ли он вообще" - надо притащиться туда. Не знаю насколько это актуально для конкретно этой штуки, а в общем случае это не айс.
> 3. ду ик для управление моторизированным потенциометром
Да, мсье знает толк в извращениях :)
> 4. фильтрация (FIR!) сигнала датчика движения, UI - сигнализация ;) + программный
> uart (нужен был при настройке FIR),
"Как подолбаться на ровном месте for dummies". И эти люди рассказывают про сложность DMA...
И на мой вкус, так даже примитивному автомату кормления рыб и прочей поливки цветов - неплохо б интерфейситься к чему-то более компьютерообразному. Ака "серверу домашней автоматизации". Так, на случай если я уже сижу в самолете или поезде и тут вдруг осознал что оказывается я забыл воспользоваться мегаинтерфейсом с одной кнопкой. Не говоря о том что параметры нехило бы настраивать. Желательно не методом 2 притопа, 3 прихлопа, типичном для таких девайсов.
> не поверил что это возможно на столь простом контроллере если бы сам не сделал.
Ну если перец на атмеле сделал софтварный USB 1.1 (при том работающий даже на достаточно мелких атмелах) - возможно и покруче. Но это отдает затеями типа написания колибри-ОС. Т.е. mad skillz, конечно. Но - создание себе уймы сложностей на ровном месте. В целом довольно контрпродуктивно.
> Приведите примеры реальных задач и их интерфейс.
Вполне реальная хотелка: врубить чертов автомат поливки цветов когда я уже сижу в самолете или поезде. И нехило бы еще и интервалы програмить в человеческом виде. А сложные задачи типа работы с сетью и отрисовки вебморды доступной отовсюду может взять на себя более могучая железка типа ARMовских платок. Но МК на той стороне должен работать хотя-бы с UART. А лучше - с беспроводным трансивером, поскольку превращать дом в подобие гнезда человека-паука - нравится не всем. А это означает что неплохо бы еще какую-нибудь криптографическую защиту всего этого. Но в тиньку все это явно не влезет.
> LCD 20x4 вполне хватает,
Хватает. Но это архаичный и плохой юзеринтерфейс, об который приходится долго ломать глаза.
Хороший показометр должен быть наглядным и быстро схватываемым на глаз. А это явно не про 20х4. В смысле, по какому-нибудь bar- или speedometer-образному графическому индикатору текущее состояние дел в загрубленном, но дающем достаточное понимание ситуации виде будет схватываться "мгновенно". А читать экран 20х4 вместо этого...
Так, наблюдение: такие экраны были заменены КЕМ во всех автоматах которые я видел.
> да и не кто не запрещает делать дополнительные страницы
...что достаточно неудобно и чаще всего являет собой пример хренового юзеринтерфейса.
> на дорогу смотреть надо, а не на экраны :)
Поэтому подобная штука в общем случае должна быть чем-то типа кучки bar или speedometer-like индикаторов. Чтобы ситуация в загрубленном "обзорном" виде - схватывалась за мгновение, а более точные данные - уже при необходимости более долгим вчитыванием или листанием.
Это как-то так: надпись "RPM=2000" мало что говорит вот так сразу. Надо убить кучу времени чтобы это прочитать и потом еще вспомнив параметры агрегата, самому прикинуть: много это или мало? Тогда как bar или speedometer может очень наглядно и крайне быстро показать как текущее значение соотносится с возможностями и предпочитаемыми режимами.
> Вторая atmega8 подключена через uart и пишет лог на microsd.
Ишь ты, карманный вариант героя^W CAN :)
> Уже обсуждали - отдельный uart-wifi с этим справится гораздо лучше
Только фокус-чпокус в том что там проц - в десять раз круче любой атмеги :). Хвост виляет собакой?
> и можно в качестве экрана использовать хоть планшет, хоть телефон.
Можно. Хотя при таком желании имхо логичнее было бы взять какую-нибудь платку на ARM, цепануть туда небольшую TFT панель и прицепить атмегу туда по уарту для быстрых и низкоуровневых дел. То же самое, но - влобовую, с известным софтом и без потенциально ненадежного беспроводного линка посередине, что для показометра параметров все-таки нехорошо.
> Я тоже перспектив у avr не вижу,
К тому же это уникальное фирменное ядро, которое использует только атмель. Есть некий шанс что эти знания в основном можно будет спускать в трэш. Хотя у атмелок довольно симпатично I/O сделано. Капельку быстрее и капельку предсказуемее кортекса и порты чуть сильнее. В общем делать программный usb на кортексе я бы не подписался.
> хорошее решение по соотношению цены и сложности.
Как раз по ценам атмель зарывается, они за свои античные окаменелости дерут как за Cortex M0+, а то и M3. За что? За то что кто-то в это вляпался?
> Они простые и дешевые,
У атмела традицонно очень интересные понятия о "дешевизне", а также о том какая где периферия нужна и как ее делать.
> - но это большие сроки.
С учетом цен в большинства розничных контор - проще покупать комплектуху "батчами". Или у китаезов или у контор с большим складом, ориентирующихся на прототипирование и мелкотираж.
> В общем KISS рулит не только в ПО, но и в MK.
Ну да, софтварные уарты так "просто" релизовывать и они так "хороши" по параметрам. Зато какой-нибудь DMA, конечно же, мегасложный. А вовсе и не периферия у атмела кастрированная. Мне тут какие-то двойные стандарты ощущаются.