Atmel atmega: Почему бы я не рекомендовал Atmel или о непонимании успеха Arduino / Хабр

Содержание

Почему бы я не рекомендовал Atmel или о непонимании успеха Arduino / Хабр

Хочу немного поделиться негативным опытом использования микроконтроллеров Atmel в промышленной разработке.

Atmel как целевую платформу выбрал заказчик, хотя мы его и отговаривали (еще даже не зная, что нам предстоит — интуиция, что ли?). Ну что же, «заказчик всегда прав».

В продукте было два контроллера — 32-битный UC3A3 и 8-битный ATMega164. В качестве дебаггера выбрали AVR One!, в качестве среды разработки — AVR Studio 5.0 (последняя версия на момент старта).

И началось!

У двух из трех купленных AVR One! в течении первого же месяца отвалились JTAG-коннекторы. У одного из них пропадал контакт питания. Каждый дебаггер, к слову, стоит около 600 евро!

При первом подключении дебаггера к компу с установленной AVR Studio 5.0 последняя захотела обновить ему прошивку. И не просто захотела, а отказывалась работать без этого. Процедура обновления прошивки благополучно зациклилась в «обновление — ожидание готовности устройства — обновление завершено неуспешно — обновление…», произвести ее удалось только после долгих танцев с бубнами.

На начальной стадии работа ведется на Evaluation платах. Были такие и у Атмела. Вот только на «готовых» эвалкитах к большинству пинов процессора банально не было доступа! А универсальный пакет STK600, позволяющий «воткнуть» в него практически любой контроллер при помощи переходника (решение реально супер, если бы не одно но), имел маленький недостаток — его схема была недоступна ни в открытом доступе, ни за деньги! Блин, вот реально — тулкит, предназначенный для экспериментов с платформой, поставлялся без схемы! И схема его охранялась очень и очень тщательно, судя по многочисленным веткам на AVR freaks. Поскольку мы не могли представить себе, как же можно работать без наличия схемы, мы разумно отказались от покупки этого тулкита (который ни разу не дешевый, к слову!).

Еще веселее стало, когда приступили собственно к написанию и отладке кода.

Самым веселым оказалось то, что пошаговая отладка оказалась в принципе невозможной. Дело в том, что поставив где-нибудь в коде брейкпоинт, дождавшись остановки программы в этом месте и выполнив «шаг вперед», ты оказывался… в обработчике прерывания! (Естественно, в прерывании при этом никаких брейкпоинтов не было!). А поскольку прерывания в системе были всегда (таймеры и т.п.), процесс отладки выглядел следующим образом: приходилось ставить следующий брейкпоинт на следующей строке и нажимать Run вместо Step Over. Особенно весело это было, когда надо было отследить if или switch. Или же выполнить Step Into, а не Step Over…

Вторым радостным моментом оказалось то, что когда ты останавливался в прерывании, ты не видел стека вызовов. Особенно радовало, когда этим прерыванием было исключение процессора. На предыдущем проекте на контроллере от Freescale в аналогичной ситуации ты отлично видел весь стек вызовов — в каком месте произошло исключение процессора и что к нему привело. Здесь же все, что ты видел — это то, что исключение произошло. А где и почему — оставалось только догадываться.

Третьим радостным моментом оказалось, например, вот что: код

int a[4];

a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;

категорически отказывался работать на ATMega! Элемент a[1] после этого кода оставался равным 0!

И особенно порадовал ответ техподдержки Atmel «Да, данный процессор имеет указанную проблему, попробуйте заменить его на другой!». Ага, а ничего, что уже как бы плата с ним произведена? Следующим ответом техподдержки было «Попробуйте заменить в AVR Studio родной AVR toolchain на open source WinAVR. Это, как ни странно, помогло, массив стал инициализироваться как надо. Правда, заголовочные файлы этого toolchain представляли из себя местами кашу, и часть заголовков пришлось брать от „родного“…

Плюс вся система работала крайне нестабильно. Дебаггер мог просто перестать видеть контроллер. Студия могла перестать видеть дебаггер. Или перестать запускать код на выполнение.

К счастью, на AVR freaks часть проблем была описана и решения найдены. Например, вместо 600-евровых AVR One! были куплены 50-евровые AVR Dragon, работающие гораздо стабильнее — с ними разработка стала в принципе возможной. (Из серии „Зачем, блин, платить больше?“).

И пришлось перейти с AVR Studio 5.0 на более старую AVRStudio32, поскольку первая была настолько глючно-сырой, что работать в ней было невозможно. Интерфейс, конечно, у пятой студии был удобным, ничего не скажешь, но когда удобная в использовании среда банально не работает — удобство оказывается бессмысленным, увы.

AVRStudio32 c точки зрения интерфейса оказалась очень специфической штукой. То ли Eclipse-based сыграло свою роль, то ли Atmel внес свою лепту… Приведу лишь один пример.

Нам понадобилось изменить точку запуска, которая по умолчанию выставлена в среде разработки на начало flash контроллера. В AVRStudio32 за это отвечает так называемая „конфигурация запуска“ (найти которую, кстати, отнюдь не очевидная задача). Так мало того, что параметры конфигурации запуска не сохраняются в проекте (а это означает, что изменения должен был вносить каждый разработчик „ручками“ и их нельзя было коммитить в репозиторий), так кроме этого студия могла в какой-то из моментов по своему желанию создать новую конфигурацию, с параметрами по умолчанию, сделав ее текущей. Нет, когда это все уже знаешь, то исправить это не вопрос. Но вот когда не знаешь, а выглядит все так, что после очередного изменения вдруг все перестало работать, то становится очень даже невесело…

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

Еще одной такой досадной мелочью был прикол с тем, что Atmel называет Fuses — специальные биты, управляющие поведением микроконтроллера, доступные при помощи специальных команд. Неосторожное движение или ошибка — и процессор оказывался непригодным к дальнейшему использованию без очень сложных телодвижений. Можно было, например, переключить его с использования внутренней тактовой частоты на внешнюю. Поскольку внешней, конечно же, в наличии не было, процессор переставал работать. Вернуть этот бит без подачи внешней синхронизации было невозможно в принципе. А еще можно было, например, „выключить“ JTAG — после чего к контроллеру невозможно было подключиться дебаггером.

Вполне естественно, что во время разработки возникают ошибки. Но когда такая ошибка приводит к остановке процесса на непонятно сколько времени — мягко говоря, совсем невесело.

Одна из последних проблем оказалась не менее веселой — по какой-то из причин микроконтроллеры один за одним переставали работать, и дебаггеры тоже переставали их видеть. Времени на анализ было потрачено прилично, оказалось же вот что.

Немного доп. информации: каждый контроллер от Atmel имеет так называемый Device Code, однозначно идентифицирующий семейство. Есть спец. команда, чтобы этот код прочитать. Дебаггер и студия как раз его и используют для идентификации того, что подключено. По идее, значение это read only, и нигде в спецификации не указано обратное. Оказалось, что это не так.

Цитата из Errata:

Signature may be Erased in Serial Programming Mode
If the signature bytes are read before a chiperase command is completed, the signature may be erased causing the device ID and calibration bytes to disappear. This is critical, especially, if the part is running on internal RC oscillator.

Особенно же впечатлило решение проблемы:

Problem Fix / Workaround:
Ensure that the chiperase command has exceeded before applying the next command.

То есть, если Device ID уже оказался стертым, записать его назад возможности не предоставляется. Хуже всего то, что вместе с ним стирается еще и калибровка внутренней частоты, которая также невосстановима, насколько я понял из доступной информации.

Должен сказать, что после команды Chip Erase в коде стояла задержка в два раза больше, чем того требовала спецификация. Однако Device ID волшебным образом стирался по непонятной причине…

Что же, негативный опыт — тоже опыт. Вряд ли я по доброй воле выберу теперь Atmel для чего-либо.

А что касается Arduino — понятно, конечно, что те, кто решает с ней поиграться, с большинством проблем банально не столкнутся, но — после всего описанного выше я все же не понимаю столь высокой ее популярности.

И кстати, выбор заказчиком платформы, похоже, как раз и был обусловлен популярностью Ардуино…

UPD: Вот, кстати, из последних глюков: на ATMega164 есть три группы фьюзов: fuse, fuse_high, fuse_ext. Так вот, по неизвестной причине изменить fuse_high не получается. При этом изменить fuse — получается, и что самое интересное — после любого изменения fuse (даже ничего не значащего, например, включение-выключение вывода тактовой частоты наружу на пин, который висит в воздухе) начинает работать и изменение fuse_ext.

Семейство микроконтроллеров AVR со сверхнизким энергопотреблением picoPower

Платформа AVR остается популярной уже многие годы благодаря постоянному совершенствованию технологии, появлению новых версий микроконтроллеров и активному развитию отладочных средств. Одним из направлений современного развития AVR-контроллеров является разработка микросхем со сверхнизким энергопотреблением.

В 2006 году компания Atmel представила новое семейство экономичных AVR-контроллеров. Семейство получило обозначение picoPower. Контроллеры этого семейства способны длительное время работать от батарейного источника питания в таких приложениях, как приборы с ЖКИ, управление освещением, системы безопасности, бытовая автоматизация, ZigBee-решения. Новые AVR-микроконтроллеры являются обновленной версией популярных микроконтроллеров серий ATmega. В обозначении этих микросхем появится суффикс «P». Новые микросхемы являются совместимыми функционально и pin-to-pin с микросхемами ATmega без суффикса «P». Первыми микроконтроллерами этой серии стали ATmega169P с 4×25-сегментным контроллером ЖКИ и ATmega165P — микроконтроллер общего применения. До конца 2007 года планируется расширение серии picoPower.

Характеристики микроконтроллеров этой серии приведены в таблице 1.

Таблица 1. Характеристики микроконтроллеров серии picoPower

Микросхемы, выполненные по технологии picoPower, обладают рядом преимуществ, которые позволяют экономить расходуемую энергию в активном и энергосберегающем режимах:

  • напряжение питания от 1,8 В;
  • минимизированный ток утечки;
  • автоматически отключаемый модуль слежения за уровнем напряжения питания;
  • часовой кварцевый генератор 32 768 Гц с повышенной экономичностью;
  • сниженная потребляемая мощность модуля Flash-памяти;
  • отключение цифровых портов ввода/вывода в аналоговом режиме;
  • интеллектуальное управление потребляемой мощностью;
  • расширенные возможности по управлению тактированием периферийных модулей.

Ниже более подробно рассмотрены особенности нового семейства.

Питание 1,8 В для всех модулей кристалла

В отличие от микроконтроллеров прежних поколений, технология picoPower подразумевает напряжение 1,8 В для питания абсолютно всех модулей кристалла, включая аналоговые модули (АЦП, компаратор, источник опорного напряжения), а также модулей памяти (Flash-ПЗУ, EEPROM и ОЗУ).

Минимизация токов утечки

Потребление тока в режимах энергосбережения в большей степени определяется токами утечки кристалла. Разработанные технологии фирмой Atmel были объединены под общим названием picoPower. Кристаллы, изготовленные по технологии picoPower, позволяют получить токи утечки в режиме Standby при напряжении питания 1,8 В не более 100 нА (для ATmega165P).

Концепция «спящий BOD»

Практически все современные микроконтроллеры имеют на кристалле модуль слежения за уровнем напряжения питания — BOD (Brown Out Detector). Есть два подхода к снижению потребления этого модуля. Первый — сделать модуль очень экономичным. Плата за экономичность — резкое снижение быстродействия. Второй — использовать быстродействующий BOD, однако отключать этот модуль на время пребывания контроллера в режиме ожидания. Именно этот подход используется в микроконтроллерах серии picoPower. При этом время срабатывания модуля составляет 2 мкс. Естественно, для надежной работы контроллера модуль BOD отключается после перехода в режим ожидания, а включается до выхода из этого режима.

Ультранизкопотребляющий генератор на 32 кГц

При переходе контроллера в режим Standby существенный вклад в общее энергопотребление контроллера вносят цепи генератора. Применение новой версии модуля генератора, работающего с «часовым» кварцем, позволяет получить ток не более 650 нА (для ATmega165P) при работающем модуле BOD.

Снижение энергопотребления периферийных узлов в активном режиме

Потребление КМОП-микросхем в активном режиме напрямую зависит от количества одновременно переключаемых вентилей и частоты их переключения вследствие перезаряда паразитных емкостей кристалла. Таким образом, если запретить подачу тактовых импульсов на некоторые модули контроллера, можно снизить потребляемую мощность. Эта технология получила название Clock Gating. Существует три уровня работы Clock Gating — Analog Domain, CPU Domain и In/Out Domain.

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

Второй уровень задается программированием специального регистра снижения потребляемой мощности (Power Reduction Register, PRR). Известно, что в конкретной программе, выполняемой контроллером, не все периферийные модули могут быть активными постоянно. Некоторые модули задействуются на определенные интервалы времени, а какие-то — вообще не используются. Регистр PRR управляет включением и выключением периферийных модулей.

При отключении модуля его текущий статус запоминается, и все его регистры становятся недоступными для модификации. Как показывает статистика, использование такого механизма позволяет снизить суммарную потребляемую мощность на 5–10% в активном режиме и на 10–20% в режиме Idle.

Третий уровень Clock Gating отвечает за адаптивное тактирование регистров. Известно, что не все регистры модифицируются в каждом такте. Таким образом, можно не подавать тактирующие импульсы на регистры, состояние которых не требуется модифицировать в данном цикле процессора.

Снижение потребления модуля Flash-памяти

Как правило, блок Flash-памяти во время работы контроллера всегда активен. Однако следует учесть, что в ряде случаев контроллер используется не на максимальной тактовой частоте, следовательно, время выборки команды из Flash-ПЗУ меньше одного периода тактовой частоты. Когда AVR-контроллер работает на частоте не выше нескольких мегагерц, используется техника «Flash sampling» — модуль памяти активизируется только на время, необходимое для выборки команды, а затем отключается.

Снижение токов утечки по входам

Многие AVR-контроллеры имеют модуль АЦП, который использует некоторые порты как аналоговые входы. Мультиплексирование выводов контроллера для цифровых или аналоговых операций повышает функциональность, однако приводит к увеличению энергопотребления. Это объясняется следующим.

Входной каскад КМОП-логики состоит из двух комплементарных МДП-транзисторов. При изменении уровня входного напряжения, в моменты, когда на вход подается уровень, примерно равный половине питания, оба транзистора «приоткрыты», и через входной каскад протекает сквозной ток. Для цифровых сигналов с крутыми фронтами это время пренебрежимо мало, однако если вывод используется как вход АЦП, на нем «неудобное» напряжение может оставаться сколь угодно долгое время, что приводит к увеличению уровня потребляемого тока. Для снижения потребления нужно отключать цифровой вход на время работы АЦП. Для этого введен специальный регистр DIDR (Dedicated Input Disable Register), который выборочно запрещает цифровые входы при работе АЦП.

Также этот регистр запрещает неиспользуемые входы контроллера при переходе в ждущий режим.

Для управления потребляемой мощностью контроллер имеет шесть режимов энергосбережения:

  • Холостой режим (Idle mode) — в этом режиме блокируется подача тактовых импульсов на CPU и Flash-память.
  • Режим снижения шума АЦП (ADC noise reduction mode)— холостой режим, плюс блокируется тактирование портов ввода/вывода.
  • Расширенный дежурный режим (Extended Standby mode) — режим снижения шума АЦП, плюс запрещается работа АЦП и EEPROM.
  • Дежурный режим (Standby mode) — расширенный дежурный режим, плюс запрещается работа таймера 2.
  • Режим отключения (Power Down mode) — дежурный режим, плюс запрещается работа генератора.
  • Экономичный режим (Power Save mode) — самый низкопотребляющий режим, активны только асинхронные модули — прерывания и порт TWI.

Совокупность мер по уменьшению тока потребления как в активном режиме, так и в режимах ожидания позволила создать производительный процессор, который отличается малыми токами потребления. Для систем с автономным питанием наиболее популярны микроконтроллеры со сверхнизким потреблением, среди которых можно выделить продукцию компаний Texas Instruments Inc (серия MSP430), Microchip (серия nanoWatt), Renessas (серия H8/38076R) и Atmel (серия picoPower).

В таблицах 2, 3 для сравнения приведены параметры низкопотребляющих микроконтроллеров этих компаний.

Таблица 2. Потребление в режиме Power Save с включенным генератором 32 кГц

Таблица 3. Потребление в режиме Power Down

Примеры применения

Поскольку микроконтроллеры серии picoPower являются совместимыми pin-to-pin и функционально со своими собратьями семейства ATmega, переход на новые контроллеры достаточно прост. Основное различие заключается в том, что появился новый регистр управления снижением потребляемой мощности.

Линейка контроллеров picoPower включает в себя устройства, которые могут использоваться в автомобилестроении: ATmega164P, ATmega324P и ATmega644P. Они прошли сертификацию по стандарту AEC-Q100 (возможность эксплуатации в жестких условиях) и доступны как в общем, так и в автомобильном исполнении. Во втором случае рабочий температурный диапазон этих контроллеров— от –40 до + 125 °С, а диапазон рабочих напряжений — от 2,7 до 5,5 В.

Микроконтроллеры со встроенным драйвером ЖКИ поддерживают такие возможности, как экономичная генерация сигналов управления ЖКИ, встроенное управление контрастностью, гибкий выбор длительностей сигналов управления и частоты обновления, формирование напряжения питания ЖКИ и продолжение работы после перевода микроконтроллера в экономичный режим работы. По сравнению с существующими аналогичными решениями наличие встроенного источника питания позволит снизить количество внешних компонентов. Для работы с 3,3-вольтовыми ЖКИ потребуется один внешний конденсатор и источник питания напряжением не менее 1,8 В. В типичных приложениях с ЖКИ технология picoPower совместно со встроенным контроллером ЖКИ позволят на годы продлить ресурс батареи питания. При этом себестоимость конечного изделия будет ниже за счет уменьшения количества внешних компонентов.

Многолетний срок службы батарей становится необходимым условием во многих приложениях. Микроконтроллеры семейства picoPower предназначены для средств управления осветительными системами, средств безопасности, ZigBee-приложений и других устройств, которые большую часть срока эксплуатации находятся в режиме ожидания. В технических требованиях к ZigBee-приложениям особо оговаривается срок службы батарей. Конечная ZigBee-продукция должна работать от одной батареи не менее 2 лет, иначе она не будет сертифицирована. Спецификация ZigBee разработана для создания дешевых беспроводных сетей передачи небольших объемов данных с низким энергопотреблением. Областями применения таких сетей являются:

  • автоматизация зданий, где технология ZigBee используется для связи с датчиками температуры, влажности, освещения, вентиляции и т. д.;
  • системы промышленного контроля и автоматизация производственных процессов;
  • домашняя автоматизация и система «умный дом».

Компания Atmel довольно часто использует при разработке беспроводных сетей комбинированный подход, основанный на объединении радиочастотного прибора с традиционным или специализированным контроллером. Решение компании Atmel для сетей ZigBee получило название AVR Z-Link и представляет собой связку 802.15.4-совместимого приемопередатчика AT86RF230 с микроконтроллером семейства AVR ATmega644(P), ATmega1281 или ATmega2561.

Atmel ZigBee является гибкой системой. Она поддерживается семейством микроконтроллеров Atmel AVR 8-битовый RISC с объемом внутренней Flash-памяти от 32 до 256 кбайт. Система Atmel Z-Link при рабочем напряжении 1,8 В потребляет ток 17 мА в режиме передачи, 15 мА — в режиме приема и 0,7 мкА — в спящем режиме. Это наилучшие показатели среди систем 802.15.4, предлагаемых на рынке.

Упрощенный выбор нужного универсального микроконтроллера для конкретного приложения из относительно небольшого, но сбалансированного семейства AVR, хорошая совместимость микроконтроллеров по коду и расположению выводов, отличное соотношение «цена — производительность — энергопотребление» для 8-разрядных микроконтроллеров являются хорошими аргументами в их пользу. Общие тенденции развития AVR показывают, что данная платформа еще долго будет удерживать положительную динамику роста продаж и удовлетворять пожеланиям большого числа конечных пользователей.

Литература

  1. Горелков Р. AVR-микроконтроллеры picoPower компании Atmel с ультранизким потреблением. // Компоненты и технологии. 2006. № 12.
  2. Королев Н., Шабынин А. Архитектура AVR: развитие вширь и в глубь. Часть 1. // Компоненты и технологии. 2007. № 2.
  3. www.atmel.com/products/AVR/picopower
  4. www.atmel.com/products/AVR/z-link/

Atmel atmega

The device can be used in a wide range of applications, such as building, industrial, motor, board, and climate control; hand-held battery applications; factory automation; power tools; HVAC; networking, metering, large home appliances, and optical and medical devices. This ATxmega series features pin packages. More to come! Our most affordable debugger has power to impress.


Поиск данных по Вашему запросу:

Схемы, справочники, даташиты:

Прайс-листы, цены:

Обсуждения, статьи, мануалы:

Дождитесь окончания поиска во всех базах.

По завершению появится ссылка для доступа к найденным материалам. ПОСМОТРИТЕ ВИДЕО ПО ТЕМЕ: AVR ATmega Fusebit DOCTOR , What should we do when ATmega Dies Due To Fuse Bit Wrong ?

Высокопроизводительные 8-разрядные RISC микроконтроллеры семейства AVR


Хабр Geektimes Тостер Мой круг Фрилансим. Мегапосты: Криминальный квест HR-истории Путешествия гика. Войти Регистрация. Почему бы я не рекомендовал Atmel или о непонимании успеха Arduino Программирование микроконтроллеров Хочу немного поделиться негативным опытом использования микроконтроллеров Atmel в промышленной разработке. Atmel как целевую платформу выбрал заказчик, хотя мы его и отговаривали еще даже не зная, что нам предстоит — интуиция, что ли?

В качестве дебаггера выбрали AVR One! И началось! У двух из трех купленных AVR One! У одного из них пропадал контакт питания. Каждый дебаггер, к слову, стоит около евро! При первом подключении дебаггера к компу с установленной AVR Studio 5. И не просто захотела, а отказывалась работать без этого. На начальной стадии работа ведется на Evaluation платах. Были такие и у Атмела. Блин, вот реально — тулкит, предназначенный для экспериментов с платформой, поставлялся без схемы! И схема его охранялась очень и очень тщательно, судя по многочисленным веткам на AVR freaks.

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

Естественно, в прерывании при этом никаких брейкпоинтов не было! А поскольку прерывания в системе были всегда таймеры и т. Особенно весело это было, когда надо было отследить if или switch. Или же выполнить Step Into, а не Step Over… Вторым радостным моментом оказалось то, что когда ты останавливался в прерывании, ты не видел стека вызовов.

Особенно радовало, когда этим прерыванием было исключение процессора. На предыдущем проекте на контроллере от Freescale в аналогичной ситуации ты отлично видел весь стек вызовов — в каком месте произошло исключение процессора и что к нему привело.

Здесь же все, что ты видел — это то, что исключение произошло. А где и почему — оставалось только догадываться. Элемент a[1] после этого кода оставался равным 0! Ага, а ничего, что уже как бы плата с ним произведена?

Это, как ни странно, помогло, массив стал инициализироваться как надо. Дебаггер мог просто перестать видеть контроллер. Студия могла перестать видеть дебаггер. Или перестать запускать код на выполнение. К счастью, на AVR freaks часть проблем была описана и решения найдены. Например, вместо евровых AVR One! И пришлось перейти с AVR Studio 5. Интерфейс, конечно, у пятой студии был удобным, ничего не скажешь, но когда удобная в использовании среда банально не работает — удобство оказывается бессмысленным, увы.

AVRStudio32 c точки зрения интерфейса оказалась очень специфической штукой. То ли Eclipse-based сыграло свою роль, то ли Atmel внес свою лепту… Приведу лишь один пример. Нам понадобилось изменить точку запуска, которая по умолчанию выставлена в среде разработки на начало flash контроллера. Нет, когда это все уже знаешь, то исправить это не вопрос. Но вот когда не знаешь, а выглядит все так, что после очередного изменения вдруг все перестало работать, то становится очень даже невесело… То, что примерно за год разработки дебаггеры банально три или четыра раза выходили из строя, уже было просто досадной мелочью.

Еще одной такой досадной мелочью был прикол с тем, что Atmel называет Fuses — специальные биты, управляющие поведением микроконтроллера, доступные при помощи специальных команд. Неосторожное движение или ошибка — и процессор оказывался непригодным к дальнейшему использованию без очень сложных телодвижений. Можно было, например, переключить его с использования внутренней тактовой частоты на внешнюю.

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

Времени на анализ было потрачено прилично, оказалось же вот что. Немного доп. Есть спец. Дебаггер и студия как раз его и используют для идентификации того, что подключено. По идее, значение это read only, и нигде в спецификации не указано обратное. Оказалось, что это не так. Цитата из Errata: Signature may be Erased in Serial Programming Mode If the signature bytes are read before a chiperase command is completed, the signature may be erased causing the device ID and calibration bytes to disappear.

This is critical, especially, if the part is running on internal RC oscillator. То есть, если Device ID уже оказался стертым, записать его назад возможности не предоставляется. Хуже всего то, что вместе с ним стирается еще и калибровка внутренней частоты, которая также невосстановима, насколько я понял из доступной информации. Должен сказать, что после команды Chip Erase в коде стояла задержка в два раза больше, чем того требовала спецификация.

Однако Device ID волшебным образом стирался по непонятной причине… Что же, негативный опыт — тоже опыт. Вряд ли я по доброй воле выберу теперь Atmel для чего-либо. А что касается Arduino — понятно, конечно, что те, кто решает с ней поиграться, с большинством проблем банально не столкнутся, но — после всего описанного выше я все же не понимаю столь высокой ее популярности. Источник бесперебойного питания на источнике бесперебойной подачи информации Читайте на Хабре. Читают сейчас.

Поделиться публикацией. Похожие публикации. Заказы Перенести шаблон на CMS get simple 2 отклика 25 просмотров. Разработать ПО «Просмотрщик сайтов» 3 отклика 93 просмотра. Портировать на iOS открытый проект голосового ассистента 8 откликов 56 просмотров. Разработка системы компенсации падения напряжения на микроконтроллере 4 отклика 78 просмотров. Нужен программист 1С-Битрис 8 откликов 56 просмотров. Все заказы Разместить заказ. НЛО прилетело и опубликовало эту надпись здесь.

А я вот в своё время намучался с Microchip-ами. Вот мой старый комментарий на эту тему: habrahabr. Keroro 4 июля в 0. Везде свои нюансы есть. У меня, к примеру, на PICKit-2 стабильно раз в месяц слетает прошивка, на ровном месте. Это хорошо, что она у меня есть, а если бы не было? Плюс архитектуру 8и битных PIC-ов не пинал только ленивый, плюс ценовая политика, доступность свободных компиляторов GCC , и т. Форум микрочипа изобилует темами, подобными этой, мол, прощай, гадкий микрочип, ухожу от тебя навечно.

Нет в мире совершенства. Собственно, и написал все это потому, что было с чем сравнивать. Понятно, что идеала не существует и баги есть везде, но не таких же и не столько же!

В принципе в любом контроллере есть ошибки и всегда возникают ситуации, когда приходиться дико колдовать над кодом и вчитываться в даташиты. Возможно автору так неповезло, что он собрал все возможные грабли. Теперь не в жизнь не захочу по своей воле работать с PIC исключительно из-за плохих воспоминаний. STM32 щупали, но по какой-то причине решили не применять. С STM8 тоже случаются иногда непонятные глюки, но очень редко. На любительском уровне работаю с атмелами 16й и 8й и ардуино, вышеобозначенных проблем не имел.

А что дебаггеры некачественно собраны — это прескорбно. Меня кстати иногда в этих случаях спасает волшебный палец … Вообще кажется Atmel болт положила на создание нормальной IDE, лично мне пока приходится юзать VMLAB для 8-ми биток, вроде все бы ничего, но практически нулевая подсветка синтаксиса. Только КРВЕ1 , только хардкор! Вы похоже собрали все косяки начинающих на AVR какие только можно. Даже ряд сами раскопали.

Может дело не в бобине, а в плохом танцоре? Не знаю насчет танцора.


Программирование Atmel ATMega 32-16pu с использованием малины PI

Богатый набор функций и лучшая производительность в своём классе микроконтроллеров Atmel AVR обеспечиваются наличием встроенных блоков цифровой обработки сигналов с фиксированной запятой DSP , портом SRAM, контроллером прямого DMA, продуманной архитектурой, построенной на проверенных и инновационных решениях Atmel. Палитра устройств включает несколько серий, каждая из которых заслуживает детального рассмотрения. Серия L. Архитектура МК разрабатывалась для портативных устройств. Для взаимодействия с пользователем в микросхеме встроен CAT-контроллер на 17 аппаратных каналов. Безопасное хранение программ во флэш-памяти обеспечивается технологией FlashVault. Серия D.

3 дн. назад AVR микроконтроллеры – это тип устройств, разработанный компанией Atmel, которые имеют определенное преимущество перед.

Как прошить микроконтроллер ATmega, AVR

Однако команда call для подпрограммы не работает, когда я использую симулятор и пошаговое выполнение программы. Он полностью игнорирует инструкцию call и переходит к следующей строке. Чтобы проверить инструкцию call я написал простую программу, которая выглядит следующим образом:. Но даже это не работает! Он просто продолжает выполнять mov R1, R0. Что может быть причиной? Это так раздражает, когда call не работает! Я использую r16, r17 и r18, потому что его общие регистры использования, используйте его только для отладки. Загрузите прямое значение «1» в r18 4.

МОДЕЛИ МИКРОКОНТРОЛЛЕРОВ AVR

Как сделать робота. Простейший робот Схема и описание простого робота на одной микросхеме. Робот может двигаться на свет или следовать за рукой. Схема и описание первого проекта на микроконтроллере AVR «Hello, world! Робот на микроконтроллере AVR Схема робота на микроконтроллере.

Я пробовал это несколько раз, и я понял, что ATMegapu нуждается в 5v и 5v, может сломать мой малиновый PI, поэтому я купил триггер schmitt, чтобы сдвинуть напряжения сигналов, которые возвращаются к PI.

Я пишу сборку AVR в atmel, но инструкция «call» не работает

Нажимая на кнопку «Отправить», Вы соглашаетесь на обработку персональных данных. AVR микроконтроллеры — это тип устройств, разработанный компанией Atmel, которые имеют определенное преимущество перед обычными микросхемами , но, сначала, давайте разберемся, что такое микроконтроллер? Самый простой способ понять это — сравнить микроконтроллер с вашим компьютером, в котором установлена материнская плата. В микроконтроллере все эти возможности встроены в один чип, а это значит, что отсутствует потребность в материнской плате и многих других компонентах, например, светодиод может быть подключен напрямую к AVR. В микропроцессорах нет такой возможности! AVR микроконтроллеры выпускаются в нескольких корпусах , некоторые предназначены для монтажа в отверстия , некоторые для поверхностного.

Как в Atmel Studio инвертировать бит порта

Компилятор работает с исходными файлами, содержащими инструкции, метки и директивы. Инструкции и директивы, как правило, имеют один или несколько операндов. Любая строка может начинаться с метки, которая является набором символов заканчивающимся двоеточием. Метки используются для указания места, в которое передаётся управление при переходах, а также для задания имён переменных. Позиции в квадратных скобках необязательны.

Объявление о продаже Микроконтроллер Atmel Atmega PU DIP в Республике Татарстан на Avito.

В году Боген и Воллен решили предложить американской корпорации Atmel , которая была известна своими чипами с Flash-памятью , выпускать новый 8-битный RISC -микроконтроллер и снабдить его Flash-памятью для программ на одном кристалле с вычислительным ядром. Идея была одобрена Atmel Corp. В конце года был выпущен опытный микроконтроллер AT90S, а во второй половине го корпорация Atmel приступила к серийному производству нового семейства микроконтроллеров, к их рекламной и технической поддержке.

В году Боген и Воллен решили предложить американской корпорации Atmel , которая была известна своими чипами с Flash-памятью , выпускать новый 8-битный RISC-микроконтроллер и снабдить его Flash-памятью для программ на одном кристалле с вычислительным ядром. Идея была одобрена Atmel Corp. В конце года был выпущен опытный микроконтроллер AT90S, а во второй половине г. Новое ядро было запатентовано и получило название AVR.

Также разрабатывает и производит небольшие модули энергонезависимой памяти для электронных изделий, ПЛИС , цифровые микросхемы-радиоприёмники и передатчики, сканеры отпечатков пальцев.

Хабр Geektimes Тостер Мой круг Фрилансим. Мегапосты: Криминальный квест HR-истории Путешествия гика. Войти Регистрация. Почему бы я не рекомендовал Atmel или о непонимании успеха Arduino Программирование микроконтроллеров Хочу немного поделиться негативным опытом использования микроконтроллеров Atmel в промышленной разработке. Atmel как целевую платформу выбрал заказчик, хотя мы его и отговаривали еще даже не зная, что нам предстоит — интуиция, что ли?

Новый клиент? Начинать здесь. Помощь Cвязаться с нами Центр поддержки.


AVR® XMEGA™ — 8/16-битные Flash-микроконтроллеры с высокими рабочими характеристиками и малым электропотреблением

Автор: admin

23 Дек

Новое семейство XMEGA™ компании Atmel составляют 8/16-битные микроконтроллеры с более высоким уровнем системных рабочих характеристик. Вычислительная мощность 32-битной архитектуры востребована не во всех применениях. В то же время ее использование часто приводит к ухудшению характеристик электромагнитной совместимости, а также к повышению затрат на разработку программного обеспечения и системы в целом. Применение 4-канального прямого доступа к памяти (ПДП) совместно с 8-канальной системой событий способно разгрузить процессор и, как результат, снизить энергопотребление и высвободить большее время ЦПУ для выполнения других частей программы. За один подход ПДП позволяет передать от 1 байта до 16 Мбайт данных между любыми участками памяти, расположенных в пространстве памяти данных. В свою очередь, система событий позволяет связать между собой сигналы встроенных устройств ввода-вывода в целях получения предсказуемой и избавленной от задержек системы.

Для применений с аналоговой обработкой сигналов в микроконтроллеры XMEGATM встроены 12-битный АЦП (частота дискретизации 2МГц), 12-битный ЦАП (частота дискретизации 1МГц) и как минимум два аналоговых компаратора. Микроконтроллеры XMEGA также могут использоваться в портативной электронике. Благодаря выполнению по технологии picoPower 2-го поколения, микроконтроллеры XMEGA могут работать при напряжении 1.6В с производительностью 12MIPS при потреблении мощности всего лишь 6.3 мВт. После перевода микроконтроллера в экономичный режим работы с работающим кварцевым генератором 32 кГц потребляемый ток снижается до 2 мкА, при этом, остаются в работе счетчик реального времени, сторожевой таймер (если был активизирован прежде) и супервизор питания (BOD) с временем реагирования не более 1 мс.

Микроконтроллеры XMEGA используют набор инструкций, идентичный существующим микроконтроллерам AVR, что позволяет повторно использовать имеющиеся коды программ. В качестве среды для программирования и отладки любого микроконтроллера AVR рекомендуется использовать программу AVR Studio совместно со стартовым набором STK600.

Существующий ассортимент XMEGA включает микроконтроллеры с числом выводов от 44 до 100 и с объемом Flash-памяти от 16 до 384 кБайт.

Отличительные особенности

  • Быстродействие: до 12 МГц при VCC = 1.6 В, 32 Мгц при VCC = 2.7 В
  • От 16 до 84 кБайт FLASH-памяти
  • Высокоскоростной модуль криптографии AES и DES
  • Интерфейсы USART, ITW (двухпроводной, I2C-совместимый), SPI
  • Интегрированный модуль EEPROM-памяти
  • 16-битные часы реального времени
  • Детектор падения напряжения
  • Сторожевой таймер
  • Калиброванный внутренний RC-генератор
  • До 78 линий ввода/вывода

 

 

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

 

Руководство пользователя отладочного комплекта Xplain (англ.)

Брошюра: AVR-микроконтроллеры XMEGA (англ.)

vak | Ностальгия по архитектуре AVR

К архитектуре Atmel AVR я давно неравнодушен. Тёплая ламповая восьмибитность покорила меня ещё двадцать лет назад. Мы начали применять AT90 и ATmega в Крониксе в конце 90-х, перейдя на них с серии Microchip PIC17. Именно для AVR я тогда сделал первую версию операционной системы реального времени uOS. Позже добавлял ARM, MIPS и другие, но первое впечатление осталось именно от AVR.

Для AVR я делал отладчик GDB, стартовый загрузчик через COM-порт, дорабатывал утилиты прошивки, паял USB-программаторы. Ну и собственно кучу софта написал: до сих пор большинство коммуникационного оборудования, выпускаемого Крониксом, имеет ATmega в качестве сервисного процессора. К примеру, удалённый мониторинг сетевых портов по протоколу SNMP микроконтроллер ATmega128 вполне тянет.

Вот моя коллекция отладочных плат для микроконтроллеров ATmega, ATtiny и AT90S в разных корпусах.

(1) Плата ATmega 128 с набором разнообразной периферии. Цена €34 евро на сайте Olimex. Плата поставляется с тестовой прошивкой, которая по нажатиям кнопок управляет светодиодом и реле, пищит динамиком, пишет сообщение на дисплее LCD и отправляет строку в порт RS-232. Исходные тексты этой прошивки с использованием операционной системы uOS можно посмотреть здесь: test_olimex.c

(2) Плата для восьминогих чипов ATtiny13A и аналогичных. Куплена за $7 на Aliexpress. Будьте внимательны с питанием: подавать можно не больше 5V, иначе чип накроется.

(3) Плата для 28-ногих чипов ATmega328P, ATmega8 и аналогичных. Стоит два с лишним доллара на Aliexpress.

(4) Плата для сороканогих чипов AT90S и других (с питанием от ножки 40). Цена около $3 на Aliexpress. Не перепутайте: есть похожие платы для чипов с питанием от ножки 10 (ATmega32, ATmega163L и подобных). Это не то же самое. Смотрите принципиальную схему этой платы.

(5) Плата для более современных чипов в корпусе DIP-40, типа ATmega32, ATmega16 и подобных (с питанием от ножки 10). Имеется за $3 на Ebay.

Все эти платы имеют 10-контактный разъем ICSP для подключения программатора, а плата Olimex — ещё и разъём JTAG для отладчика. Но про них я расскажу в следующем посте.

Atmel AVR

Atmel AVR Показано 1-3 из 3

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