Восстановление конфигурации Fuse-битов микроконтроллеров Tiny AVR (HVSP). Исправление фьюзов AVR Итак, возможности отладочной платы

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

Разработанной плате я дал название FastAVR. Имея размеры 98x127 мм и односторонний печатный монтаж, она вполне пригодна для изготовления в домашних условиях. Применены микросхемы только в корпусах DIP, установленных в панели, что позволяет легко заменять их в процессе экспериментов. Микроконтроллер может тактироваться как от кварцевого резонатора, так и от установленного на плате тактового генератора с делителем частоты Предусмотрен разъем для подключения стандартного программатора STK-200 с селективной подачей на него питания и с возможностью подключения адаптера JTAG При необходимости можно запрограммировать и микроконтроллер, предназначенный для работы в другом устройстве.

На плате имеются самые необходимые для макетирования отлаживаемых конструкций периферийные устройства: двухразрядный семиэлементный светодиодный индикатор, символьный ЖКИ, интерфейсы RS-232, SPI, PS/2 (для подключения стандартной компьютерной клавиатуры или "мыши"), микросхема EEPROM, звуковой сигнализатор. Предусмотрена возможность подключения большинства этих устройств к любым выводам любых портов микроконтроллера в произвольных сочетаниях Все порты доступны и для подключения устройств, расположенных вне платы. Имеющиеся на плате устройства, в том числе кварцевый генератор и светодиодные индикаторы, можно подключить и к устройствам вне ее Все эти подключения не требуют пайки и выполняются установкой перемычек между имеющимися на плате штыревыми контактами или между ними и внешними устройствами.

Первоначально была задумана отладочная плата с дешевым микроконтроллером АТmega8, обладающим практически всеми присущими его семейству (AVR) возможностями Однако я решил не экономить и применить микроконтроллер этого же семейства в корпусе DIP с максимально возможным числом выводов (40) - ATmega16 или ATmega32. Расположение выводов у них одинаково, и на описываемую плату может быть установлен любой. Большое число выводов позволяет подключить больше различных периферийных устройств, которые могут потребоваться при отладке программы. Поскольку микроконтроллеры семейства AVR программно совместимы, отлаженную на более мощном из них программу несложно, как правило, перенести на менее мощный Учитывая, конечно, их различия.

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

Схема основного узла платы FastAVR изображена на рис. 1. Все подключение периферии к портам микроконтроллера DD2 производится через двухрядные 16-контактные штыревые колодки ХР1-ХР4. Четные штыри каждой из них подключены к выводам портов микроконтроллера, а нечетные - к имеющимся на плате периферийным устройствам. При сборке макета для отладки соседние штыри удобно соединять обычными джамперами, а находящиеся на удалении, в другой колодке или даже на другой плате, - перемычками из отрезков гибкого изолированного провода, снабженными на обоих концах гнездами от разъемов (рис. 2). На гнезда надеты термоусаживаемые трубки.


В процессе отладки к тем же штырям удобно подключать контрольно-измерительные приборы: осциллограф, частотомер, генератор испытательных сигналов. Расположение штырей в ряд в порядке возрастания номера разряда порта облегчает поиск нужного и значительно снижает риск их перепутать. Такое решение, по моему мнению, гораздо удобнее, чем использование в большинстве промышленных отладочных плат для внешних подключений десятиконтактных двухрядных разъемов IDC-10. Единственное их достоинство - наличие ключа, обеспечивающего правильную стыковку с ответной частью разъема. А при подключении единичного провода или щупа измерительного прибора приходится всякий раз считать контакты, вспоминая порядок их соответствия выводам микроконтроллера.

Если перемычки S2-S4 сняты, a S5 и S6 установлены, к внутреннему тактовому генератору микроконтроллера подключен кварцевый резонатор ZQ1, частота которого может быть выбрана любой, необходимой для решаемой задачи. На плате имеется также интегральный кварцевый генератор G1 на 16 МГц. Триггеры микросхемы DD1 делят его частоту на два и на четыре. Сняв перемычки S5, S6 и установив одну из перемычек S2-S4, можно подать на тактовый вход микроконтроллера (вывод 13) импульсы частотой 4, 8 или 16 МГц. Это обеспечит работу микроконтроллера при любой конфигурации, в которой внутренний тактовый RC-генератор выключен.

Тактирование от внешнего генератора может быть полезным и для восстановления работоспособности микроконтроллера, конфигурация которого запрограммирована ошибочно. Об этом можно прочитать в .

Хотя микроконтроллер содержит собственную энергонезависимую память данных, зачастую ее объем оказывается недостаточным для решаемой задачи. Проблему можно решить подключением к микроконтроллеру внешней микросхемы памяти нужного объема. На плате FastAVR это сделано по схеме, изображенной на рис. 3 Микросхема DS1 серии 24С или 24LC - перепрограммируемая энергонезависимая память с интерфейсом I2C. Входы АО-А2 подключены таким образом, что младший разряд ее адреса ведомого на интерфейсной шине равен 1, а два следующих за ним - нулевые.

На рис. 4 показана схема имеющихся на плате FastAVR узлов управления и индикации. Счетверенный DIP-выключатель SA1 с помощью перемычек подключают к выводам портов микроконтроллера. Резисторы R4-R7 предохранят эти выводы, если они случайно запрограммированы как выходы от перегрузки при замкнутых выключателях. Резисторы сборки DR1 поддерживают высокий логический уровень на входах микроконтроллера, когда выключатели SA1.1-SA1.4 разомкнуты. Пятый "лишний" резистор сборки также может быть использован для подачи такого уровня в какую-либо цепь
Четыре сигнальных светодиода HL1 -HL4 светятся при высоких логических уровнях на выходах, к которым они подключены, и не светятся при низких. Резисторы R8-R11 ограничивают ток.

Коммутаторы общих электродов двухразрядного семиэлементного светодиодного индикатора HG1, собранные на транзисторах VT1-VT4. могут управлять индикаторами как с общими анодами (например, DA56-11), так и с общими катодами элементов (например, DC56-11) Нужно лишь обеспечить нужную полярность программно формируемых управляющих импульсов, подаваемых на резисторы R12-R21. Подобные индикаторы несложно найти в отслуживших свой срок кассовых аппаратах и системных блоках компьютеров. Сняв перемычку S7, можно отключить элемент Н (десятичную точку) младшего разряда индикатора HG1.

Разъем ХР5 служит для подключения к плате FastAVR распространенных символьных ЖКИ с встроенными контроллерами. Фактически это двухрядный 34-контактный разъем IDC-34MS, но используются только 14 из 17 контактов одного ряда. Их номера, показанные на схеме, не соответствуют стандартным для этого разъема, но совпадают с номерами выводов наиболее распространенных ЖКИ. Наличие такого разъема позволяет воспользоваться для связи с индикатором стандартным компьютерным 34-про-водным плоским кабелем, предназначенным для соединения привода гибких дисков с материнской платой. В отверстия интерфейсных контактных площадок ЖКИ вставлена и припаяна к ним 14-контактная штыревая колодка. На нее надевают один разъем плоского кабеля, а второй вставляют в разъем ХР5. Контакты ЖИЖИ 1 соединяют с выводами портов микроконтроллера в соответствии со схемой включения ЖКИ в отлаживаемом устройстве. Плата с подключенным индикатором показана на рис. 5.

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

Звуковой сигнализатор НА1 - электромагнитный излучатель сопротивлением 80 Ом, найденный на материнской плате компьютера. Диод VD1 подавляет выбросы напряжения самоиндукции, возникающие на обмотке сигнализатора при ее питании импульсным напряжением. Уменьшать сопротивление резистора R22, чтобы повысить громкость звука, не следует. Это приведет к перегрузке выхода микроконтроллера.

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

Схема внешних интерфейсов отладочной платы изображена на рис. 6. К разъему XS1 можно подключить компьютерную клавиатуру или "мышь", а разъем XS2 соединить с СОМ-портом компьютера. Микросхема DA1, включенная по типовой схеме, согласует уровни сигналов RS-232 и микроконтроллера. Перемычки S8-S10 представляют собой ограниченные контактными площадками тонкие участки печатных проводников, которые можно перерезать, если возникнет необходимость использовать в отлаживаемом устройстве не только информационные, но и управляющие сигналы интерфейса RS-232.
Дроссели L1-L5 подавляют высокочастотные помехи. Это - надетые на провода небольшие ферритовые трубки. Такие легко найти на компьютерных платах.

Чтобы загрузить в установленный на плате FastAVR микроконтроллер коды программы, разъем ХР6 соединяют с программатором. На время работы с ним перемычку S1 (см. рис. 1) рекомендуется снять, отключив этим имеющуюся на плате цепь начальной установки микроконтроллера. Если программатор имеет собственный источник питания, необходимо снять перемычку S11. Когда она установлена, программатор питается от отладочной платы.

Я использовал программатор, аналогичный STK-200. Его схему и чертеж печатной платы можно найти на рис. 8 и 9 в . В этом программаторе всего одна микросхема КР1564АП5 (74HC244AN), подключают его к порту LPT компьютера. Устанавливать в программаторе кварцевый резонатор нет необходимости, он имеется на отладочной плате. При работе с этим программатором и программой PonyProg на компьютере с процессором Core2Duo+, чипсетом 1965 и операционной системой Windows XP SP3 никаких проблем не возникло.

Схема узла питания отладочной платы показана на рис. 7. На контакт 3 разъема ХР7 от внешнего источника можно подать стабилизированное напряжение +5 В. Перемычки S12, S13 обязательно должны быть сняты. Если имеется источник постоянного напряжения 9... 16 В, его плюсовой вывод соединяют с контактом 2 того же разъема и устанавливают перемычки S12, S13. В этом случае внешнее стабилизированное напряжение +5 В не требуется, его получают с помощью интегрального стабилизатора DA2.

Когда светодиодный индикатор HG1 не используется и к плате не подключены какие-либо потребляющие большой ток внешние устройства, температура корпуса стабилизатора DA2 невелика. Если же, несмотря на наличие теплоотвода, стабилизатор сильно нагревается, рекомендуется перейти на питание от внешнего достаточно мощного источника напряжения 5 В. О наличии напряжения питания сигнализирует светодиод HL5.

Диоды VD2 и VD3 защищают от неправильной полярности подключения источника питания. Дроссели (ферритовые трубки) L6 и L7 подавляют высокочастотные помехи. Установленные в различных местах платы контакты ХТ12-Х17 (+5 В) и ХТ18-ХТ22 (общий) позволяют питать напряжением 5 В различные внешние устройства. Кроме того, к контактам ХТ18-ХТ22 удобно подключать общий провод измерительных приборов.

Чертеж печатной платы изображен на рис. 8. Она односторонняя из фольгированного стеклотекстолита толщиной 1,5 мм. Обратите внимание, что две изображенные штриховыми линиями перемычки из изолированного провода устанавливают со стороны печатных проводников. Остальные делают из провода без изоляции и располагают со стороны деталей. Для микросхем DA1, DD1, DD2, DS1 и светодиодного индикатора HG1 на плате установлены панели, что позволяет при необходимости быстро заменять эти элементы. При отсутствии ферритовых трубок вместо дросселей L1-L7 можно установить перемычки.

Рядом с разъемом XS1 имеется посадочное место для еще одного такого же разъема, обозначенного XSV. Хотя его выводы никуда не подключены, это позволяет без проблем установить здесь снятую с компьютерной материнской платы сдвоенную розетку MDN-6F. Разъем XS2 - розетка DB-9F.

Штыревые колодки ХР1 -ХР4, штыри ХТ1 -ХТ22 и предназначенные для установки перемычек S1 - S7, S11-S13 изготовлены из двухрядных разъемов серии PLD или однорядных серии PLS. Чтобы получилось нужное число контактов, от них отделены отрезки соответствующей длины или добавлены отрезки с недостающими контактами.

Обратите внимание, что рядом с контактными площадками для штырей ХТ4- ХТ11 имеются свободные контактные площадки. Это позволяет установить здесь двухрядную штыревую колодку, не подверженную "расшатыванию" при частых перекоммутациях. О разъеме ХР5 (IDC-34MS) было сказано ранее. Разъем ХР6 (для программатора) - десятиконтактный той же серии (IDC-10MS). Трехконтактный разъем питания ХР7 снят с материнской платы, где он использовался для подключения вентилятора. Это сняло проблему поиска ответной части разъема, нужной для подключения к плате источника питания.

В нижней (по чертежу) части платы имеется заполненное контактными площадками прямоугольное поле - резерв для размещения всевозможных дополнительных элементов, которые могут потребоваться в процессе отладки. На изготовленной мною плате здесь был установлен, например, переменный резистор номиналом 22 кОм. На него было подано напряжение +5 В, а снимаемое с движка регулируемое использовалось для проверки АЦП микроконтроллера.

Интерфейс RS-232 очень удобно использовать при отладке, дополнив отлаживаемую программу модулем, посылающим необходимую информацию через USART микроконтроллера. Запустив на компьютере, с СОМ-портом которого соединен разъем XS2 отладочной платы, терминальную программу, можно наблюдать на экране принимаемые сообщения.


Я использовал программу Terminal v1.9b, которую можно найти в Интернете с помощью любой поисковой системы. Окно этой программы с примерами сообщений, принятых от отлаживаемого устройства и переданных ему, показано на рис. 9. Для нормального отображения русского текста необходимо, нажав на экранную кнопку "Set font", выбрать в открывшемся окне шрифт - Arial, начертание - обычный размер - 8, набор символов - кириллический.

Файл печатной платы в формате Sprint Layout 5.0 и примеры программ, демонстрирующих работу имеющихся на плате узлов:

ЛИТЕРАТУРА
1 Баранов В. Восстановление конфигурации микроконтроллеров AVR. - Радио. 2009, № 11, с. 26-29.

С. БОРИСОВ, г. Узловая Тульской обл.
"Радио" №№8-9 2010г.

Один из лучших компиляторов Basic-подобного языка для серии восьмибитных микроконтроллеров AVR .

Среда разработки FastAVR характеризуется удобным, продуманным интерфейсом и включает в себя редактор, ассемблер, компилятор и программатор микроконтроллеров. Приложение имеет подсветку команд, дружелюбный интерфейс, а также множество других решений, предназначенных для облегчения процесса создания и отладки программ. FastAVR использует восьми-, а не шестнадцатибитную адресацию и выгодно отличается от других компиляторов созданием чрезвычайно компактного кода (особенного для контроллеров с ОЗУ менее 256 байт). Кроме того в программу встроены дополнительные функции знакогенератора для LCD, калькулятора таймеров, терминала. Список поддерживаемых микроконтроллерных устройств компании AVR включает в себя серии: 2313, 2323, 2333, 4433, 8515, 8535, ATiny13, ATiny26, ATmega163, Atmega8, Atmega16, Atmega32, ATmega64, ATmega128 и многие другие.

Используемый в FastAVR язык состоит из знакомых команд Basic, значительно расширенных дополнительными полезными функциями (I2C, 1-Wire, LCD и некоторыми другими). Компилятор поддерживает структурное программирование, улучшающее читаемость программ. Данное приложение компилирует программу, расположенную в активном окне редактора, в стандартный ассемблерный код AVR, используя бесплатный ассемблер от Atmel (входящий в состав набора программ ). В результате компиляции и в том случае, если в исходном тексте нет ошибок, создается файл с расширением *.asm. Среда программирования выводит сгенерированный код на ассемблере, что пригодиться опытным разработчикам.

FastAVR может использовать фактически любой из существующих внутрисхемных программаторов для контроллеров AVR, подключаемых к последовательному или к параллельному порту. Исходный код программы набирается подобно обычному тексту в виде символов во встроенном редакторе данного ПО. Помимо отображения исходного текста редактор FastAVR самостоятельно правит программу, выделяет цветом команды, переменные и другие данные. Также он поддерживает отключаемую возможность выравнивания блоков текста. Код программы можно просмотреть и отредактировать в любом обычном редакторе. Тем не менее, при написании программы нужно соблюдать ряд правил, заданных синтаксисом FastAVR. Например, в каждой программе компилятору необходимо указывать тип используемого контроллера, тактовую скорость и размер программного стека. Подобные специальные команды (метадирективы) не преобразуются в ассемблерный код.

Поскольку семейство микроконтроллеров AVR хранит данные и код в разных областях памяти, то при работе с программой FastAVR разработчикам необходимо указывать, в каком месте памяти будут размещаться данные. Код программы компилятор располагает автоматически.

Программа FastAVR была создана Bojan Ivancic из Словении и является продуктом компании MicroDESIGN. К сожалению, автор забросил свой проект, его сайт не работает, а телефоны поддержки не отвечают. Само приложение давно не обновляется и, как следствие, компилятор не поддерживает последние модели контроллеров Atmel.

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

Данный продукт был написан на английском языке. Русификатора к нему не имеется.

FastAVR работает под Microsoft Windows. Приложение корректно фунуционирует в операционных системах 98SE, NT4, 2000 и XP.

Достаточно часто появляется необходимость использовать управление какого-либо устройства (будь то лампочка накаливания, двигатель, ТЭН или простой светодиод) посредством ШИМ.

Наверно объяснять что это такое и в чем прелесть управления ШИМом не нужно, информации в интернете накопилось уже достаточно много, да и врядли мне получиться разжевать эту тему лучше. Поэтому сразу перейдем к делу, а именно запустим ШИМ на Attiny2313 средствами Bascom-AVR.

Шим в микроконтроллерах AVR работает на таймерах-счетчиках, в мк Tiny2313 таких таймеров всего 2: 8-и битный Timer0 считающий до 255 и 16-и битный Timer1 способный считать до 65535. Каждый таймер управляет двумя ШИМ-каналами, таким образом всего аппаратно можно реализовать целых 4 канала ШИМ.

Информацию о количестве каналов ШИМ и разрядность каждого канала можно глянуть на страницах даташита на микроконтроллер.

Так, на борту Attiny2313 имеются два 8-и битных канала ШИМ работающих от Timer0 и еще два канала под управлением таймера Timer1 имеют программируемую разрядность от 8 до 10 бит. В даташите эти ноги подписываются следующим образом:

Для того чтобы сконфигурировать таймер Timer1 на генерацию ШИМ в Bascom достаточно записать следующую строку:

Config Timer1 = Pwm, Pwm = 8 , Compare A Pwm = Clear Up, Compare B Pwm = Clear Down, Prescale = 64

Pwm = 8 выбирается разрядность ШИМ, для Timer1 как писалось выше может быть также Pwm = 9 или Pwm = 10.

Compare A/B Pwm = Clear Up/Clear Down здесь конфигурируем активное состояние для каждого канала ШИМ (А и В).

Prescale = 64 - уже знакомая строка конфигурации таймера, отвечающая за предварительное деление частоты переполнения таймера, в данном случае делитель будет задавать частоту ШИМ. Можем менять на свое усмотрение Prescale= 1|8|64|256|1024


Скважность генерируемого сигнала определяется значением, которые мы записываем в регистры сравнения OCR1A и OCR1B (каналов ШИМ же у нас два на одном таймере, вот по одному регистру на канал А и В). Со значениями, которые лежат в этих регистрах постоянно сравнивается значение счетного регистра (туда оно копируется с таймера), при их совпадении происходит переключение ноги мк в активное состояние, а счетный регистр продолжает считать до своего максимального значения. Досчитав до максимума, таймер начинает считать в обратном направлении, и дойдя до момента когда значения счетного регистра и регистра сравнения снова совпадут, произойдет обратное переключение на ноге микроконтроллера (см. рисунок ниже)



Для нас регистры сравнения OCR1A и OCR1B всего-навсего переменные, в которые мы можем положить какое-нибудь значение. Например, так:


OCR1A = 100
OCR1B = 150


В баскоме для удобства предусмотрено и другое название этих регистров: PWM1A и PWM1B, так предыдущие строки будут равнозначны следующим:


PWM1A = 100
PWM1B = 150

Теперь разберемся, как влияет конфигурация активного состояния Clear Up/Clear Down на то, что происходит на выходе ШИМ в зависимости от значения регистра сравнения.

Когда выход сконфигурирован как Compare A Pwm = Clear Down активным состоянием выхода является высокий уровень и при увеличении значения регистра OCR (PWM) пропорциональное напряжение на этой ноге будет расти. С точностью до наоборот все будет происходить, если выход сконфигурирован как Compare A Pwm = Clear Up. Все это хорошо проиллюстрировано на картинке ниже



Значения, которые могут принимать эти регистры сравнения зависят от того, какую разрядность канала ШИМ мы выбрали. При PWM = 8 (8-и битный шим) возможно значение от 0 до 255; при PWM = 9 от 0 до 511; при PWM = 10 от 0 до 1023. Тут я думаю, все понятно.


Теперь небольшой пример: подключим к микроконтроллеру светодиоды как показано на схеме (питание мк на схеме не указано)


И напишем небольшую программку:


$crystal = 4000000

Config Timer1 = Pwm, Pwm = 9 , Compare A Pwm = Clear Down, Compare B Pwm = Clear Up, Prescale = 8
Config PORTB.3 = Output
Config PORTB.4 = Output

Incr Pwm1a "плавно увеличиваем значение регистра сравнения OCR1A
Incr Pwm1b "плавно увеличиваем значение регистра сравнения OCR1B

Waitms 20 "добавим задержку

Loop

End

После того как откомпилировали и прошили программу в контроллер один из светодиодов (D1) будет плавно набирать яркость, а другой (D2) плавно гаснуть


Если сейчас ткнуть осциллографом на выходы ШИМ, то можем увидеть такую вот картину с изменяющейся скважностью импульсов (синий сигнал на ОС1А, красный на ОС1В):


Конфигурация таймера Timer0 для генерации ШИМ практически такая же, за исключением того, что timer0 это 8-и битный таймер, и поэтому ШИМ генерируемый этим таймером будет всегда иметь разрядность 8. Поэтому конфигурируя этот таймер, разрядность ШИМ не указывается:

Config Timer0 = Pwm, Compare A Pwm = Clear Up, Compare B Pwm = Clear Down, Prescale = 64



Теперь аналогичный пример со светодиодами, но теперь шим сгенерируем при помощи Timer0:


$regfile = "attiny2313.dat"
$crystal = 4000000

Config Timer0 = Pwm, Compare A Pwm = Clear Down, Compare B Pwm = Clear Up, Prescale = 8
Config PORTB.2 = Output
Config PORTD.5 = Output

Incr Pwm0a " плавно увеличиваем значение регистра OCR0A
Incr Pwm0b " плавно увеличиваем значение регистра OCR0B

Waitms 20 "добавим задержку

Loop

End

Подключим светодиоды к выходу ШИМ Timer0, как показано на схеме:

Тут все аналогично: первый светодиод (D1) будет плавно набирать яркость, а второй (D2) будет плавно гаснуть.


Подсчет частоты генерации ШИМ

Если требуется узнать частоту генерации ШИМ, то сделать это не сложно. Смотри на формулу ниже:

Частота ШИМ = (частота кварца/предделитель) / (размер счетного регистра *2)

Для примера подсчитаем несколько значений:

1. Частота кварца = 4000000 Гц, предделитель = 64, разрядность ШИМ 10 бит => размер счетного регистра = 1024

Частота ШИМ = (4000000/64)/(1024*2) = 122 Гц

2. Частота кварца = 8000000 Гц, предделитель = 8, разрядность ШИМ 9 бит => размер счетного регистра = 512

Частота ШИМ = (8000000/8)/(512*2) = 976,56 Гц

3. Частота кварца 16000000 Гц, предделитель = 1, разрядность ШИМ 8 бит => размер счетного регистра = 256

Частота ШИМ = (16000000/1)/(256*2) = 31250 Гц

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


Для изготовления отладочной платы устройств на ATTiny2313 нам нужно:


Собираем отладочную плату по рисунку:

1 припаиваем в панельку под микросхему и штырьки (как на рисунке);
2 как показано на рисунке (красная линия) делаем перемычку с лицевой стороны платы. Еще одну перемычку делаем с другой стороны;
3 перемычками-«соплями» соединяем штырьки и ножки панельки (места пайки обведены зеленым).

Наша отладочная плата готова!

Заключение.

— Ставим метки на GND, SCK для правильного подключения питания и программатора;
— Все остальное на отладочную плату будет допаиваться в согласно выбранной схемы устройства. (как вариант можно допаять штырьки к каждой ножке микроконтроллера для подключения других плат и периферии);
— Для более надежной работы в условиях повышенных помех очень желательно дополнить схему, подтягивающим к питанию ножку сброса, резистором (внутренний подтягивающий резистор имеет сопротивление около 10 кОм – этого бывает мало) и фильтрующим керамическим конденсатором на ножках питания (в пределах 0.1 мкФ);
-Теперь вставляем в панельку микроконтроллер и при помощи прошиваем ATTiny2313 нужной прошивкой.

(Visited 16 038 times, 1 visits today)

Раздел: Метки: ,

Навигация по записям

Простая отладочная плата для устройств AVR ATTiny2313 с кварцем. : 70 комментариев


  1. GetChiper Автор записи

    Фьюзы трогали?
    На другой тини2313 проверяли?

  2. Toxa12345

    я долго мучался о том: «КАКОЙ жэ мк выбрать» остановился на тиньке 2313 по тому, что она дешевле атмег, и не настолько кострирована как тинька 13 так жэ изза наличия линий RxD и TxD что позволяет осуществить связь по ЮАРТ
    З.Ы. у нас в Курске купить МК не проблема. тинька 2313-стоит 130 руб. а атмега8 аж 200руб про тиньку 13 не узнавал


  3. GetChiper Автор записи

    А может ATmega88 или ATmega48?

  4. Andrey1979

    Доброго времени.
    Собрал я плату по предложенной схеме, подключил к USBasp, подключил 2313, подал 5 в. Extreme Burner выдает Incorrect Chip Found. Соответственно ничего не прошить не считать нельзя. При замене тиньки то же самое.
    Кто нибудь сталкивался с подобным?
    Возможно это связано с помехами?

    «– Для более надежной работы в условиях повышенных помех очень желательно дополнить схему, подтягивающим к питанию ножку сброса, резистором (внутренний подтягивающий резистор имеет сопротивление около 10 кОм – этого бывает мало) и фильтрующим керамическим конденсатором на ножках питания (в пределах 0.1 мкФ);»

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


  5. GetChiper Автор записи

    Чего там отображать.
    Конденсатор ставится параллельно питанию (т.е. между ножками 10 и 20)
    Резистор 10 кОм ставится между Vcc и сбросом (т.е. между ножками 1 и 20)

  6. Andrey1979

    Спасибо за ответ. Поставил 4,7 КОм и 220пФ. Стало немного веселее. extreme burner пишет то же что и было. А вот khazama через раз сообщает The chip signature is 0x1e000. MISMATCH Expected signature for ATTiny 2313 is 1e 91 0a. В остальных случаях также пишет ошибку соединения.

    Использую беспаечную макетную плату, так что проблем с грязной пайкой быть не должно. Где еще можно поискать?


  7. GetChiper Автор записи

    220пФ маловато. Нужно 0.1 мкФ — керамический (не полярный) и 10-100 мкФ электролитический (полярный) поставить в параллель.

  8. Dederik

    добрый день))) я ненашел кварц 20,000 вместо него толька смог найти кварц 4,000. если я поставлю кварц 4,000 то у меня будет тормозит микро-р? и конденсаторы то же надо ли менять для кварца 4,000? я живу в самарканде с радио запчастями у нас проблема(((даже и незнаю где найти панельку под микрокон-р(((можна ли самому сделать панельку под микро-р?

  9. Dederik

    ответе хоть кто нибудь)))


  10. GetChiper Автор записи

    Спокойно — были выходные 🙂

    Кварц можно поставить любой если Вы планируете на этой платке учиться и делать свои устройства (конденсаторы под кварц менять не нужно). А можно вообще не ставить кварц — пользоваться встроенным RC-генератором.

    Насчет сделать панельку — может просто насмерть припаять МК в макетке?

  11. Dederik

    спасибо за помощь))) у меня еще один к вам вопрос, но не по теме не знаю где и задать(((сегодня ко мне принесли электронный счетчик на ремонт Holley DDS28. я там покопалься и нашел там микро-р Fudan FM24C02 которая отвечает за показания счетчика. в микро-ре храниться вся запись. не подскажете как сделать под него программатор чтоб можно было считывать и редактировать данные микро-ра??? и как к вам на прямую писать???


  12. GetChiper Автор записи

    FM24C02 — это последовательная энергонезависимая память (EEPROM)
    я думаю найдется много шнурков и программ для этого дела (если поисковик поспрашивать) — вот первое попавшееся http://www.msplata.ru/teleprog.html

  13. Dederik

    Спасибо за помощь:-)

  14. kosmogon

Широтно-Импульсная Модуляция (ШИМ, PWM). Урок AVR 8

Наверное, вы не раз задавались вопросом, как можно регулировать мощность потребителя, например управлять яркостью светодиода или регулировать обороты двигателя. Самый простой способ - последовательно нагрузке, например светодиоду, включить резистор, но ведь он будет греться и забирать драгоценную энергию, и чем мощней светодиод, тем сильней будет греться наш резистор, такой вариант не для нас. А что если светодиод очень быстро включать и выключать, при этом меняя длительность включений при константной частоте? Например, включать светодиод на 0,2 милисекунди каждую милисекунду, то светодиод засветится, но не на полную яркость. Аналогично с двигателем - включать движок на 30 секунд каждую минуту - тогда двигатель раскрутится, но не на полную скорость - относительно большой вес ротора сгладит рывки от включающегося двигателя, а сопротивление от трения будет его притормаживать. Таким образом, двигатель будет крутится на половину своей мощности.

Широтно-импульсная модуляция

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

Основной причиной внедрения ШИМ является сложность обеспечения произвольным напряжением. Есть какое-то базовое постоянное напряжение питания (сети, от аккумуляторов и пр.). И на его основе нужно получить более низкую и уже им питать электродвигатели или иное оборудование. Самый простой вариант - делитель напряжения, но он имеет пониженное КПД, повышенное выделением тепла и расходом энергии. Другой вариант - транзисторная схема. Она позволяет регулировать напряжение без использования механики. Основное преимущество ШИП - высокий КПД его усилителей мощности, который достигается за счет использования исключительно в ключевом режиме. Это значительно уменьшает выделение мощности на силовом преобразователе (СП).

ШИМ является импульсный сигнал постоянной частоты и переменной скважности, то есть отношения периода следования импульса к его длительности. С помощью задания скважности (длительности импульсов) можно менять среднее напряжение на выходе ШИМ . У цифровой технике, выходы которой могут принимать только одно из двух значений, приближение желаемого среднего уровня выхода с помощью ШИМ является совершенно естественным. Давайте на практике попробуем изменять яркость светодиода. Схема очень проста как в первом уроке:

Самое главное находится в прошивке:

void main(void)
{ PORTB=0x00; //Выставляем все выходы порта B на 0 DDRB=0xFF; //Делаем порт B как выход, чтобы мы могли менять лог уровень на ножках (устанавливать или 0 или 1) while (1) //Организовываем бесконечный цикл { PORTB.1=1; //Включаем светодиод на 1 выходе порта B delay_us(5); //разрешаем светодиоду посветится 5 микросекунд PORTB.1=0; //Выключаем светодиод на 1 выходе порта B delay_us(5); //Делаем задержку на 5 микросекунд }; }

Компилим и закидываем в мк, светодиод должен светится на половину яркости. Но вы, наверное, уже успели заметить, что наша программа только то и делает, что устанавливает лог-уровни на выводе мк. Чтобы освободить главный цикл от этой рутинной работы, мы воспользуемся таймером.

Апаратный ШИМ
Таймер может генерировать ШИМ в нескольких режимах:

Итак, для наших нужд (регулировка яркости светодиода) подходит режим Fast PWM . Запускаем CodeWizard AVR, переходим на вкладку timers->timer1, выставляем все, как показано на скриншоте

  • Clock Source - выбор источника тактирования таймера, выбираем System Clock - таймер тактируeтся частотой, на которой работает микроконтроллер
  • Clock Value - выбор частоты работы таймера, здесь мы установили 1000000 hz, это значит, что переменная TCNT1 будет переполнятся с частотой 1000000/255 = 3921 hz, частота ШИМ будет 3921 khz
  • out A (вывод А) определяет состояния ножки OC1A при совпадении счетного регистра и регистра сравнения
  • Comp. A значение регистра сравнения
Кликаем File->Generate and save.

#include void main(void) { // Port B initialization PORTB=0x00; DDRB=0x02; // Timer/Counter 1 initialization TCCR1A=0x81; TCCR1B=0x09; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x64;// число 100 в шестнадцатеричном виде OCR1BH=0x00; OCR1BL=0x00; while (1) { }; }

Компилим и закидаем в мк, теперь наш светодиод должен светиться примерно на половину яркости.

Давайте теперь попробуем что-нибудь пропищать с помощью таймера:
Схема подключения динамика к мк:

Таймер мы установим в режим Fast PWM и будем плавно менять частоту от 0 - 4 khz.
Код такой программы выглядит следующим образом:

#include #include void main(void) { // Port B initialization PORTB=0x00; DDRB=0x02; // Timer/Counter 1 initialization TCCR1A=0x40; TCCR1B=0x09; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x64; OCR1BH=0x00; OCR1BL=0x00; while (1) { OCR1AL++; // увеличиваем регистр сравнения на 1, чтобы изменилась частота delay_ms(100); }; }

Статьи по теме: