Анатолий беляев (aka mr.alb). персональный сайт

Обзор микроконтроллеров avr

Введение

Прежде чем разбирать, какие бывают источники тактирования, чем они отличаются, их плюсы и минусы и тд,  нам нужно определиться, что вообще означает словосочетание тактовая частота. Да и вообще, что означает термин «частота»?

Как нам говорит учебник физики, частота — это количество колебаний, произведенных за определенный промежуток времени. Чаще всего этот промежуток времени называют периодом и для удобства измерений его берут равным одной секунде.

Какие можно привести примеры подобных колебаний? Это могут быть часы с кукушкой, маятник, качели

и даже круги на воде от камушка, который мы кинули в воду:

Более подробно про частоту и период можно прочитать в статье Электрические сигналы и их виды.

Так, теперь ближе к делу. Что же такое тактовая частота?

Любая операция МК или его мегакрутого брата-микропроцессора состоит из отдельных элементарных действий, то есть тактов.

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

В МК AVR тактовая частота в основном измеряется в МегаГерцах. Как помните, приставка «Мега» означает один миллион. Если у нашего МК тактовая частота 8 МегаГерц, то это означает, что он может выполнять 8 000 000 тактов в секунду, или, грубо говоря,  около 8 000 000  различных операций в секунду ;-). Пусть вас не пугает это число, потому что ваши настольные компьютеры, телефоны и планшеты уже работают на частоте в несколько ГигаГерц. Гига — это уже миллиард! Например, если частота процессора вашего компа 2 ГГц, это означает, что он может произвести 2 миллиарда операций в секунду). Мало? Как оказалось на практике, уже стает мало)).

Вернемся к нашим баранам), а именно, к тактовой частоте. Допустим, мы имеем МК Tiny 2313, сконфигурированный на работу 8 МегаГерц и который  может выполнять при этом 8 миллионов тактов в секунду. Каждая операция процессора состоит из тактов. А когда процессор выполняет нашу программу, записанную во Flash память, он тоже производит определенные операции которые указаны в программе. Граничная частота МК Tiny 2313, как говорит нам Datasheet, довольно высокая и составляет аж целых 20 МГц! Это довольно много по меркам МК

Правда, это только с применением внешнего кварцевого резонатора.

Кварцевый резонатор, называемый часто просто кварц, может выглядеть по-разному:

На схемах он обозначается так:

На кварце часто указана частота, на которой он работает. Ниже на фото мы видим кварц, который работает на частоте 8 МегаГерц (8.000MHz)

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

Есть один нюанс, любезно предоставленный нам производителями микроконтроллера. Если нам нужно, чтобы программа выполнялась медленнее в восемь раз, мы можем этого добиться даже не переписывая программу и не выставляя задержки по новой, то есть в 8 раз длиннее. Нам достаточно уменьшить частоту МК в восемь раз и программа будет для нас выполняться медленнее в восемь раз. Забегая вперед, скажу, что сделать это мы можем очень легко, выставив всего одну галочку при программировании фьюз-битов, в бите CKDIV 8. Также легко мы можем отменить все наши изменения.

Этот способ мы использовали при прошивке МК в прошлой статье.

Существуют 4 варианта, которые применяются для тактирования МК:

— тактирование от внутреннего RC-генератора

— тактирование от внешнего кварца

— тактирование от внешнего генератора

— тактирование от RC-цепочки

Корректировка неточностей синхронизации

Поскольку для детекции фронтов калибровочной синхронизации нет возможности использовать прерывания, то используется метод опроса. Как следствие применения данного метода фронт может быть детектирован с задержкой до 2 тактов ЦПУ. Потенциально это может стать причиной невозможности достичь 1%-ую точность калибровки. Для компенсации данной потенциальной временной ошибки пределы сжаты на 2 отсчета таймера (2 такта ЦПУ).

Все вычисления порогов и констант выполняются препроцессором, который использует 32-разрядную точность при использовании AVRASM и 64-разрядную точность при использовании AVRASM2.
Калибровочная программа не учитывает неточности источника калибровочной синхронизации. См. раздел “Точность калибровочной синхронизации ”в данном документе, чтобы узнать подробности по минимизации данного эффекта.

Элементы платы

Arduino Nano состоит из множества элементов, в числе которых:

  • микросхемы;
  • пассивные элементы (резисторы, конденсаторы, диоды);
  • разъемы;
  • регуляторы.

Микросхема платы FT232R

Микросхема позволяет подключать плату через USB. Чип, установленный в AN, не может работать напрямую с USB-интерфейсом, поэтому FT232R преобразует его в UART-интерфейс.

Сердце платформы — микроконтроллер ATmega328P

ATmega328P — главный элемент управления платой. В него загружается написанный программистом скетч, и контроллер рассылает команды различным элементам платы. Например, микроконтроллер заставляет диоды мигать, реле — переключаться, а пьезоэлемент — издавать звуки.

Светодиодная индикация

В плату встроено 4 светодиода, у каждого из которых свое назначение:

  1. RX- и TX-светодиоды мигают, когда происходит передача данных по UART.
  2. L-диод зажигается, когда на него подается высокий уровень сигнала, и гасится при низком уровне.
  3. ON-светодиод горит при наличии питания на плате.

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

Разъем mini-USB

С помощью разъема mini-USB плату можно подключить к персональному компьютеру. Также AN может получать через этот интерфейс питание от внешних источников.

Линейный понижающий регулятор напряжения 5 В

В качестве регулятора используется микросхема LM1117MPX-5.0. Она обеспечивает преобразование сигнала питания AN в сигнал питания микроконтроллера ATmega и других логических элементов, которые не поддерживают питание более 5 В. Например, элементы транзисторно-транзисторной логики (ТТЛ) запитываются от сигнала такой величины.

jekakmail › Блог › Atmega fusebit doctor — восстановление фьюзов на МК

Всем привет!В прошлой статье я писал уже, что во время прошивки микроконтроллера забыл про инверсность фьюзов и залочил его), и что решил собирать «доктора» для МК.

Пару дней назад я успешно осуществил задуманное. С чем и спешу поделиться с вами! ))

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

Дельный совет! — Сверлите отверстия под перемычки и резисторы сверлышками диаметром 0.6-0.7, иначе как и я почти посрываете некоторые контактные площадки, и при запайке в них элементов испытаете много гемороя неудобств.

После сборки и тщательной проверки правильности монтажа необходимо вставить в панельку заранее прошитый МК.Правильно собранное устройство запустится сразу же после подачи +12В.

Печатную плату, принципиальную схему и прошивку МК можно скачать здесь. Там же найдете схемы печаток адаптеров.

Для индикации работы устройство имеет два светодиода – красный и зеленый.

Если горит зеленый – пациент успешно вылечен, фьюз биты восстановлены до заводских. Если микроконтроллер «залочен» (LockBits включены), просто проверяются фьюз биты и если они совпадают с заводскими – загорается зеленый светодиод.Если горит красный – проблемы с сигнатурой чипа, невозможно прочитать, нет микроконтроллера в панельке или нет такой сигнатуры в базе данных.Если зеленый мигает – сигнатура в порядке, фьюз биты с ошибкой, но исправить их невозможно, так как микроконтроллер «залочен» (LockBits включены), необходимо полное стирание микроконтроллера (нужно установить перемычку для стирания – «ALLOW ERASE»).Если мигает красный – сигнатура в порядке, микроконтроллер «не залочен», но, по какой-то причине, невозможно восстановить фьюз биты.

На плате имеется разъем UART, через который наше устройство можно подключить к компьютеру через соответствующий переходник и считывать данные о процессе восстановления МК. Также имеется разъем для подключения адаптеров для других МК.

Список МК:Жирным выделены МК успешно вылеченные пользователями устройства.1kB:AT90s1200, Attiny11, Attiny12, Attiny13/A, Attiny152kB:Attiny2313/A, Attiny24/A, Attiny26, Attiny261/A, Attiny28, AT90s2333, Attiny22, Attiny25, AT90s2313, AT90s2323, AT90s23434kB:Atmega48/A, Atmega48P/PA, Attiny461/A, Attiny43U, Attiny4313, Attiny44/A, Attiny48, AT90s4433, AT90s4414, AT90s4434, Attiny458kB:Atmega8515, Atmega8535, Atmega8/A, Atmega88/A, Atmega88P/PA, AT90pwm1, AT90pwm2, AT90pwm2B, AT90pwm3, AT90pwm3B, AT90pwm81, AT90usb82, Attiny84, Attiny85, Attiny861/A, Attiny87, Attiny88, AT90s8515, AT90s853516kB:Atmega16/A, Atmega16U2, Atmega16U4, Atmega16M1, Atmega161, Atmega162, Atmega163, Atmega164A, Atmega164P/PA, Atmega165A/P/PA, Atmega168/A, Atmega168P/PA, Atmega169A/PA, Attiny167, AT90pwm216, AT90pwm316, AT90usb16232kB:Atmega32/A, Atmega32C1, Atmega323/A, Atmega32U2, Atmega32U4, Atmega32U6, Atmega32M1, Atmega324A, Atmega324P, Atmega324PA, Atmega325, Atmega3250, Atmega325A/PA, Atmega3250A/PA, Atmega328, Atmega328P, Atmega329, Atmega3290, Atmega329A/PA, Atmega3290A/PA, AT90can3264kB:Atmega64/A, Atmega64C1, Atmega64M1, Atmega649, Atmega6490, Atmega649A/P, Atmega6490A/P, Atmega640, Atmega644/A, Atmega644P/PA, Atmega645, Atmega645A/P, Atmega6450, Atmega6450A/P, AT90usb646, AT90usb647, AT90can64128kB:Atmega103, Atmega128/A, Atmega1280, Atmega1281, Atmega1284, Atmega1284P, AT90usb1286, AT90usb1287, AT90can128256kB:Atmega2560, Atmega2561

Я также успешно вылечил свой МК)). Повторно прошил его, после чего он занял свое место в программаторе USBASP

Источник

Программное обеспечение

Основной принцип

Для выполнения калибровки программа сначала загружается в целевой ATtiny с помощью встроенного последовательного программатора высокого напряжения. Кроме того, заводское значение калибровки генератора (OSCCAL) записывается в EEPROM.

Программа на целевой ATtiny читает EEPROM и записывает значение в регистр OSCCAL. Затем подается сигнал с половиной тактовой частоты на вывод PB0. Поскольку фьюзы ранее были установлены так, что целевой ATtiny работает с предварительным делителем 8, на PB0 подается сигнал с 1/16 частоты генератора.

Стенд для пайки со светодиодной подсветкой
Материал: АБС + металл + акриловые линзы. Светодиодная подсветка…

Подробнее

#include <avr/io.h>
#include <avr/eeprom.h>

int main(void) {
  OSCCAL = eeprom_read_byte(0);
  DDRB   = 0b00000001;
  TCCR0A = 0b01000010;
  TCCR0B = 0b00000001;
  while(1);
}

Эта частота измеряется калибратором и сравнивается с целевым значением. Затем значение калибровки генератора (OSCCAL) корректируется соответствующим образом и записывается в EEPROM целевой ATtiny. Этот процесс повторяется до тех пор, пока не будет найдено значение OSCCAL, которое приводит к наименьшему отклонению частоты.

Последовательный программатор высокого напряжения

Код для высоковольтного последовательного программатора (HVSP) совершенно прост. Проще говоря, для каждого действия по линиям данных в целевой ATtiny отправляется серия инструкций, и считывается соответствующий ответ.

Измерение частоты

Таймеры/счетчики ATtiny84 используются для измерения частоты. PB0 целевого ATtiny, который выводит сигнал с частотой 1/16 собственного генератора, подключен к входу T0 ATtiny84. Timer0 считает импульсы на T0, а timer1 останавливает измерение через 32 миллисекунды. Исходя из этого, можно рассчитать частоту генератора целевого ATtiny.

Сборка устройства

Для сборки нам понадобится:

1. Резисторы:

10к-1шт. 4,7к-2шт. 1к-19шт. 330 Ом – 1шт.

2. Конденсаторы:

3. Транзисторы:

BC547 – 1шт. BC557 – 2шт.

4. Светодиоды – 2 шт. (красный и зеленый)

5. Панели под микроконтроллеры

40 выводов – 1шт. 28 выводов – 2шт. 20 выводов – 1шт.

6. Кнопка 4-х контактная – 1 шт.

7. Терминальный блок на 2 контакта – 1шт.

8. Стабилизатор напряжения 7805 в корпусе ТО-220 – 1 шт.

Вот собственно и все детали. Можно приступать к сборке АВР доктора.

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

Когда все элементы впаяны, нужно еще раз промыть плату. После того как она высохнет, возьмите увеличительное стекло и внимательно осмотрите плату. Я иногда нахожу на плате сопли и непропаянные места. Если вы устраните все найденные дефекты до первого включения платы, вы можете избежать неприятностей. Вот так выглядит готовая плата:

Схема Arduino Nano ISCP

Наконец, надо сказать о подключении программатора. Для программирования контроллеров Atmel, на котором собран модуль Arduino, используется интерфейс ICSP. Для Arduino Nano icsp распиновка выглядит выглядит следующим образом (см. верхнюю часть предыдущего рисунка):

  1. MISO (ведущий принимает от ведомого);
  2. +5V (питание);
  3. SCK (тактовый импульс);
  4. MOSI (ведущий передает ведомому);
  5. RESET (сброс);
  6. GND (земля).

Первый пин 6-контактного разъема имеет в основании форму квадратика и нумеруется по часовой стрелке, если смотреть сверху. Чтобы не возникало сомнений по порядку нумерации выводов коннектора, ниже приводится фрагмент принципиальной схемы платы Ардуино:

Этот разъем подключается к программатору с интерфейсом SPI (интерфейс последовательного программирования контроллеров Atmel). Кроме того, прошивка контроллера может меняться из среды программирования через кабель USB, так что приобретать программатор становится необязательным (он нужен только в том случае, если отсутствует программа загрузчика).

Варианты для начала работы с ATtiny85

Este Чип ATtiny85 он может стоить немного больше 1 евро или немного больше, если вы купите плату или модуль со встроенным модулем. Вы можете найти его в некоторых специализированных магазинах, чтобы попробовать. Хотя это дешевле по отдельности, я рекомендую использовать модули для запуска, так как они избавят вас от необходимости выполнять некоторые шаги вручную, когда вы хотите его запрограммировать.

Здесь у вас есть некоторые варианты на амазонке:

  • Товар не был найден.
  • Товар не был найден.

Некоторые из рекомендуемых плат, помимо упомянутой выше (Digispark), у вас также есть ZengBucks, которые я добавил в пример Amazon. Эти платы, среди других дополнительных элементов, включают последовательный интерфейс для программирования, который вы можете подключайтесь напрямую к USB-порту вашего ПК запрограммировать их с помощью IDE.

Общие сведения

Из-за ограниченного количества доступных портов ввода/вывода 8-выводных микроконтроллеров (МК) серии ATtiny во многих проектах они используются без внешнего кварцевого резонатора. Встроенный RC-осциллятор хорошо работает в большинстве приложений, но когда дело доходит до точной синхронизации, его точность ±10% часто оказывается недостаточной. К счастью, встроенный RC-осциллятор можно откалибровать, увеличив точность до ±2% и даже лучше. Существует несколько способов ручной калибровки, которые потребуют времени и внешнего программатора.

Устройство TinyCalibrator (Рисунок 1) выполнит калибровку встроенного осциллятора полностью в автоматическом режиме нажатием одной кнопки. Чтобы устройство получилось более универсальным, автор добавил функцию сброса установок Fuse-битов (в режиме высоковольтного последовательного программирования, HVSP), которая позволяет восстановить заводские установки «заблокированных» МК серии ATtiny.

Рисунок 1. Устройство для автоматической калибровки встроенного
RC-осциллятора 8-выводных микроконтроллеров ATtiny.

Макетная плата

Готовую схему необходимо развести на плате. Это также можно сделать в KiCad. Для этого сначала требуется завершить работу со схемой:

  1. Промаркировать элементы на схеме , все настройки можно оставить по умолчанию.
  2. Сопоставить элементы схемы с посадочными местами на плате . Появится следующее окно: Здесь для наглядности следует включить просмотр выбранного элемента . Поскольку предстоит работать с макетной платой необходимо следить, чтобы все посадочные места укладывались в сетку 1/10″ (2.54mm). Если требуемый элемент найти не удаётся, проще назначить похожий, затем, в редакторе печатной платы, изменить его (Ctrl+E) и записать в свою библиотеку. Как только все посадочные места будут назначены нужно сохранить результат и вернуться в редактор схемы.
  3. Сгенерировать netlist , настройки по умолчанию вполне приемлемы.

Редактор схемы можно закрыть и перейти к редактору печатной платы . Здесь нажать , затем загрузить ранее созданный netlist (Read Current Netlist), убедиться, что не было ошибок и закрыть окно. Если схема была изменена или элементам были назначены другие посадочные места, необходимо обновить netlist и загрузить его здесь снова.

При первой загрузке netlist все посадочные места окажутся стопкой в одной куче. Сначала необходимо переключить сетку на 1/10″ (2.54mm), растащить элементы (используя кнопку m), убрать лишние надписи Visibles → Render → Values и, пользуясь подсказками редактора, соединить элементы дорожками.

Результат будет выглядеть примерно так:

Оставшиеся белые линии, указывают какие посадочные места необходимо соединить проводами. К сожалению в KiCad нет способа вывести результат, так чтобы его было удобно воспроизвести на макетной плате. Но в данном случае макетная плата получилась не большой, и с ней можно поступить просто: отключить лишние надписи Visibles → Render → Footprints Front, снять скриншот и зеркально отразить его по вертикали.

Готовый макет:

Тут два несоответствия со схемой выше: не распаяны подстроечные элементы R1,C3 и диод короче на одно отверстие.

Плата немного побита жёсткой отладкой, но на то она и макетная. Большинство других вариантов, после всех модификаций, выглядело бы хуже.

Обзор RC-генераторов

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

Таблица 1 – Частота генераторов различных версий и особенности микроконтроллеров

Версия генератора Микроконтроллер Частота RC-генератора, МГц CKDIV PRSCK
1.1 ATtiny12 1.2
1.2 ATtiny15 1.6
2.0 ATmega163 1.0
2.0 ATmega323 1.0
3.0 ATmega8 1.0, 2.0, 4.0 и 8.0
3.0 ATmega16 1.0, 2.0, 4.0 и 8.0
3.0 ATmega32 1.0, 2.0, 4.0 и 8.0
3.1 ATmega64 1.0, 2.0, 4.0 и 8.0 XDIV(1)
3.1 ATmega128 1.0, 2.0, 4.0 и 8.0 XDIV(1)
3.0 ATmega8515 1.0, 2.0, 4.0 и 8.0
3.0 ATmega8535 1.0, 2.0, 4.0 и 8.0
3.0 ATtiny26 1.0, 2.0, 4.0 и 8.0
4.0 ATmega162 8.0 Есть Есть
4.0 ATmega169 8.0 Есть Есть
4.0 ATmega165 8.0 Есть Есть
4.1 ATtiny13 4.8 и 9.6 Есть Есть
4.2 ATtiny2313 4.0 и 8.0 Есть Есть
5.0 ATmega48, ATmega88, ATmega168 8.0 Есть Есть
5.0 ATtiny25, ATtiny45, ATtiny85 8.0 Есть Есть
5.0 ATmega325, ATmega3250, Atmega645, Atmega6450 8.0 Есть Есть
5.0 ATmega329, ATmega3290, Atmega649, Atmega6490 8.0 Есть Есть
5.0 AT90CAN128 8.0 Есть Есть
5.0 AT90PWM2, AT90PWM3 8.0 Есть Есть

Прим.: 1. XDIV — название регистра предделителя.

Обзор RC-генераторов

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

Таблица 1 – Частота генераторов различных версий и особенности микроконтроллеров

Версия генератора Микроконтроллер Частота RC-генератора, МГц CKDIV PRSCK
1.1 ATtiny12 1.2
1.2 ATtiny15 1.6
2.0 ATmega163 1.0
2.0 ATmega323 1.0
3.0 ATmega8 1.0, 2.0, 4.0 и 8.0
3.0 ATmega16 1.0, 2.0, 4.0 и 8.0
3.0 ATmega32 1.0, 2.0, 4.0 и 8.0
3.1 ATmega64 1.0, 2.0, 4.0 и 8.0 XDIV(1)
3.1 ATmega128 1.0, 2.0, 4.0 и 8.0 XDIV(1)
3.0 ATmega8515 1.0, 2.0, 4.0 и 8.0
3.0 ATmega8535 1.0, 2.0, 4.0 и 8.0
3.0 ATtiny26 1.0, 2.0, 4.0 и 8.0
4.0 ATmega162 8.0 Есть Есть
4.0 ATmega169 8.0 Есть Есть
4.0 ATmega165 8.0 Есть Есть
4.1 ATtiny13 4.8 и 9.6 Есть Есть
4.2 ATtiny2313 4.0 и 8.0 Есть Есть
5.0 ATmega48, ATmega88, ATmega168 8.0 Есть Есть
5.0 ATtiny25, ATtiny45, ATtiny85 8.0 Есть Есть
5.0 ATmega325, ATmega3250, Atmega645, Atmega6450 8.0 Есть Есть
5.0 ATmega329, ATmega3290, Atmega649, Atmega6490 8.0 Есть Есть
5.0 AT90CAN128 8.0 Есть Есть
5.0 AT90PWM2, AT90PWM3 8.0 Есть Есть

Прим.: 1. XDIV — название регистра предделителя.

Что такое Arduino?

Arduino – это семейство электронных платформ, предназначенных для изучения проектирования электроники.

Arduino NANO – компактная платформа для прототипирования микроэлектронных устройств, предназначенная для использования с макетной платой. Функционал устройства во многом схож с Arduino UNO и отличается от нее лишь размерами платы и отсутствием отдельного разъема для питания.

Основа Arduino Nano – микроконтроллер на базе ATmega328, логическая микросхема для обработки данных с тактовой частотой 16 МГц, имеющая на борту 8 аналоговых и 14 цифровых контактов общего назначения, а также все необходимые интерфейсы: I2C, SPI и UART.

Семейства микроконтроллеров

Стандартные семейства:

  • tinyAVR:
    • флеш-память 16 Кб, SRAM 512 б, EEPROM 512 б;
    • число линий ввод-вывода 4-18 (общее количество выводов 6-32);
    • ограниченный набор периферийных устройств;
  • megaAVR:
    • флеш-память 256 Кб, SRAM 8 Кб, EEPROM 4 Кб;
    • число линий ввода-вывода 23-86 (общее количество выводов 20-100);
    • аппаратный умножитель;
    • расширенная система команд и периферийных устройств;
  • XMEGA AVR:
    • флеш-память 384 Кб, SRAM 32 Кб, EEPROM 4 Кб;
    • четырёхканальный DMA-контроллер;
    • Инновационная система обработки событий.

Примечание: здесь приведены максимальные значения объёмов памяти.

На основе стандартных семейств выпускаются микроконтроллеры, адаптированные под конкретные приложения:

  • со встроенными интерфейсами USB, CAN, контроллером LCD;
  • со встроенным радиоприёмо-передатчиком — серии ATAхxxx, ATAMxxx;
  • для управления электродвигателями — серия AT90PWMxxxx;
  • для автомобильной электроники;
  • для осветительной техники.

Версии контроллеров

ATmega/tinyXXX
Базовая версия.
ATXXXL
Версии контроллеров, работающих на пониженном (Low) напряжении питания, обычно 1,8 или 2,7 В.
ATXXXP
Малопотребляющие версии (до 100 нА в режиме Power-down), применена технология picoPower (анонсированы в июле 2007), повыводно и функционально совместимы с предыдущими версиями.
ATXXXA
Уменьшен ток потребления, перекрывается весь диапазон тактовых частот и напряжений питания двух предыдущих версий (также, в некоторых моделях, добавлены новые возможности и новые регистры, но сохранена полная совместимость с предыдущими версиями). Микроконтроллеры «А» и «не-А» с точки зрения программатора ничем не отличаются.
АТmegaXXX-PI
Корпус DIP.
АТmegaXXX-PU
Корпус DIP, бессвинцовый (Pb-free) припой.
АТmegaXXX-AI
Корпус TQFP.
АТmegaXXX-AU
Корпус TQFP, бессвинцовый (Pb-free) припой.

Цифры 8/10/16/20 перед индексом означают максимальную частоту, на которой микроконтроллер может стабильно работать при нормальном для него напряжении питания.

Лечим микрокотроллеры AVR. Atmega fusebit Doctor. Смд исполнение.

Многие радиолюбители знают иногда на собственном печальном опыте , что микроконтроллер AVR можно вывести из строя неосторожным программированием настроечных бит так называемых фьюзов. Будучи запрограммированными неправильно, эти биты сохраняются в энергонезависимой памяти, и могут привести к невозможности дальнейшего программирования микроконтроллера или выбору фьюзами его тактовой частоты. Высоковольтный параллельный HVPP или последовательный HVSP программатор относится к профессиональным инструментальным средствам разработчика, и поэтому его купить непросто — из-за высокой цены и малой доступности. Польский радиолюбитель Pawel Kisielewski разработал несложное устройство, позволяющее восстанавливать состояние фьюзов микроконтроллера в состояние по умолчанию — Atmega fusebit doctor . Примечание: к сожалению, разработчик не предоставил исходный код для Atmega fusebit doctor. Но даже несмотря на это, проект все равно обрел популярность.

Питание микроконтроллера

Для работы микроконтроллеру, как и любому электронному устройству, необходима энергия. Напряжение МК Atmel AVR находится в диапазоне 1.8–5.5 Вольт и зависит от модели и серии. Большинство приборов работает от 5 Вольт. Но встречаются и низкочастотные модели (Attiny 2313), нижняя граница у которых от 1,8 В.

Кроме того, на работу МК влияет и частота поступающего тока. Низкое напряжение требует и низких пределов частот. Чем выше частота, тем быстрее работают определенные модели.

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

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

Кроме того, необходимо установить и конденсаторы, лучше керамические, из расчета 1 на 100 нанофарад.

QFN корпус

Наиболее экзотическим с точки зрения любительской практики является корпус QFN (Quad Flat No—leads). Такой корпус имеет наименьшие габариты среди всех рассмотренных корпусов. В качестве выводов здесь используются контакты, расстояние между которыми в 6 раз меньше, чем в DIP корпусах. По этой причине они редко применяются радиолюбителями. Одна в промышленности такие корпуса находят широкое применение, поскольку габариты готового электронного устройства можно снизить в десятки раз. На рис.4 наглядно видно различия в габаритах одного и того же микроконтроллера (ATmega8) в DIP и QFN корпусах.

Рис. 4 – Микроконтроллер ATmega8 в DIP и QFN корпусах

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

Рис. 5 – Микроконтроллеры в разных типах корпусов

Как разлочить микроконтроллер avr

Группа: Cоучастник Сообщений: 787 Пользователь №: 22294 Регистрация: 14-July 07 Место жительства: Спб

Наверняка каждый из нас сталкивался с такой штукой, когда после прошивки контроллера, последний переставал «видиться» программатором.Причем не помогали никакие средства.Данная тема поможет владельцам таких мк не разочаровываться и не выбрасывать их, ошибочно думая, что железячка безвозвратно утеряна.

Первое, что хочу сказать. Что НИ ОДИН МИКРОКОНТРОЛЛЕР нельзя убить програмным методом, за исключением подлости железа, пробоя или каких либо вспомогательных методов.

Микроконтроллеры атмел могут программироваться специальными битами конфигурации, с помощью которых микроконтроллер можно переключить на режим тактования с внешнего устройства( кварц, генератор). Также фирма предусмотрела в некоторых случаях прошивать вывод «Reset» как порт ввода вывода, тем самым делая невозможным дальнейшее программирование чипа.

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

Группа: Cоучастник Сообщений: 788 Пользователь №: 9236 Регистрация: 20-June 06 Место жительства: Сибирь

Группа: Cоучастник Сообщений: 735 Пользователь №: 32999 Регистрация: 18-May 08

Группа: Cоучастник Сообщений: 1082 Пользователь №: 10972 Регистрация: 30-August 06 Место жительства: RU

Чёто полная каша в головах. Вообще дела так:

1) АВР. Они все флешовые. Программно убить нельзя. Все глюки от непрочитанных мануалов и дешёвых программаторов/самопалов типа СТК200 с которыми нужно работать особенно аккуратно. Вообще нужно использовать STK500, AVR Dragon, JTAG ICE2 и т.д. и будет вам счастье…. Ну мануалы ещё читать полностью, чтоб не переспрашивать, например что такое High-Voltage Programming и чем он отличается от SPI

2) ПИКи. Бывают как однократные серии «С», так и флешовые серии «F». «С»-серия одноразовая, её можно только 1 раз новую прошить, а дальше либо использовать МК в устройстве, либо выкинуть. Читается она или нет, определяется при программировании.«F»-серия многократная, массовых залочек вроде нет. Все глюки программирования так же от дешёвых программаторов, используете нормальные на ЮСБ, гарантирующие тайминги, и ни будет никаких проблем, их самому сделать можно (ICD2, PICKit). Всякие лошади, винпики, айсипроги это наудачу….

3) MSP430- Как правило применяются все флешовые. BSL доступен всегда, Если чип залочен, то BSL доступен через пароль векторов прерывания. JTAG ядро отключается фьюсом РАЗ И НА ВСЕГДА. Но для его отключения так же необходим продвинутый программатор. Массовых залочек так же вроде нету у народа.

Вообще примите как правило, подтверждённой практикой: «Чем проще программатор, тем аккуратнее с ним нужно работать и обходить все его глюки. По возможности используйте клоны оригинальных программаторов, они надёжнее и плюс поддержка новых чипов от производителя» И ещё раз говарю, читаем даташиты….

Редактирование файла boards.txt

Arduino_dir\hardware\arduino\avr\d:\Arduino\arduino-1.6.12\hardware\arduino\avr\.menu.clock=Тактирование

  1. скорость загрузки — uno.upload.speed;
  2. значения фьюзов — uno.bootloader.low_fuses, .high_fuses, .extended_fuses;
  3. имя файла загрузчика — uno.bootloader.file;
  4. частоту микроконтроллера — uno.build.f_cpu.

uno.menu.clock.external16=Внешний резонатор 16МГцuno.menu.clock.external16.upload.speed=115200uno.menu.clock.external16.bootloader.low_fuses=0xFFuno.menu.clock.external16.bootloader.high_fuses=0xDEuno.menu.clock.external16.bootloader.extended_fuses=0xFFuno.menu.clock.external16.bootloader.file=optiboot/optiboot_atmega328.hexuno.menu.clock.external16.build.f_cpu=16000000Luno.menu.clock.internal8=Внутренний RC-генератор 8МГцuno.menu.clock.internal8.upload.speed=57600uno.menu.clock.internal8.bootloader.low_fuses=0xE2uno.menu.clock.internal8.bootloader.high_fuses=0xDEuno.menu.clock.internal8.bootloader.extended_fuses=0xFFuno.menu.clock.internal8.bootloader.file=optiboot/optiboot_atmega328_8.hexuno.menu.clock.internal8.build.f_cpu=8000000Luno.menu.clock.internal1=Внутренний RC-генератор 1МГцuno.menu.clock.internal1.upload.speed=4800uno.menu.clock.internal1.bootloader.low_fuses=0x62uno.menu.clock.internal1.bootloader.high_fuses=0xDEuno.menu.clock.internal1.bootloader.extended_fuses=0xFFuno.menu.clock.internal1.bootloader.file=optiboot/optiboot_atmega328_1.hexuno.menu.clock.internal1.build.f_cpu=1000000L

онлайн калькулятораИнструменты->ТактированиеВнутренний RC-генератор 8МГцотсюдаArduino_dir\hardware\arduino\avr\bootloaders\optiboot\

Программное обеспечение

Основной принцип

Для выполнения калибровки программа сначала загружается в целевой ATtiny с помощью встроенного последовательного программатора высокого напряжения. Кроме того, заводское значение калибровки генератора (OSCCAL) записывается в EEPROM.

Программа на целевой ATtiny читает EEPROM и записывает значение в регистр OSCCAL. Затем подается сигнал с половиной тактовой частоты на вывод PB0. Поскольку фьюзы ранее были установлены так, что целевой ATtiny работает с предварительным делителем 8, на PB0 подается сигнал с 1/16 частоты генератора.

#include <avr/io.h>
#include <avr/eeprom.h>

int main(void) {
  OSCCAL = eeprom_read_byte(0);
  DDRB   = 0b00000001;
  TCCR0A = 0b01000010;
  TCCR0B = 0b00000001;
  while(1);
}

Эта частота измеряется калибратором и сравнивается с целевым значением. Затем значение калибровки генератора (OSCCAL) корректируется соответствующим образом и записывается в EEPROM целевой ATtiny. Этот процесс повторяется до тех пор, пока не будет найдено значение OSCCAL, которое приводит к наименьшему отклонению частоты.

Последовательный программатор высокого напряжения

Код для высоковольтного последовательного программатора (HVSP) совершенно прост. Проще говоря, для каждого действия по линиям данных в целевой ATtiny отправляется серия инструкций, и считывается соответствующий ответ.

Инвертор 12 В/ 220 В
Инвертор с чистой синусоидой, может обеспечивать питание переменно…

Подробнее

Измерение частоты

Таймеры/счетчики ATtiny84 используются для измерения частоты. PB0 целевого ATtiny, который выводит сигнал с частотой 1/16 собственного генератора, подключен к входу T0 ATtiny84. Timer0 считает импульсы на T0, а timer1 останавливает измерение через 32 миллисекунды. Исходя из этого, можно рассчитать частоту генератора целевого ATtiny.

Подключение двух светодиодов на один вывод

В данной схеме два светодиода подкючены на одну ножку порта, такая схема позволяет упростить печатную плату, не придется тажить еще одну шину к каждому светодиоду. Для того чтобы зажечь верхний сетодиод нужно на вывод Pxy подать логический 0, а для того чтобы зажечь нижний то подать высокий уровень. Если мы хотим зажечь сразу оба светодиода та нам нужно перевести вывод МК в режим Hi-Z как будто его нет, в этом случае появится сквозной ток через оба светодиода и они оба загорят. Или можно бысто зажигать то один то другой, визуально они будут оба гореть. Минус схемы в том что погасить сразу два диода нельзя.

Понравилась статья? Поделиться с друзьями:
Зинг-Электро
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: