Отладочная плата для устройств на мк atmega8/48/88/168/328

Отладочная плата для устройств на МК Atmega8/48/88/168/328

Многие устройства в моих статьях строятся на основе отладочных плат. Сегодня поговорим об отладочной плате для микроконтроллеров Atmega8/48/88/168/328.

Все они в DIP корпусе имеют 28 выводов и одинаковое их расположение, поэтому без проблем можно одну отладочную плату использовать для любого из вышеперечисленных микроконтроллеров.

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

Общий вид готовой отладочной платы

Принципиальная схема отладочной платы:

Данная отладочная плата состоит из следующего набора элементов. Место для микроконтроллера в отладочной плате использовано с применением разъема для корпуса DIP-28.

Применение такого разъема, в народе именуемого “кроватка” позволит в случае чего быстро заменить микроконтроллер на плате.

Удобно, если по неопытности случайно залочить микроконтроллер, удобно его извлечь и “вылечить” при помощи другой схемы или просто быстро сменить тип используемого микроконтроллера.

Также для быстрой смены кварцевого резонатора использован разъем. Так как эта отладочная плата, могут возникать ситуации, когда необходимо перезапускать микроконтроллер. Для этой цели на плате предусмотрена кнопка S1 – при замыкании на землю вывода PC6, происходит рестарт или reset используемого микроконтроллера.

Резистор R6 подтягивает плюс питания к этому выводу для предотвращения самопроизвольного перезапуска. Данная макетная плата имеет простое исполнение, поэтому добавил два модуля для светодиодов (по три светодиода в каждом модуле).

Токоограничительные резисторы для светодиодов подобраны таким образом, что для каждого модуля можно использовать RGB светодиоды – удовлетворено условие баланса белого. Падение напряжения на красных светодиодах чуть меньше, чем у зеленых и синих, поэтому резисторы R1 и R5 имеют сопротивление 180 Ом.

Кроме того, резисторы в анодах светодиодов ограничивают ток на уровне примерно 18 – 20 мА для максимальной яркости. каждый светодиод соединяется с портом микроконтроллера через перемычки (джемперы) 1 – 6.

Также, благодаря штырьковым соединениям, при помощи проводка о двух концов с соответствующими разъемами типа “мама” можно соединять светодиоды с любыми другими выводами микроконтроллера.

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

Следуя данной концепции, на плате возможно два варианта питания – 5 вольт от USB порта через программатор и 3,3 вольта через три выпрямительных диода (P-N переход диода способствует падению напряжения примерно на 0,5 – 0,6 вольт в зависимости от применяемого типа, диоды Шоттки имеют несколько меньшее падение на переходе – порядка 0,2 вольта, их лучше не использовать).

Данные режимы питания выбираются путем установки перемычек (джемперов) 7 или 10. При желании можно немного изменить печатную плату и поставить стабилизатор напряжения на 3,3 вольта, например микросхему AMS1117. Резистор R10 ограничивает ток питания отладочной платы.

Его можно или убрать, или заменить на меньший или больший номинал в пределах необходимого, или просто заменить резистором номинала 0 Ом. Резистор R9 был установлен в основном с целью только подключения LCD дисплея для регулировки контраста экранчика. Однако, этот функционал не ограничивается только LCD – дисплеем, резистор можно использовать в любых других необходимых целях. И, наконец, АЦП микроконтроллера. Как правило он питается от основного напряжения через дроссель для большей стабильности напряжения и более правильных показаний. Также АЦП имеет канал опорного напряжения. Оно организовано микросхемой управляемого стабилитрона TL431 – он стабилизирует напряжение до 2,5 вольт в соответствии с подключением выводов как на схеме, и оно подается на вывод AREF. Но не всегда нужно именно 2,5 вольта опорного напряжения. Поэтому на плате организованы перемычки 8 и 9 для возможности подключения 5 вольт на вывод опорного напряжения, то есть взять его от вывода AVCC – питания АЦП.

Для подключения светодиодов на печатной плате предусмотрены контакты типа цанга вдоль края платы.

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

Штырьковые контакты питания +5 вольт и 0 вольт имеются по 5 штук на плате.

Специально для программирования на печатной плате предусмотрен стандартный 10 пиновый разъем для программаторов AVR, например USBasp или AVRdoper или других.

Более подробно расположение штырьков (в том числе и для перемычек) относительно микроконтроллера можно посмотреть на печатной плате (ссылка будет ниже).

А вот так выглядит отладочная плата со стороны пайки:

Надеюсь аккуратность порадует Ваш профессиональный глаз.

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

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

Далее у нас главная программа main, без нее никак нельзя, в начале главной программы инициализируется порт для работы со светодиодом. Внутри главной программы прописан бесконечный цикл while, то есть он никогда не закончится и будет крутиться по кругу от начала и до конца.

А внутри этого цикла сама суть прошивки – светодиод зажигается, ждем 1 секунда, светодиод тухнет, ждем 1 секунду и так по кругу. Вот собственно и вся простая программа для тестирования.

Вот что необходимо для прошивки микроконтроллера atmega8 – fuse биты:

К статье прилагается печатная плата, нарисованная в Sprint Layout, также простая прошивка для микроконтроллера ATmega8, моргающая светодиодом для оценки работоспособности платы и просто для того чтобы данная схема не была просто железякой.

Также для данной прошивки прилагается файл Proteus и исходник программного кода в AVRstudio 4. Небольшое видео для демонстрации. Ну, а при желании Вы всегда можете загрузить самостоятельно в микроконтроллер bootloader для arduino и использовать эту плату как arduino Uno или Nano.

Сам я особо не любитель arduino, поэтому не делал на это большого акцента.

ОбозначениеТипНоминалКоличествоПримечаниеМагазинМой блокнотIC1VD1, VD2, VD4VD3L1S1LED1, LED4LED2, LED5LED3, LED6R9R1, R5R2-R4, R7R6R8R10C1, C6, C7C2, C3C4, C5, C8Z1Jmp1-Jmp10ISP
МК AVR 8-бит ATmega8 1 или Atmega48/88/168/328 Поиск в Utsource В блокнот
Выпрямительный диод 1N4148 3 Поиск в Utsource В блокнот
ИС источника опорного напряжения TL431 1 Поиск в Utsource В блокнот
Катушка индуктивности 100 мкГн 1 Поиск в Utsource В блокнот
Тактовая кнопка TC-A109 1 Поиск в Utsource В блокнот
Светодиод красный 2 Поиск в Utsource В блокнот
Светодиод зеленый 2 Поиск в Utsource В блокнот
Светодиод синий 2 Поиск в Utsource В блокнот
Подстроечный резистор 10 кОм 1 3296W-1-103LF Поиск в Utsource В блокнот
Резистор 180 Ом 2 1206 Поиск в Utsource В блокнот
Резистор 100 Ом 4 1206 Поиск в Utsource В блокнот
Резистор 10 кОм 1 0,25 Вт Поиск в Utsource В блокнот
Резистор 1 кОм 1 0,25 Вт Поиск в Utsource В блокнот
Резистор 4.7 Ом 1 1206 Поиск в Utsource В блокнот
Электролитический конденсатор 10 мкФ 3 Поиск в Utsource В блокнот
Конденсатор 18 пФ 2 Поиск в Utsource В блокнот
Конденсатор 100 нФ 3 Поиск в Utsource В блокнот
Кварц 16 МГц 1 или другой Поиск в Utsource В блокнот
Перемычка Джемпер 10 Поиск в Utsource В блокнот
разъем “кроватка” DIP28 1 для МК Поиск в Utsource В блокнот
Разъем BH-10 1 или 10 штырьков Поиск в Utsource В блокнот
Штырьки 54 Поиск в Utsource В блокнот
Контакт Цанга 15 Поиск в Utsource В блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Источник: http://cxem.net/mc/mc292.php

Arduino без Arduino: работаем с микроконтроллерами напрямую — DRIVE2

Если вспомнить историю создания Arduino ( www.drive2.

ru/b/2520138/ ), то Arduino стало популярно благодаря трем вещам, составляющим ее основу: Среды программирования Arduino IDE ( на самом деле это среда языка Processing), Языка программирования Wiring (На самом деле такого языка не существует — то что мы видим это самый обычный С, дополненный большим числом библиотек) и Плат Arduino.
Я уже писал ранее, что без каждой из этих трех составляющих можно обойтись и приводил пример того, как можно обойтись без знания С — www.drive2.ru/b/2729013/. Как отказаться от Arduino IDE написано здесь — www.visualmicro.com/page/…what_is_visual_micro.html, а сегодня я хотел бы написать о том, как отказаться от “плат Arduino”.Итак, что же собой представляет плата, получившая такой коммерческий успех?

Как можно увидеть на плате находятся микроконтроллер AtMega 168 или 328, микросхема питания — DA1, контроллер виртуального com порта — DD1 и кварц 16 МГц — Q1.

В общем то на первый взгляд ничего лишнего, но это только на первый: Используемая микросхема питания позволяет питать плату от напряжения от 5 до 12В или кратковременно до 30В, т.е. для авто с его 14,5В не пригодна и нужно делать свой источник питания.

Контроллер СОМ порта используется в основном только для заливки программ и не является обязательным (в плате Arduino Pro Micro и ей подобных он отсутствует).

Кварц, несомненно, позволяет точно работать с временем, но если погрешность в несколько милисикунд для вас не критична, то можно вспомнить о том, что микроконтроллеры фирмы Atmel, к которым относится и Atmega168/328, содержат внутренний кварц и могут отсчитывать такты сами себе.

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

Поддержка средой программированияНаходим где у вас установлена Arduino и открываем папочку hardware

По умолчанию это здесь — C:Program FilesArduinohardwarearduinoavr

В эту папку мы будем распаковывать архивы с библиотеками, которые будем качать отсюда:1) Для микроконтроллеров

ATmega8, ATmega8A,ATmega88, ATmega88A, ATmega88P, ATmega88PA, ATmega88PBATmega168, ATmega168A, ATmega168P, ATmega168PA, ATmega168PBATmega328, ATmega328P, ATmega328PB

ATmega48, ATmega48A, ATmega48P, ATmega48PA, ATmega48PB

качаем ATmega8 Series (8/48/88/168/328) отсюда — github.com/sleemanj/optib…ob/master/dists/README.md
См. отдельную статью О бедном AtMega замолвите словоДанные библиотеки позволяют запустить МК на 3 частотах: 1MHz, 8MHz или 16MHz (Для работы требуется внешний кварц 16МГц).

Тут необходимо понимать, что внешний кварц увеличивает быстродействие и стабильность работы (1 миллисекунда выполнения программы всегда будет равняться 1 миллисекунде реального времени), но увеличивает, пусть и ненамного, стоимость конструкции и снижает надежность за счет большего числа деталей. Лично мое мнение, что для большинства конструкций, проектируемых для автомобиля, можно смело обойтись и встроенным кварцем. Для схем зажигания, тахометра можно использовать внешний кварц, подключенный по схеме ниже, но дешевле взять готовую платку типа Arduino Pro Micro.

Достаточно ценное замечание от alexfrance
Был печальный опыт при использовании внутреннего генератора МК тини2313. На морозе при -20 контроллеры зависали, глючили. Установка внешнего кварца помогла. Поскольку внутренний генератор представляет из себя RC цепь, то он очень термозависим

2) Микроконтроллеры Attiny13 (А)
Библиотеки и файлы для поддержки “Тинек” можно скачать по ссылочке выше, а можно взять версию от разработчика — sourceforge.net/projects/ard-core13/files/
Скачанный файл также кладем в папку hardware

3) Для микроконтроллеров
ATtiny84, ATtiny44, ATtiny24,ATtiny85, ATtiny45, ATtiny25,

ATtiny2313, ATtiny4313

Источник: https://www.drive2.ru/b/2955382/

Отладочная плата для ATmega48/88/168

» Схемы » Применение микроконтроллеров

16-04-2008

Это многосторонняя отладочная плата для микроконтроллеров AVR ATmega48/88/168. Она отлично подходит для отладки программ, т.к. имеет огромное количество встроенных периферийных элементов.

Микроконтроллеры ATmega48/88/168 имеют много полезных свойств: I/O, Таймеры , PWM генераторы, ADC, RS232, TWI, SPI, Аналоговый компаратор, Осциллятор, EEPROM. К тому же, они очень просты в использовании.

Именно поэтому, автор решил разработать отладочную плату для них.

ATmega AVR микроконтроллер DIP28 Отладочная плата разработана для ATmega48 (4КБ памяти), АTmega88 (8КБ), ATmega168 (16КБ).

Новые модели ATmega48P/88P/168P или ATmega328P (32КБ) тоже поддерживаются. Внешний кварц Х1 устанавливается в гнездо, поэтому заменить его не составит труда. Также предусмотрена возможность использования внутреннего осциллятора, в таком случае можно будет использовать выводы PB6 и PB7, предназначенные для внешнего кварца. Сброс микроконтроллера – кнопка S1.

Порты

Если периферийные устройства на плате не используются – можно подключить собственное устройство (напр. ЖК-дисплей), для этого на плате предусмотрены отдельные 10-выводные штырьки.

5 В питание

Может быть использовано как переменное, так и постоянное питание. Источник питания может быть подключен к 2.5мм разъему или спец. разъему (см. Screw Terminals). Питание включается/выключается переключателем SW1. Напряжение стабилизирует IO 7805. При включенном питании горит красный светодиод.

4 светодиода

Четыре зеленых светодиода подключены к порту D.

4 кнопки

Четыре кнопки подключены к порты В.

Пьезо динамик подключается к выводу PB1 через JMP5.

ADC Микроконтроллер имеет встроенный 10-битный аналого-цифровой преобразователь.

Потенциометр

Сенсоры температуры

К микроконтроллеры можно подключать сенсоры с двух типов: с аналоговым или PWM выходом. Аналоговый – к PC0 (ADC0) через JMP10. PWM к PB0 через JMP11.

RS232

Использован последовательный интерфейс ( ИС – MAX232 ).

Конфигурация I/O выводов микроконтроллера

Вы сможете переключать соединения между RS232 и I/O выводами микроконтроллера.

Крепежный терминал

Крепежный терминал позволит вам легко подключать внешние устройства (напр. вольтметр) к микроконтроллеру.

Внутрисхемное программирование

В отладочной плате предусмотрен внутрисхемный программатор. Микроконтроллер программируется через RS232 порт используя Pony Prog или AVDdude программатор. Что бы избежать интерференции сигналов рекомендуется отключить аналоговые переключатели 4066 ( вручную – SW2, автоматически – при включенном сбросе ( используя JMP13 )).

Крепежные отверстия

На печатной плате есть крепежные отверстия диаметром 3.2 mm.

Полная схема в формате png

Печатная плата

Скачать печатную плату в формате PDF или в формате EPS

Скачать печатную плату в формате PDF

Источник: https://www.rlocman.ru/shem/schematics.html?di=47316

Минимальная обвязка Atmega8, 168, 328

Опубликовано 20.08.2013 17:12:00

Не всегда удобно либо дорого по бюджету оставлять плату Arduino в проекте. После отладки все можно перенести на голый контроллер . В данной статье расскажем о том, что и для чего нужно для запуска ATmega8, 168, 328.

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

Питание контроллера (IC1) делится на цифровую часть (VCC, GND) и аналоговою (AVCC, AGND), и для ATmega8, 168, 328 должно лежать в пределах 5 вольт. В нашем случае можно смело объединить VCC с AVCC и GND c AGND. 

В контроллере также присутствует вывод AREF. Напряжение, присутствующее на данном выводе, будет задавать опорное для аналоговых входов. Если данный вывод ни к чему не подключен, что мы и имеем на платах Arduino, то контроллер автоматом задает значение опорного напряжения равное 5 вольтам.

Для фильтрации ВЧ помех рекомендуется установить конденсатор (C1) емкостью 0.1 мкФ между питанием контроллера и землей.

Кварцевый генератор

В контроллерах ATmega8, 168, 328 имеется внутренний кварцевый генератор работающий на частоте 8 МГЦ, т.е если нам не очень важна частота, то во внешнюю обвязку можно внешний кварц и не включать. Однако при таком варианте, потребуется прошивать соответствующий бутлоадер и добавлять новые платы в boards,txt

Большинство плат Arduino работает на частоте 16 МГц, в связи с этим необходима установка внешнего кварца. Кварц (Q1) ставится на ноги 9 и 10 (выводы XTAIL1/XTAIL2) и далее через конденсаторы (C2, C3), нужного для работы кварца номинала (в нашем случае 18-22p), кидаются на землю.

Перезагрузка контроллера

Для возможности осуществления перезагрузки контроллера предусмотрен вывод RESET.

Когда на выводе присутствует положительный потенциал, для этого притягиеваем резистором (R1) к +5 вольтам, контроллер работает по заданной программе. Для осуществения сброса МК, вывод RESET необходимо замкнуть на землю, для этих целей служит кнопка (S1).

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

Получение напряжения для работы контроллера

Не всегда под рукой можно найти стабилизированные 5 вольт. Самым простым способом решения данной проблемы явлеется установка широкораспространенного стабилизатора 7805, в простонародье Кренка.

Для сглаживания входного и выходного напряжений в обвязку кренки необходимо установить конденсаторы (C4, C5). Кренка будет работать и без них, однако напряжение может поскакивать. 

Распиновка контроллера

Смотря на данные принципиальные схемы, у большинства новичков скорее всего возникнут вопросы о том, куда делись привычные, для среды Arduino, выводы D1, D2 и т.д.

Непосредственно сам контроллер Atmega разбит на три порта : PORT C (аналоговые входы) и PORT B, PORT D (цифровые входы/выходы).

 При программировании на СИ, в чистом виде, в коде программы происходит обращение к выводам, по названиям из даташита.

Например операция PORTB |= 1«5; установит логическую единицу на указаном порте и пине, а в среде Arduino тоже самое произойдет при функции

digitalWrite(13, HIGH);

Как вы наверное уже догадались, все эти PC2, PB2,  в среде Arduino спрятаны за обычными цифрами, а обращение к портам происходит в завиcимости от функций

Далее приложу, да вы и сами поймете что)

Интерфейсы

Связь с внешним миром в контроллерах ATmega8, 168, 328 представлена 3 видами интерфейсов. Сильно углубляться здесь не буду, скопирую инфомацию из Википедии, от себя для наглядности добавлю цветовую маркировку.

I2C (Inter-Integrated Circuit) — последовательная шина данных для связи интегральных схем, использующая две двунаправленные линии связи (SDA и SCL). Используется для соединения низкоскоростных периферийных компонентов с материнской платой, встраиваемыми системами и мобильными телефонами. 

UART (Universal Asynchronous Receiver-Transmitter) — узел вычислительных устройств, предназначенный для связи с другими цифровыми устройствами.

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

Метод преобразования хорошо стандартизован и широко применялся в компьютерной технике.

SPI (Serial Peripheral Interface, SPI bus) — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, разработанный компанией Motorola для обеспечения простого и недорогого сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом.

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

Источник: http://zelectro.cc/atmega_main

Доктор фьюзов – «Atmega fusebit doctor»

Источник: http://vprl.ru/publ/cifrovaja_tekhnika/mikrokontrollery/doktor_fjuzov_atmega_fusebit_doctor/15-1-0-48

Макетная плата – микроконтроллерный конструктор

Плата позволяет быстро собрать схему на микросхемах в DIP-корпусах и дискретных элементах. Она предназначена в первую очередь для макетирования устройств на МК серии ATMega8/48/88/168/16/32/8535 а также АТ89Сх50. Плата делается из 40-пиновых однорядных разъемов PBS и микросхемных панелей. Внешний вид конструкции показан на фотографии.

Микросхемные панели располагаются в 5 рядов: первые два ряда – по пять DIP16, третий ряд – четыре DIP20, четвертыйй ряд – две DIP28 + три DIP8, последний ряд – две DIP40.

Верхняя панель DIP20 предназначена для МК семейства AT89Cx51, верхняя DIP28 – для МК ATMega8/48/88/168 и аналогичных по цоколевке. Нижний DIP40 – для МК серии ATMega16/32/8535.

Для этих трех панелей джамперами можно подключить питание, цепи обвязки, кварцевый резонатор, разъем RS-232 и разъем ISP-программирования. У остальных панелей джамперами можно подключать/отключать выводы питания и земли.

Следующая плата служит для монтажа дискретных элементов. Она состоит из шести вертикальных рядов по три запараллеленных разъема + разъемы сверху и снизу – +5В и земля соответственно. Дополнительно есть следующие платы: 

  • плата с 10 светодиодами, управляемыми транзисторными ключами
  • ЖК-индикатор 16х2 символов
  • клавиатура из 9 кнопок
  • блок из трех переключателей
  • стабилизатор напряжения на 5В
  • разъемы DB9 для подключения RS-232, DB25 и USB

Вся эта “периферия” выведена на два горизонтальных разъема PBS вверху основной платы. Для соединения схем используются провода с припаянными штырьками, отломанными от разъемов PLS, они же используются для джамперов.

Для согласования сигналов интерфейса RS-232 ПК и UART МК сделан преобразователь на микросхеме MAX232, Он сделан в форме вилки, вставляющийся в разъем DB9 на плате и питающийся от источника платы. 

Схема стабилизатора показана на следующем рисунке. В разъем Х1 подключается источник нестабилизированного переменного или постоянного напряжения, которое стабилизируется до 5В, в разъем Х2 можно подключить источник стабилизированного напряжения, если схема питается не от 5В или мощности встроенного стабилизатора недостаточно.

К выводам SB1.1 и SB1.2 подсоединяется тумблер включения питания (как показала практика пользования платой, сюда было бы также очень полезно добавить кнопку с нормальнозамкнутыми контактами для сброса МК). Также на этой плате располагается разъем USB (пожалуй, было бы не лишне добавить сюда стабилитроны на 3.

3В и резисторы для согласования с USB). 

Кнопки соединены в группы по три, схемы для них и светодиодов не показываю, их можно скачать по ссылке ниже вместе с разводкой печатных плат. Рисунки печатных плат с разъёмами в формате SprintLayout, все остальных схемы и платы – в формате Eagle. 

Файлы: Схемы и платы

Источник: http://trolsoft.ru/ru/sch/mplate

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}
 

Каждый, кто начинает работать с микроконтроллерами AVR знает, что неправильной установкой “фьюзов”, можно прийти к печальным последствиям.

Распространенными случаями является ошибочное отключение вывода Reset микроконтроллера (Fuse-бит RSTDISBL, для возможности использовать его как линию ввода/вывода) или отключение режима ISP программирования (Fuse-бит SPIEN) – в этих случаях внутрисхемное программирование станет невозможным.

Восстановить их работоспособность и вернуть к жизни может лишь параллельный программатор.

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

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

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

Недавно я “набрёл” в интернете на интересное устройство, под названием «Atmega fusebit doctor», с которым и хочу познакомить наших читателей.

Автор этой разработки – поляк Pawel Kisielewski. Схема этого устройства относительно несложная и оно предназначено лишь только для одной цели – вернуть к «жизни» микроконтроллер с неправильно прошитыми фьюзами.

Такими фьюзами могут быть:
 
–  CKSEL фьюзы выбора задающего генератора (выбран внешний генератор при его отсутствии или выбрана очень маленькая частота внутреннего);

 – SPIEN запрет последовательного программирования;
 – RSTDISBL использование ножки сброса как дополнительной линии ввода-вывода;
 – установленные LOCK биты;  – другие, мешающие последовательному программированию.

Пользоваться этим устройством очень просто – подаем на плату 12 вольт от стабилизированного БП, вставляем в панельку «мёртвый» микроконтроллер, нажимаем кнопочку «START» и через секунды получаем “новенький” рабочий микроконтроллер. Причём  «Atmega fusebit doctor» не затрагивает программу, зашитую в микроконтроллер, ему вообще “до лампочки”, что там зашито, он только проверяет “фьюзы”. Видите, всё очень просто и здесь даже не нужен компьютер.

Принцип работы «Atmega fusebit doctor»

При нажатии кнопки «START», «Atmega fusebit doctor» читает сигнатуру “мёртвого” микроконтроллера, если она не читается, то делается несколько попыток прочитать её различными способами.

После того как сигнатура прочитана, по базе определяется тип микроконтроллера и восстанавливаются заводские установки фьюз бит.

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

При восстановлении фьюз бит, прошивка микроконтроллера, как и было сказано выше, остается нетронутой. Еще на плате есть перемычка «ALLOW ERASE«, при замыкании которой, устройство полностью «обнулит» микроконтроллер. Это необходимо в том случае, если микроконтроллер «залочен», т.е. установлены защитные биты которые препятствуют чтению/записи микроконтроллера.

Для индикации работы «Atmega fusebit doctor» имеет два светодиода – красного и зелёного цвета.

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

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

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

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

Если Вы хотите получить более подробную информацию о процессе «лечения» микроконтроллера, на плате для этого есть выход UART. Отправьте этот сигнал на терминал, и Вы получите «распечатку» того, что было сделано в процессе лечения.

Установки для терминала следующие:
 
baudrate: 4800

 parity: none
 databits: 8
 stopbits: 1
 handshake: none

Конструкция «Atmega fusebit doctor»

На печатной плате установлены три панельки для микроконтроллеров-«пациентов» на 20 (Attiny2313 …), 28 (Atmega48/88/168, Atmega8 …), 40 (Atmega16, Atmega8535 …) ножек.

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

«Atmega fusebit doctor» поддерживает более сотни типов микроконтроллеров AVR.

 Вот их полный список:

Зелёным цветом отмечены микроконтроллеры, которые были проверены и удачно восстановлены.

 1kB:
 AT90s1200, Attiny11, Attiny12, Attiny13/A, Attiny15
 2kB:
 Attiny2313/A, Attiny24/A, Attiny26, Attiny261/A, Attiny28, AT90s2333, Attiny22,Attiny25, AT90s2313, AT90s2323, AT90s2343
 4kB:
 Atmega48/A, Atmega48P/PA, Attiny461/A, Attiny43U, Attiny4313, Attiny44/A, Attiny48, AT90s4433, AT90s4414, AT90s4434, Attiny45
 8kB:
 Atmega8515, Atmega8535, Atmega8/A, Atmega88/A, Atmega88P/PA, AT90pwm1, AT90pwm2, AT90pwm2B, AT90pwm3, AT90pwm3B, AT90pwm81, AT90usb82, Attiny84, Attiny85, Attiny861/A, Attiny87, Attiny88, AT90s8515, AT90s8535
 16kB:
 Atmega16/A, Atmega16U2, Atmega16U4, Atmega16M1, Atmega161, Atmega162, Atmega163, Atmega164A, Atmega164P/PA, Atmega165A/P/PA, Atmega168/A, Atmega168P/PA, Atmega169A/PA, Attiny167, AT90pwm216, AT90pwm316, AT90usb162
 32kB:
 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, AT90can32
 64kB:
 Atmega64/A, Atmega64C1, Atmega64M1, Atmega649, Atmega6490, Atmega649A/P, Atmega6490A/P, Atmega640, Atmega644/A, Atmega644P/PA, Atmega645, Atmega645A/P, Atmega6450, Atmega6450A/P, AT90usb646, AT90usb647, AT90can64
 128kB:
 Atmega103, Atmega128/A, Atmega1280, Atmega1281, Atmega1284, Atmega1284P, AT90usb1286, AT90usb1287, AT90can128
 256kB:
 Atmega2560, Atmega2561  

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

Схема устройства довольно простая. Номиналы резисторов можно варьировать в небольших пределах. Питается устройство от внешнего стабилизированного блока питания с напряжением 12 вольт. Подключается БП к соответствующему 2-х контактному разъёму на печатной плате.

 059-atmega_fusebit_doctor_V2e_schematic.pdf – Схема “ATmega FuseBit Doctor”

При сборке устройства есть один нюанс, о котором важно не забыть.
При установке на плату панелек, ножки 40-ка пиновой панельки, с 29 по 37 – необходимо откусить, или ещё лучше в плате вообще не сверлить отверстия под эти ножки. Ниже на рисунке это место обведено красно-розовым цветом.

В архиве вместе с печаткой, есть и картинка для нанесения на плату со стороны деталей (монтажная картинка). Монтаж с такой “маской” превращается в простую процедуру установки радиодеталей по картинкам (“маске”).

Такой рисунок на плату так-же можно нанести методом ЛУТ, после чего, его необходимо будет покрыть лаком, иначе он быстро сотрется.
059-atmega_doctor_plate_v2d_Sprint.rar – Печатка для “ATmega FuseBit Doctor” в Sprint Layout 6.
059-atmega_fusebit_doctor_V2e_PCB.zip – Печатка и маска для “ATmega FuseBit Doctor” в “PDF”.

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

Теперь осталось только прошить микроконтроллер ATmega8 и устройство готово!
059-atmega_fusebit_doctor_2.09.hex – Прошивка “ATmega FuseBit Doctor”.

Да, в качестве основного микроконтроллера кроме ATmega8, можно применить Atmega88, Atmega88P, Atmega168, Atmega168P, Atmega328, Atmega328P.

Установка фьюзов для микроконтроллера, показана на рисунке ниже. Фьюз байты: Lock Bits = 0x 3F; High Fuse = 0x D1; Low Fuse = 0x E1; Ext. Fuse = 0x 00
 

Как проверить, правильно ли Вы их выставили в программаторе? В разных программаторах они выставляются по разному. В одних так, как на картинке, в других зеркально.

Чтобы узнать, как поступить, нужно в программатор поставить чистый МК с заводской установкой фьюзов, и просто считать только установку фьюзов. Дальше сравнить фьюз-бит “SPIEN”. Если на Вашем программаторе у него не стоит галочка, то фьюзы выставляются так, как на картинке.

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

Данный вариант прошивки в архиве, еще есть и для микроконтроллеров:

Atmega88, Atmega88P, Atmega168, Atmega168P, Atmega328, Atmega328P.

Прошивка для микроконтроллеров с 16kB и 32kB памяти, кроме того, выдает названия восстанавливаемых микроконтроллеров.

Адаптеры для микроконтроллеров

Автором были разработаны два адаптера:  – для HVPP программирования 20-ти пиновых Attiny26 подобных и 40-ка пиновых Atmega8515 подобных контроллеров.  – для HVSP программирования для 8-ми пиновых  и 14p-ти пиновых микроконтроллеров с высоковольтным последовательным  способом программирования.

 059-adapter_dip20-dip40 – Aдаптеры для программирования 20 и 40 пиновых микроконтроллеров в DIP корпусах.

 059-adapter_dip8-dip14 – Адаптер для программирования 8 и 14 пиновых микроконтроллеров в DIP корпусах.