Как загрузить скетч в Atmega8A-PU с помощью USBasp
Сегодня я расскажу Вам как загрузить скетч в Atmega8A-PU с помощью программатора USBasp S51&AVR и среды разработки Arduino IDE. Это способ загрузки очень удобен и не требует много сил, а в итоге у нас получится минимальное arduino на микроконтроллере Atmega8A-PU. Для работы нам потребуется только программатор USBasp S51&AVR и микроконтроллер Atmega8A-PU который после прошивки будет работать на частоте 8 MHz. Более подробно смотрите на видео.
Для начала рассмотрим сам контроллер Atmega8A-PU.
Основные характеристики микроконтроллера Atmega8A-PU:
- Серия процессора: ATMEGA8x
- Тактовая частота максимальная: 16 МГц
- Разрядность АЦП: 10 бит
- Встроенный в чип АЦП: да
- Шина данных: 8 битШирина: 7.5 мм
- Размер ОЗУ: 1 Кб
- Размер ПЗУ данных: 512 B
- Размер памяти программ: 8 Кб
- Тип памяти программ: Flash
- Доступные аналоговые/цифровые каналы: 6
- Интерфейс: SPI, TWI, USART
- Количество линий ввода/вывода: 23
- Количество таймеров: 3
- Ядро: AVR
- RoHS: да
- Диапазон напряжения питания: 2.
7 В … 5.5 В
- Рабочий диапазон температрур: – 40 C … + 85 C
- Тип корпуса: PDIP-28
- Ширина: 7.5 мм
- Длина: 34.8 мм
- Высота: 4.57 мм
Где купить Atmega8A-PU
Заказать микроконтроллер Atmega8a-PU
Блок схема микроконтроллера Atmega8A-PU:
блок схема микроконтроллера Atmega8A
Arduino pinout (распиновка) микроконтроллера Atmega8A-PU:
Распиновка Atmega8A-PU
Если вы хотите узнать больше информации о контроллере Atmega8A-PU , скачайте даташит на Atmega8A
После небольшого знакомства с Atmega8A-PU я думаю можно приступить к настройке Arduino IDE и заливке скетча в наш контроллер.
Для начала установите Arduino IDE как указано в нашей статье Установка Arduino IDE на компьютер с ОС Windows и подключите программатор USBasp и установите драйвера как указано в статье Подключение программатора USBasp S51&AVR.
Теперь ищем в Windows папку установки Arduino IDE под названием arduino, полный путь к папке у меня C:\Program Files\Arduino\hardware\arduino но у Вас он может отличатся.
В этой папке мы ищем текстовый файл boards.txt и открываем его с помощью любого текстового редактора ( я использую Notepad++)
Текстовый файл boards.txt
После этого копируем текст
##############################################################
atmega8noxtalfast.name=ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate)
atmega8noxtalfast.upload.protocol=arduino
atmega8noxtalfast.upload.maximum_size=7168
atmega8noxtalfast.upload.speed=38400
atmega8noxtalfast.bootloader.low_fuses=0xe4
atmega8noxtalfast.bootloader.high_fuses=0xc2
atmega8noxtalfast.bootloader.path=atmega8a
atmega8noxtalfast.bootloader.file=ATmegaBOOT.hex
atmega8noxtalfast.bootloader.unlock_bits=0x3F
atmega8noxtalfast.bootloader.lock_bits=0x0F
atmega8noxtalfast.build.mcu=atmega8
atmega8noxtalfast.build.f_cpu=8000000L
atmega8noxtalfast.build.core=arduino:arduino
atmega8noxtalfast.build.variant=arduino:standard
##############################################################
atmega8optiboot.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | ##############################################################
atmega8noxtalfast.
atmega8noxtalfast.upload.protocol=arduino atmega8noxtalfast.upload.maximum_size=7168 atmega8noxtalfast.upload.speed=38400
atmega8noxtalfast.bootloader.low_fuses=0xe4 atmega8noxtalfast.bootloader.high_fuses=0xc2 atmega8noxtalfast.bootloader.path=atmega8a atmega8noxtalfast.bootloader.file=ATmegaBOOT.hex atmega8noxtalfast.bootloader.unlock_bits=0x3F atmega8noxtalfast.bootloader.lock_bits=0x0F
atmega8noxtalfast.build.mcu=atmega8 atmega8noxtalfast.build.f_cpu=8000000L atmega8noxtalfast.build.core=arduino:arduino atmega8noxtalfast.build.variant=arduino:standard
############################################################## atmega8optiboot.name=ATmega8(A) (16Mhz XTAL, optiboot)
atmega8optiboot.upload.protocol=arduino atmega8optiboot.upload.maximum_size=7680 atmega8optiboot.
atmega8optiboot.bootloader.low_fuses=0xBF atmega8optiboot.bootloader.high_fuses=0xCC atmega8optiboot.bootloader.path=optiboot atmega8optiboot.bootloader.file=optiboot_atmega8.hex atmega8optiboot.bootloader.unlock_bits=0x3F atmega8optiboot.bootloader.lock_bits=0x0F
atmega8optiboot.build.mcu=atmega8 atmega8optiboot.build.f_cpu=16000000L atmega8optiboot.build.core=arduino:arduino atmega8optiboot.build.variant=arduino:standard |
вставляем в конец нашего текстового файла boards.txt, сохраняем документ и перезапускаем Arduino IDE. В окне с доступными платами у нас должны появится две новые записи ( на фото обведено красным )
Наша Arduino IDE теперь успешно настроена для заливки скетчей в микроконтроллеры Atmega8A.
- Первый режим программирует наш контроллер для работы от встроенного кварца, частота работы 8 MHz
- Второй режим программирует наш контроллер для работы от внешнего кварца, частота работы 16 MHz (для работы подключаем кварц на 16 MHz к ножкам XTAL1 и XTAL2)
Теперь переходим к подключению нашего микроконтроллера к программатору.
Для удобства я сделал небольшую плату для прошивки микроконтроллеров Atmega8A и Attiny13a,
где можно просто вставить нужный контроллер подключить кабель и прошивать скетчи
Все смотрится примерно так
А для Вас рекомендую подключать USBasp программатор к Atmega8A-PU по схеме на картинке
Подключение USBasp к atmega8A-PU
Схема подключения контактов
- USBasp +5v к контроллеру VCC (pin7)
- USBasp – GND к контроллеру GND (pin8)
- USBasp – RST к контроллеру RST (pin1)
- USBasp – SCK к контроллеру SCK (pin19)
- USBasp – MISO к контроллеру MISO (pin18)
- USBasp – MOSI к контроллеру MOSI (pin17)
После подключения переходим снова к Arduino IDE в котором будем использовать режим программирования микроконтроллера без внешнего кварца ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate)
потом устанавливаем Serial Port, у меня как на фото
и выбираем программатор
после чего открываем из примеров скетч Blink, наводим курсор мышки на стрелочку для заливки скетча в плату ( на фото белая стрелка ) и жмем на клавиатуре Shift – у нас должна появится надпись Upload Using Programmer и жмем по стрелке для заливки скетча в наш контроллер Atmega 8A-Pu
если все нормально, то в нижней части окна появится уведомление об успешной загрузке скетча
После чего подключаем Анод (+) светодиода к 19 ноге, а минус к GND, подаем питание к нашему микроконтроллеру и светодиод должен моргать с интервалом в 1 секунду
Поздравляю теперь вы знаете как загрузить скетч в Atmega8A-PU
Всё о микроконтроллерах AVR
Микроконтроллер — микросхема, предназначенная для управления электронными устройствами.
AVR – это название популярного семейства микроконтроллеров, которое выпускает компания Atmel. Кроме АВР под этим брендом выпускаются микроконтроллеры и других архитектур, например, ARM и i8051.
Какими бывают AVR микроконтроллеры?
Существует три вида микроконтроллеров:
- AVR 8-bit.
- AVR 32-bit.
- AVR xMega
Самым популярным уже более десятка лет является именно 8-битное семейство микроконтроллеров. Многие радиолюбители начинали изучать микроконтроллеры с него. Почти все они познавали мир программируемых контроллеров делая свои простые поделки, вроде светодиодных мигалок, термометров, часов, а также простой автоматики, типа управления освещением и нагревательными приборами.
Микроконтроллеры AVR 8-bit в свою очередь делятся на два популярных семейства:
- Attiny – из названия видно, что младшее (tiny – юный, молодой, младший), в основном имеют от 8 пинов и более.
Объём их памяти и функционал обычно скромнее, чем в следующем;
- Atmega – более продвинутые микроконтроллеры, имеют большее количество памяти, выводов и различных функциональных узлов;
Самым мощным подсемейством микроконтроллеров является xMega – эти микроконтроллеры выпускаются в корпусах с огромным количеством пинов, от 44 до 100. Столько необходимо для проектов с большим количеством датчиков и исполнительных механизмов. Кроме того, увеличенный объем памяти и скорость работы позволяют получить высокое быстродействие.
Расшифровка: Пин (англ. pin – иголка, булавка) – это вывод микроконтроллера или как говорят в народе – ножка. Отсюда же слово «распиновка» — т.е. информация о назначении каждой из ножек.
Для чего нужны и на что способны микроконтроллеры?
Микроконтроллеры применяются почти везде! Практически каждое устройство в 21 веке работает на микроконтроллере: измерительные приборы, инструменты, бытовая техника, часы, игрушки, музыкальные шкатулки и открытки, а также многое другое; одно лишь перечисление займет несколько страниц текста.
Разработчик может использовать аналоговый сигнал подовая его на вход микроконтроллера и манипулировать с данными о его значении. Эту работу выполняет аналогово-цифровой преобразователь (АЦП). Данная функция позволяет общаться пользователю с микроконтроллером, а также воспринимать различные параметры окружающего мира с помощью датчиков.
В распространенных AVR-микроконтроллерах, например, Atmega328, который на 2017 году является сердцем многих плат Arduino, но о них позже. Используется 8 канальный АЦП, с разрядностью 10 бит. Это значит вы сможете считать значение с 8 аналоговых датчиков. А к цифровым выводам подключаются цифровые датчики, что может быть очевидным. Однако цифровой сигнал может являться только 1 (единицей) или 0 (нулем), в то время как аналоговый может принимать бесконечное множество значений.
Пояснение:
Разрядность – это величина, которая характеризует качество, точность и чувствительность аналогового входа. Звучит не совсем понятно. Немного практики: 10 битный АЦП, записать аналоговую информацию с порта в 10 битах памяти, иначе говоря плавно изменяющийся цифровой сигнал микроконтроллером распознается как числовое значение от 0 до 1024.
12 битный АЦП видит тот же сигнал, но с более высокой точностью – в виде от 0 до 4096, а это значит, что измеренные значения входного сигнала будут в 4 раза точнее. Чтобы понять откуда взялись 1024 и 4096, просто возведите 2 в степени равную разрядности АЦП (2 в степени 10, для 10 разрядного и т.д.)
Чтобы управлять мощностью нагрузки к вашему распоряжению есть ШИМ-каналы, их можно задействовать, например, для регулировки яркости, температуры, или оборотов двигателя. В том же 328 контроллере их 6.
В общем структура AVR микроконтроллера изображена на схеме:
Все узлы подписаны, но всё же некоторые названия могут быть не столь очевидными. Давайте рассмотрим их обозначения.
- АЛУ – арифметико-логическое устройство.
Нужно для выполнения вычислении.
- Регистры общего назначения (РОН) – регистры которые могут принимать данные и хранить их в то время пока микроконтроллер подключен к питанию, после перезагрузки стираются. Служат как временные ячейки для операций с данными.
- Прерывания – что-то вроде события которое возникает по внутренним или внешним воздействиям на микроконтроллер – переполнение таймера, внешнее прерывание с пина МК и т.д.
- JTAG – интерфейс для внутрисхемного программирования без снятия микроконтроллера с платы.
- Flash, ОЗУ, EEPROM – виды памяти – программ, временных рабочих данных, долгосрочного хранения независимая от подачи питания к микроконтроллеру соответственно порядку в названиях.
- Таймеры и счетчики – важнейшие узлы в микроконтроллере, в некоторых моделях их количество может быть до десятка. Нужны для того, чтобы отчитывать количество тактов, соответственно временные отрезки, а счетчики увеличивают свое значение по какому-либо из событий.
Их работа и её режим зависят от программы, однако выполняются эти действия аппаратно, т.е. параллельно основному тексту программы, могут вызвать прерывание (по переполнению таймера, как вариант) на любом этапе выполнения кода, на любой его строке.
- A/D (Analog/Digital) – АЦП, его назначение мы уже описали ранее.
- WatchDogTime (Сторожевой таймер) – независимый от микроконтроллера и даже его тактового генератора RC-генератор, который отсчитывает определенный промежуток времени и формирует сигнал сброса МК, если тот работал, и пробуждения – если тот был в режиме сна (энергосбережния). Его работу можно запретить, установив бит WDTE в 0.
Выходы микроконтроллера довольно слабые, имеется в виду то, что ток через них обычно до 20-40 миллиампер, чего хватит для розжига светодиода и LED-индикаторов. Для более мощной нагрузки – необходимы усилители тока или напряжения, например, те же транзисторы.
Что нужно чтобы начать изучение микроконтроллеров?
Для начала нужно приобрести сам микроконтроллер. В роли первого микроконтроллера может быть любой Attiny2313, Attiny85, Atmega328 и другие. Лучше выбирать ту модель, которая описана в уроках, по которым вы будете заниматься.
Следующее что Вам нужно – программатор. Он нужен для загрузки прошивки в память МК, самым дешевым и популярным считается USBASP.
Немногим дороже, но не менее распространенный программатор AVRISP MKII, который можно сделать своими руками – из обычной платы Arduino
Другой вариант – прошивать их через USB-UART переходник, который обычно делается на одном из преобразователей: FT232RL, Ch440, PL2303 и CP2102.
В некоторых случаях для такого преобразователя используют микроконтроллеры AVR с аппаратной поддержкой USB, таких моделей не слишком много. Вот некоторые:
- ATmega8U2;
- ATmega16U2;
- ATmega32U2.
Одно лишь «но» – в память микроконтроллера предварительно нужно загрузить UART бутлоадер. Разумеется, для этого все равно нужен программатор для AVR-микроконтроллеров.
Интересно: Bootloader – это обычная программа для микроконтроллера, только с необычной задачей – после его запуска (подключения к питания) он ожидает какое-то время, что в него могут загрузить прошивку. Преимуществом такого метода – можно прошить любым USB-UART переходником, а они очень дешевы. Недостаток – долго загружается прошивка.
Для работы UART (RS-232) интерфейса в микроконтроллерах AVR выделен целый регистр UDR (UART data register). UCSRA (настройки битов приемопередатчика RX, TX), UCSRB и UCSRС – набор регистров отвечающие за настройки интерфейса в целом.
В чем можно писать программы?
Кроме программатора для написания и загрузки программы нужно IDE – среда для разработки. Можно конечно же писать код в блокноте, пропускать через компиляторы и т.д. Зачем это нужно, когда есть отличные готовые варианты. Пожалуй, один из наиболее сильных – это IAR, однако он платный.
Официальным IDE от Atmel является AVR Studio, которая на 6 версии была переименована в Atmel studio. Она поддерживает все микроконтроллеры AVR (8, 32, xMega), автоматически определяет команды и помогает ввести, подсвечивает правильный синтаксис и многое другое. С её же помощью можно прошивать МК.
Наиболее распространённым является — C AVR, поэтому найдите самоучитель по нему, есть масса русскоязычных вариантов, а один из них — Хартов В.Я. «Микроконтроллеры AVR. Практикум для начинающих».
Самый простой способ изучить AVR
Купите или сделайте своими руками плату Arduino. Проект ардуино разработан специально для учебных целей. Он насчитывает десятки плат различных формами и количеством контактов. Самое главное в ардуино – это то что вы покупаете не просто микроконтроллера, а полноценную отладочную плату, распаянную на качественной текстолитовой печатной плате, покрытой маской и смонтированными SMD компонентами.
Самые распространенные – это Arduino Nano и Arduino UNO, они по сути своей идентичны, разве что «Нано» меньше примерно в 3 раза чем «Уно».
Несколько фактов:
- Ардуино может программироваться стандартным языком – «C AVR»;
- своим собственным – wiring;
- стандартная среда для разработки – Arduino IDE;
- для соединения с компьютером достаточно лишь подключить USB шнур к гнезду micro-USB на плате ардуино нано, установить драйвера (скорее всего это произойдет автоматически, кроме случаев, когда преобразователь на Ch440, у меня на Win 8.1 драйвера не стали, пришлось скачивать, но это не заняло много времени.) после чего можно заливать ваши «скетчи»;
- «Скетчи» – это название программ для ардуино.
Выводы
Микроконтроллеры станут отличным подспорьем в вашей радиолюбительской практике, что позволит вам открыть для себя мир цифровой электроники, конструировать свои измерительные приборы и средства бытовой автоматики.
Ранее ЭлектроВести писали, что в аэропорту «Борисполь» запустили первое электрозарядное устройство на два паркоместа. Об этом сообщил на своей странице в Facebook заместитель гендиректора аэропорта Георгий Зубко.
По материалам: electrik.info.
ATmega328 — ATmega328 — qaz.wiki
ATmega328P в узком двухрядном 28-выводном корпусе ( DIP- 28N) ATmega328P в тонком 32-контактном плоском корпусе с четырьмя выводами ( TQFP -32) Матрица ATmega328PATmega328 является одно- чип микроконтроллер , созданный Atmel в megaAVR семье (позже Microchip Technology приобрела Atmel в 2016 году). Он имеет модифицированное гарвардское ядро 8-битного процессора RISC .
Характеристики
8-разрядный микроконтроллер Atmel AVR на базе RISC сочетает в себе 32 КБ флэш- памяти ISP с возможностью чтения во время записи, 1 КБ EEPROM , 2 КБ SRAM , 23 линии ввода-вывода общего назначения, 32 рабочих регистра общего назначения , три гибких таймера / счетчики с режимами сравнения, внутренними и внешними прерываниями , последовательным программируемым USART , байтовым 2-проводным последовательным интерфейсом, последовательным портом SPI , 6-канальным 10-битным аналого — цифровым преобразователем (8 каналов в пакетах TQFP и QFN / MLF ) , программируемый сторожевой таймер с внутренним генератором и пять программно выбираемых режимов энергосбережения. Устройство работает в диапазоне 1,8-5,5 вольт. Пропускная способность устройства приближается к 1 MIPS на МГц.
Характеристики
Параметр | Стоимость |
---|---|
Тип процессора | 8-битный AVR |
Производительность | 20 MIPS при 20 МГц |
Флэш-память | 32 КБ |
SRAM | 2 КБ |
EEPROM | 1 КБ |
Количество контактов | 28 или 32 контакта: |
Максимальная рабочая частота | 20 МГц |
Количество сенсорных каналов | 16 |
Аппаратное получение QTouch | Нет |
Максимальное количество контактов ввода / вывода | 23 |
Внешние прерывания | 2 |
Интерфейс USB | Нет |
Скорость USB | — |
Семья
Распространенной альтернативой ATmega328 является ATmega328P «picoPower». Полный список всех остальных членов серии megaAVR можно найти на веб-сайте Atmel.
- ATmega328
- ATmega328P и ATmega328P-АВТОМОБИЛЬ
- ATmega328PB и ATmega328PB-AUTOMOTIVE (расширенный набор ATmega328P) — имеет больше периферийных устройств UART, I2C и SPI, чем ATmega328P
Приложения
По состоянию на 2013 год ATmega328 широко используется во многих проектах и автономных системах, где требуется простой, маломощный и недорогой микроконтроллер. Пожалуй, наиболее распространенная реализация этого чипа находится на популярной платформе разработки Arduino , а именно на моделях Arduino Uno и Arduino Nano .
Программирование
Распиновка ATmega 48A / PA / 88A / PA / 168A / PA / 328 / P в 28-PDIP ( datasheet )Аттестация надежности показывает, что прогнозируемая частота отказов при хранении данных намного меньше 1 PPM за 20 лет при 85 ° C или 100 лет при 25 ° C.
Сигнал программирования | Имя контакта | Ввод / вывод | Функция |
---|---|---|---|
RDY / BSY | PD1 | О | Высокий означает, что MCU готов к новой команде, в противном случае занят.![]() |
OE | PD2 | я | Разрешение выхода (активный низкий уровень) |
WR | PD3 | я | Импульс записи (активный низкий) |
BS1 | PD4 | я | Выбор байта 1 («0» = младший байт, «1» = старший байт) |
XA0 | PD5 | я | Бит действия XTAL 0 |
XA1 | PD6 | я | XTAL Action бит 1 |
PAGEL | PD7 | я | Программная память и загрузка страницы данных EEPROM |
BS2 | ПК2 | я | Выбор байта 2 («0» = младший байт, «1» = 2-й старший байт) |
ДАННЫЕ | ПК [1: 0]: PB [5: 0] | Ввод / вывод | Двунаправленная шина данных (вывод при низком уровне OE) |
В режим программирования входит, когда PAGEL (PD7), XA1 (PD6), XA0 (PD5), BS1 (PD4) установлен в ноль. Вывод RESET на 0 В и V CC на 0 В. V CC установлен на 4,5 — 5,5 В. Подождите 60 мкс, а для RESET установлено значение 11,5 — 12,5 В. Подождите более 310 мкс. Установите XA1: XA0: BS1: DATA = 100 1000 0000, импульс XTAL1 не менее 150 нс, импульс WR равным нулю. Начнется стирание чипа. Подождите, пока RDY / BSY (PD1) не перейдет в высокий уровень. XA1: XA0: BS1: DATA = 100 0001 0000, импульс XTAL1, импульс WR в ноль. Это команда записи Flash. И так далее..
Условное обозначение | Булавки | Ввод / вывод | Описание |
---|---|---|---|
MOSI | PB3 | я | Последовательные данные в |
MISO | PB4 | О | Последовательный выход данных |
SCK | PB5 | я | Последовательные часы |
Последовательные данные к MCU синхронизируются по переднему фронту, а данные от MCU синхронизируются по заднему фронту. Питание подается на V CC, в то время как RESET и SCK установлены на ноль. Подождите не менее 20 мс, а затем на вывод MOSI отправляется последовательная инструкция включения программирования 0xAC, 0x53, 0x00, 0x00. Второй байт (0x53) будет отражен MCU.
Смотрите также
Ссылки
внешние ссылки
- Официальные веб-страницы
ATMega16, конфигурация, характеристики и техническое описание
Конфигурация контактов ATMEGA16
ПИН. | ИМЯ ПИН | ОПИСАНИЕ | АЛЬТЕРНАТИВНАЯ ФУНКЦИЯ |
1 | PB0 (XCK / T0) | Контакт 0 порта PORTB | T0 (Вход внешнего счетчика Timer0) XCK (ввод / вывод внешних часов USART) |
2 | PB1 (T1) | Контакт 1 порта PORTB | T1 (Вход внешнего счетчика Timer1) |
3 | PB2 (INT2 / AIN0) | Контакт 2 порта PORTB | AIN0 (положительный вход внутреннего аналогового компаратора) INT2 (вход внешнего прерывания 2) |
4 | PB3 (OC0 / AIN1) | Контакт 3 PORTB | AIN1 (отрицательный вход внутреннего аналогового компаратора) OC0 (выход таймера 0, выход сравнения сравнения) или выход ШИМ |
5 | PB4 (нержавеющая сталь) | Контакт 4 порта PORTB | SS (вход выбора ведомого SPI). [Последовательный периферийный интерфейс (SPI) для программирования] |
6 | PB5 (MOSI) | Контакт 5 PORTB | MOSI (главный выход, подчиненный вход). Когда контроллер действует как ведомый, данные принимаются на этот вывод. [Последовательный периферийный интерфейс (SPI) для программирования] |
7 | PB6 (MISO) | Контакт 6 порта PORTB | MISO (главный вход подчиненный выход). Когда контроллер действует как подчиненный, данные отправляются мастеру через этот вывод. [Последовательный периферийный интерфейс (SPI) для программирования] |
8 | PB7 (SCK) | Контакт 7 порта PORTB | SCK (последовательные часы шины SPI). [Последовательный периферийный интерфейс (SPI) для программирования] |
9 | СБРОС | Пин сброса (активный низкий сброс) | |
10 | VCC | Подключен к + 5В | |
11 | GND | Подключено к ЗЕМЛЕ | |
12 | XTAL2 | подключен к кварцевому генератору | |
13 | XTAL1 | подключен к кварцевому генератору | |
14 | PD0 (RXD) | Контакт 0 PORTD | RXD (входной контакт USART) [Интерфейс последовательной связи USART может использоваться для программирования] |
15 | PD1 (TXD) | Контакт 1 PORTD | TXD (выходной контакт USART) [Интерфейс последовательной связи USART может использоваться для программирования] |
16 | PD2 (INT0) | Контакт 2 PORTD | Внешнее прерывание INT0 |
17 | PD3 (INT1) | Контакт 3 PORTD | Внешнее прерывание INT1 |
18 | PD4 (OC1B) | Контакт 4 PORTD | OC1B (выход таймера, выход сравнения сравнения) или выход ШИМ |
19 | PD5 (OC1A) | Контакт 5 PORTD | OC1A (выход таймера, выход сравнения сравнения) или выход ШИМ |
20 | ПД6 (ICP) | Контакт 6 порта PORTD | Таймер / счетчик1 Вход захвата сигнала |
21 | PD7 (OC2) | Контакт 7 PORTD | Выход таймера / счетчика2 Выход сравнения сравнения |
22 | PC0 (SCL) | Контакт 0 PORTC | Интерфейс TWI |
23 | PC1 (SDA) | Контакт 1 PORTC | Интерфейс TWI |
24 | PC2 (TCK) | Контакт 2 PORTC | Интерфейс JTAG |
25 | PC3 (TMS) | Контакт 3 PORTC | Интерфейс JTAG |
26 | PC4 (TDO) | Контакт 4 PORTC | Интерфейс JTAG |
27 | PC5 (TDI) | Контакт 5 PORTC | Интерфейс JTAG |
28 | PC6 (TOSC1) | Контакт 6 PORTC | Вывод осциллятора таймера 1 |
29 | PC7 (TOSC2) | Контакт 7 PORTC | Вывод 2 генератора таймера |
30 | AVcc | Vcc для внутреннего преобразователя АЦП | |
31 | GND | ЗЕМЛЯ | |
32 | AREF | Analog Reference Pin для АЦП | |
33 | PA7 (АЦП7) | Контакт 7 PORTA | АЦП (аналого-цифровой преобразователь), канал 7 |
34 | PA6 (ADC6) | Контакт 6 PORTA | АЦП (аналого-цифровой преобразователь), канал 6 |
35 | PA5 (АЦП5) | Контакт 5 PORTA | АЦП (аналого-цифровой преобразователь), канал 5 |
36 | PA4 (ADC4) | Контакт 4 PORTA | АЦП (аналого-цифровой преобразователь), канал 4 |
37 | PA3 (ADC3) | Контакт 3 PORTA | АЦП (аналого-цифровой преобразователь), канал 3 |
38 | PA2 (АЦП2) | Контакт 2 PORTA | АЦП (аналого-цифровой преобразователь), канал 2 |
39 | PA1 (АЦП1) | Контакт 1 PORTA | АЦП (аналого-цифровой преобразователь), канал 1 |
40 | PA0 (ADC0) | Контакт 0 PORTA | АЦП (аналого-цифровой преобразователь), канал 0 |
Характеристики ATMEGA16
ATMEGA16 — Упрощенные функции | |
CPU | 8-битный AVR |
Количество контактов | 40 |
Рабочее напряжение | Для ATMEGA16: +4. Для ATMEGA16L: от +2,7 до 5,5 В (+ 5,5 В является абсолютным максимумом) |
Количество контактов ввода / вывода | 32 |
Интерфейс связи | Интерфейс JTAG (24,25,26,27 PINS) [Может использоваться для программирования этого контроллера] Последовательный интерфейс SPI (5,6,7,8 PINS) [Может использоваться для программирования этого контроллера] Программируемый последовательный USART (14,15 PINS) [Может использоваться для программирования этого контроллера] Двухпроводной последовательный интерфейс (22,23 PINS) [Может использоваться для подключения периферийных устройств, таких как датчики и сервоприводы] |
Модуль АЦП | 8 каналов, разрешение 10 бит АЦП |
Модуль таймера | Два 8-битных счетчика, Один 16-битный счетчик [Всего три] |
Аналоговые компараторы | 1 |
Модуль ЦАП | Нет |
ШИМ каналов | 4 |
Внешний осциллятор | 0-8 МГц для ATMEGA16L 0-16 МГц для ATMEGA16 |
Внутренний осциллятор | Калиброванный внутренний генератор, 0–8 МГц |
Тип памяти программ | Вспышка |
Память программ | 16 Кбайт [10000 циклов записи / стирания] |
Частота процессора | 16 MIPS |
Байт ОЗУ | 1 Кбайт |
Данные EEPROM | 512 байт |
Сторожевой таймер | Есть |
Режимы энергосбережения | Шесть режимов [бездействие, шумоподавление АЦП, энергосбережение, отключение питания, режим ожидания и расширенный режим ожидания] |
Рабочая температура | от -55 ° C до + 125 ° C (+125 — абсолютный максимум, -55 — абсолютный минимум) |
Электрические характеристики ATMEGA16
- Максимальное напряжение на любом контакте, кроме RESET: -0.
От 5 В до (Vcc + 0,5) В
- Максимальное напряжение на выводе RESET: от -0,5 В до + 13,0 В
- Максимальный допустимый постоянный ток через любой контакт ввода / вывода: 40 мА
- Максимальный постоянный ток через контакты Vcc и GND: 200 мА
- Температура хранения: от -65ºC до + 150ºC
Замены ATMEGA16
ATMEGA32, ATMEGA8535
Альтернативы ATMEGA16
ATMEGA8, ATMEGA328p
Где использовать ATMEGA16
Микроконтроллер ATMEGA16 — один из самых популярных контроллеров серии AVR.Благодаря своим характеристикам и стоимости покупки он стал одним из любимых контроллеров как для любителей, так и для инженеров. Программирование ATMEGA16 похоже на любой другой контроллер AVR. В частности, это клон ATMEGA32, за исключением памяти. Хотя он имеет только половину памяти ATMEGA32, ее все же более чем достаточно для удовлетворения требований большинства EMBEDDED SYSTEMS .
ATMEGA16 также имеет спящий режим. Режимы можно запускать в желаемое время для экономии энергии.Имея на борту различные спящие режимы, ATMEGA16 может работать с МОБИЛЬНЫМИ ВСТРОЕННЫМИ СИСТЕМАМИ.
ATMEGA16 имеет 32 программируемых контакта ввода / вывода, с помощью которых ATMEGA16 может легко взаимодействовать со многими периферийными устройствами.
ATMEGA16 также имеет программируемый сторожевой таймер с отдельным встроенным генератором. С этим сторожевым таймером для сброса при ошибке контроллер может использоваться в приложениях, где вмешательство человека минимально.
Как использовать микроконтроллер ATMEGA16
Как упоминалось ранее, ATMEGA16 похож на любой другой микроконтроллер и, в частности, на ATMEGA32.По сути, он может выполнять любую функцию, которую выполняет ATMEGA32. Подобно им, это не цифровые ИС Plug and Play. Для работы ATMEGA16 сначала необходимо сохранить шестнадцатеричный код программы в ATMEGA16 FLASH MEMORY . После выполнения этого кода ATMEGA16 создает желаемый ответ.
Весь процесс использования ATMEGA16 выглядит следующим образом:
- Перечислите функции, которые должны выполняться ATMEGA16, в документе.
- Следующая загрузка приложения для разработки программ (IDE) для контроллеров AVR
(Обычно Atmel Studio 6.2 для Windows7,
Atmel Studio 7 для Windows10 [http://www.microchip.com/avr-support/avr-and-sam-downloads-archive])
- Напишите функции на языке «C» в IDE.
- После написания программы скомпилируйте ее в IDE. Это исключает ошибки.
- Сделать приложение IDE для создания файла HEX для написанной программы после компиляции.
- Выберите устройство программирования (обычно программатор SPI, предназначенный для контроллеров AVR), который устанавливает связь между вашим персональным компьютером и ATMEGA16.
- Запустите программное обеспечение для записи файлов HEX, предоставленное для выбранного устройства программирования.
- Выберите соответствующий HEX файл программы в программном обеспечении программатора.
- Запишите HEX-файл (который содержит программу в виде HEX-кода) во флэш-память ATMEGA16 с помощью этой программы.
Отключите программатор, подключите соответствующие периферийные устройства для контроллера и включите систему. С помощью этого ATMEGA16 выполняет программу и выдает ответ, записанный в сохраненной программе.
Приложения
Существует множество приложений для микроконтроллеров ATMEGA16.
- Заявки для любителей
- Инженерное проектирование
- Системы контроля температуры
- Измерение аналоговых сигналов и манипуляции с ними.
- Встроенные системы, такие как кофеварка, торговый автомат.
- Системы управления двигателями.
- Цифровая обработка сигналов.
- Система периферийного интерфейса.
2D Модель
6/24 стр. 6 ATmega16 (L) 2466NS – AVR – 10/06 Сводка регистров Адрес Имя Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0 Страница $ 3F (5F $) SREG I T H S V N Z C 7 3E (5E) SPH — — — — — SP10 SP9 SP8 10 $ 3D (5D) SPL SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 10 $ 3C ($ 5C) OCR0 Таймер / счетчик0 Регистр сравнения выходов 83 3 млрд долларов (5 млрд долларов) GI CR INT1 INT0 INT2 — — — IVSEL IVCE 46, 67 $ 3A ($ 5A) GIFR INTF1 INTF0 INTF2 — — — — –68 39 долларов (59 долларов) TIMSK OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE1B TOIE1 83, 114, 132 38 долларов (58 долларов) TIFR OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0 84, 115, 132 900 $ 57) SPMCR SPMIE RWWSB — RWWSRE BLBSET PGWRT PGERS SPMEN 250 36 долларов (56 долларов США). TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN — TWIE 178 $ 35 (55 долларов США) MCUCR SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00 30, 66 $ 34 (54 доллара США) MCUCSR JTD ISC2 — JTRF WDRF EXTRF BORF BORF PORF 39, 67, 229 33 доллара (53 доллара) TCCR0 FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 320010 CS0081 долларов США ) TCNT0 Таймер / счетчик0 (8 бит) 83 31 доллар (1) (51 доллар) (1) OSCCAL Регистр калибровки осциллятора 900 10 28OCDR Встроенный регистр отладки 225 30 долларов (50 долларов США) SFIOR ADTS2 ADTS1 ADTS0 — ACME PUD PSR2 PSR10 55,86,133,199,219 2 франка (4 франка) |
% PDF-1. 4
%
174 0 объект
>
endobj
xref
174 89
0000000016 00000 н.
0000002149 00000 н.
0000002368 00000 н.
0000002520 00000 н.
0000002551 00000 н.
0000002608 00000 п.
0000003327 00000 н.
0000003561 00000 н.
0000003628 00000 н.
0000003720 00000 н.
0000003880 00000 н.
0000004027 00000 н.
0000004160 00000 н.
0000004293 00000 н.
0000004442 00000 н.
0000004590 00000 н.
0000004752 00000 н.
0000004857 00000 н.
0000004960 00000 н.
0000005079 00000 н.
0000005167 00000 н.
0000005255 00000 н.
0000005358 00000 п.
0000005480 00000 н.
0000005595 00000 н.
0000005713 00000 н.
0000005862 00000 н.
0000005972 00000 н.
0000006069 00000 н.
0000006212 00000 н.
0000006299 00000 н.
0000006387 00000 п.
0000006491 00000 н.
0000006596 00000 н.
0000006700 00000 н.
0000006804 00000 н.
0000006920 00000 н.
0000007036 00000 н.
0000007152 00000 н.
0000007269 00000 н.
0000007371 00000 п.
0000007489 00000 н.
0000007584 00000 н.
0000007678 00000 н.
0000007771 00000 н.
0000007864 00000 н.
0000007957 00000 н.
0000008051 00000 н.
0000008145 00000 н.
0000008239 00000 п.
0000008333 00000 п.
0000008427 00000 н.
0000008521 00000 н.
0000008615 00000 н.
0000008709 00000 н.
0000008803 00000 н.
0000008897 00000 н.
0000008991 00000 п.
0000009085 00000 н.
0000009179 00000 н.
0000009273 00000 н.
0000009485 00000 н.
0000009526 00000 н.
0000009548 00000 н.
0000010457 00000 п.
0000010479 00000 п.
0000010589 00000 п.
0000010694 00000 п.
0000011637 00000 п.
0000011660 00000 п.
0000012923 00000 п.
0000012946 00000 п.
0000014216 00000 п.
0000014239 00000 п.
0000015548 00000 п.
0000015571 00000 п.
0000015684 00000 п.
0000015815 00000 п.
0000016141 00000 п.
0000017331 00000 п.
0000017354 00000 п.
0000018643 00000 п.
0000018665 00000 п.
0000018743 00000 п.
0000021422 00000 п.
0000021501 00000 п.
0000022418 00000 п.
0000002649 00000 н.
0000003305 00000 н.
трейлер
]
>>
startxref
0
%% EOF
175 0 объект
>
endobj
176 0 объект
`Dz — # _ m_} g)
/ U (Y {Wdz !)
/ П-12
/ V 1
/ Длина 40
>>
endobj
177 0 объект
[
178 0 руб.
wA [TPMCu]% 6kzɽ, ҜIg] 鯒 qgc) dKUW (@ * `wpAL _ * r29FKBWV’E
aO «ݢ KĜF
Введение в Atmega16 — инженерные проекты
Привет, ребята! Надеюсь у тебя все хорошо.Микроконтроллеры играют важную роль в разработке встраиваемых систем. Они используются там, где автоматизация является неотъемлемой частью системы. Сегодня я собираюсь раскрыть подробности о Introduction to Atmega16. Это 40-контактный 8-разрядный микроконтроллер с низким энергопотреблением, разработанный с использованием технологии CMOS и основанный на архитектуре AVR. Это наиболее часто используемый микроконтроллер AVR, который принадлежит к семейству Atmel Mega. Вы должны взглянуть на микроконтроллер под названием Atmega328, который также принадлежит к семейству Mega.Другие микроконтроллеры, которые легко доступны и подпадают под категорию AVR, — это Atmega 8 и Atmega 32. Все эти контроллеры выполняют схожие задачи, однако они отличаются только объемом памяти и стоимостью. Я расскажу обо всем, что связано с этим.![](/800/600/https/avrhelp.mcselec.com/atmega8u2_16u2_32u2.png)
Введение в Atmega16
- Atmega16 — это 40-контактный микроконтроллер малой мощности, разработанный с использованием технологии CMOS.
- CMOS — это передовая технология, которая в основном используется для разработки интегральных схем. Он отличается низким энергопотреблением и высокой помехоустойчивостью.
- Atmega16 — это 8-битный контроллер, основанный на архитектуре RISC (вычисление с сокращенным набором команд) AVR. AVR — это семейство микроконтроллеров, разработанных Atmel в 1996 году.
- Это однокристальный компьютер, который поставляется с ЦП, ПЗУ, ОЗУ, EEPROM, таймерами, счетчиками, АЦП и четырьмя 8-битными портами, называемыми PORTA, PORTB, PORTC, PORTD, где каждый порт состоит из 8 контактов ввода / вывода.
- Atmega16 имеет встроенные регистры, которые используются для установления связи между процессором и внешними периферийными устройствами.
CPU не имеет прямого соединения с внешними устройствами. Он может принимать входные данные путем чтения регистров и выдавать выходные данные путем записи регистров.
- Atmega16 поставляется с двумя 8-битными таймерами и одним 16-битным таймером. Все эти таймеры могут использоваться в качестве счетчиков, если они оптимизированы для подсчета внешнего сигнала.
- Большинство необходимых периферийных устройств, необходимых для выполнения автоматических функций, встроены в это устройство, например АЦП (аналого-цифровой преобразователь), аналоговый компаратор, USART, SPI, что делает его экономичным по сравнению с микропроцессором, для работы которого требуется внешнее периферийное оборудование. различные функции.
- Atmega16 поставляется с 1 КБ статической ОЗУ, которая является энергозависимой памятью, т.е. хранит информацию в течение короткого периода времени и сильно зависит от постоянного источника питания. В то время как 16 КБ флеш-памяти, также известной как ПЗУ, также встроены в устройство, которое является энергонезависимым по своей природе и может хранить информацию в течение длительного периода времени и не теряет никакой информации при отключении источника питания.
- Atmega16 работает на максимальной частоте 16 МГц, где инструкции выполняются за один машинный цикл.
Архитектура Atmega16
На следующем рисунке показана архитектура Atmega16, основанная на Гарвардской архитектуре и имеющая отдельные шины и память. Инструкции хранятся в памяти программы.1. CPU
CPU подобен мозгу контроллера, который помогает выполнять ряд инструкций. Он может обрабатывать прерывания, выполнять вычисления и управлять периферийными устройствами с помощью регистров. Atmega16 поставляется с двумя шинами, которые называются шиной инструкций и шиной данных.ЦП читает инструкции в шине команд, в то время как шина данных используется для чтения или записи соответствующих данных. ЦП в основном состоит из счетчика программ, регистров общего назначения, указателя стека, регистра команд и декодера команд.2. ROM
Программа контроллера хранится в ROM, также известном как энергонезависимая программируемая флэш-память. Флэш-память имеет разрешение не менее 10 000 циклов записи / стирания.![](/800/600/https/fr.hobbytronics.co.uk/image/cache/data/arduino/1284/arduino-1284-unopro-pinout-500x500.jpg)
3. RAM
SRAM (статическая память с произвольным доступом) используется для временного хранения информации и имеет 8-битные регистры. Это похоже на обычную оперативную память компьютера, которая используется для передачи данных во время выполнения.4. EEPROM
EEPROM (Электронно стираемое постоянное запоминающее устройство) — это энергонезависимая память, используемая как долговременное хранилище.Он не участвует в выполнении основной программы. Он используется для хранения конфигурации системы и параметров устройства, которые продолжают работать при сбросе процессора приложений. EEPROM поставляется с ограниченным циклом записи до 100000, в то время как циклы чтения неограничены. При использовании EEPROM напишите минимум инструкций в соответствии с требованиями, чтобы вы могли использовать эту память в течение более длительного времени.![](/800/600/http/www.avrgeeks.com/wp-content/uploads/2017/09/LCDOperation.png)
5. Прерывание
Прерывание используется в аварийной ситуации, которая приостанавливает выполнение основной функции и выполняет необходимые инструкции в это время.После вызова и выполнения прерывания код переключается обратно на основную программу.6. Модули аналогового и цифрового ввода / вывода
Модули цифрового ввода / вывода используются для установки цифровой связи между контроллером и внешними устройствами. В то время как аналоговые модули ввода / вывода используются для передачи аналоговой информации. Аналоговые компараторы и АЦП относятся к категории аналоговых модулей ввода / вывода.7. Таймер / счетчик
Таймеры используются для расчета внутреннего сигнала в контроллере. Atmega16 поставляется с двумя 8-битными таймерами и одним 16-битным таймером.Все эти таймеры работают как счетчики, когда они оптимизированы для внешних сигналов.8. Сторожевой таймер
Сторожевой таймер — замечательное дополнение к этому контроллеру, которое используется для генерации прерывания и сброса таймера. Он поставляется с отдельным источником CLK 128 кГц.9. Последовательная связь
Atmega16 поставляется с модулями USART и SPI, которые используются для развития последовательной связи с внешними устройствами.Распиновка Atmega16
На следующем рисунке показана схема выводов микроконтроллера AVR Atmega16.- Atmega16 предпочтительнее других микроконтроллеров, таких как Atmel 8051, потому что он обладает гораздо более быстрой способностью выполнять инструкции и состоит из модифицированного процессора RISC.
- Имеет встроенную флеш-память с функциями загрузчика. Он имеет встроенный 10-битный АЦП, SPI, PWM и EEPROM.
Описание контактов Atmega16
Atmega16 поставляется с 40 контактами, каждый из которых используется для выполнения определенной задачи. Всего имеется 32 контакта ввода / вывода и четыре порта. Каждый порт состоит из 8 контактов ввода / вывода.- PORTA = 8 контактов (контакты 33-40)
- PORTB = 8 контактов (контакты 1-8)
- PORTC = 8 контактов (контакты 22-29)
- PORTD = 8 контактов (контакты 14-21)
Применения Контроллеры
AVR имеют широкий спектр приложений, где требуется автоматизация. Ниже приведены основные приложения Atmega16.- Медицинское оборудование
- Домашняя автоматизация
- Встроенные системы
- Arduino Projects
- Используется в автомобилях и промышленной автоматизации
- Бытовая техника и системы безопасности
- Устройства контроля температуры и давления
, соединенный с микроконтроллером AVR Atmega16
Сервомоторышироко используются там, где требуется точное управление, например, роботы, автоматизированные машины, роботизированный манипулятор и т. Д. Однако объем серводвигателя не ограничен этим и может использоваться в много приложений. Чтобы узнать больше об основах, теории и принципе работы серводвигателя, перейдите по ссылке.
Мы ранее сопрягали серводвигатель со многими микроконтроллерами:
В этом руководстве мы будем взаимодействовать между микросервомотором и микроконтроллером AVR Atmega16 с помощью Atmel Studio 7.0. Серводвигатель рассчитан на работу при 4,8-6 В. Мы можем контролировать его угол поворота и направление, применяя последовательность импульсов или сигналы ШИМ. Обратите внимание, что серводвигатели не могут вращаться на 360 градусов, поэтому они используются там, где непрерывное вращение не требуется. Угол поворота составляет 0–180 градусов или (-90) — (+90) градусов.
Необходимые компоненты
- Микро-серводвигатель SG90 Tower Pro
- Микроконтроллер Atmega16 IC
- Кварцевый генератор 16 МГц
- Два конденсатора по 100 нФ
- Два конденсатора 22 пФ
- Кнопка
- Провода перемычки
- Макет
- USBASP версии 2.0
- Светодиод (любой цвет)
Описание контактов серводвигателя
- Красный = положительный источник питания (4.От 8 В до 6 В)
- Коричневый = Земля
- Оранжевый = управляющий сигнал (вывод ШИМ)
Принципиальная схема
Подключите все компоненты, как показано на схеме ниже, чтобы повернуть серводвигатель, используя микроконтроллер AVR . Имеется четыре вывода PWM, мы можем использовать любой вывод PWM Atmega16. В этом руководстве мы используем контакт PD5 (OC1A) для генерации ШИМ. PD5 напрямую подключен к оранжевому проводу серводвигателя, который является контактом входного сигнала.Подключите любой цветной светодиод для индикатора питания. Кроме того, подключите одну кнопку к контакту сброса для сброса Atmega16, когда это необходимо. Подключите Atmega16 к правильной схеме кварцевого генератора. Вся система будет питаться от источника питания 5 В.
Полная установка будет выглядеть следующим образом:
Управляющий серводвигатель с АРН ATmega16
Как и шаговый двигатель, серводвигатель не требует внешнего драйвера e.г. Драйвер двигателя ULN2003 или L293D. Просто ШИМ достаточно для управления серводвигателем, а сгенерировать ШИМ с микроконтроллера очень легко. Крутящий момент этого серводвигателя составляет 2,5 кг / см, поэтому, если вам требуется больший крутящий момент, этот сервопривод не подходит.
Как мы знаем, серводвигатель ищет импульс каждые 20 мсек, и длина положительного импульса будет определять угол поворота серводвигателя.
Частота, необходимая для получения импульса 20 мс, составляет 50 Гц (f = 1 / T).Итак, для этого серводвигателя, в спецификации указано, что для 0 градусов нам нужно 0,388 мс, для 90 градусов нам нужно 1,264 мс, а для 180 градусов нам нужен импульс 2,14 мс.
Для генерации указанных импульсов мы будем использовать Timer1 Atmega16. Частота процессора составляет 16 МГц, но мы будем использовать только 1 МГц, поскольку у нас не так много периферийных устройств, подключенных к микроконтроллеру, и нет большой нагрузки на микроконтроллер, поэтому 1 МГц подойдет. Предделитель установлен на 1. Таким образом, часы делятся как 1 МГц / 1 = 1 МГц (1 мкс), что отлично. Таймер 1 будет использоваться в качестве режима быстрой ШИМ, т.е. режима 14. Вы можете использовать различные режимы таймеров для генерации желаемой последовательности импульсов. Ссылка дана ниже, а более подробное описание можно найти в официальном листе данных Atmega16.
Отдо используйте Timer1 в качестве быстрого режима PWM , нам понадобится значение TOP ICR1 (Input Capture Register1). Чтобы найти ТОП-значение, используйте приведенную ниже формулу:
f pwm = f cpu / n x (1 + TOP)
Это можно упростить до,
TOP = ( f cpu / ( f pwm x n)) - 1
Где, N = значение набора предделителя
f cpu = частота процессора
f pwm = Ширина импульса серводвигателя 50 Гц
Теперь вычислите значение ICR1, поскольку у нас есть все необходимые значения,
N = 1, f cpu = 1MHz, f pwm = 50Hz
Просто введите значения в формулу выше, и мы получим
ICR1 = 1999
Это означает достижение максимальной степени i.е. 180 0 ICR1 должен быть 1999.
Для кристалла 16 МГц и предделителя, установленного на 16, у нас будет
ICR1 = 4999
Теперь перейдем к обсуждению эскиза.
Программирование Atmega16 с использованием USBasp
Полный код АРН для управления серводвигателем приведен ниже. Код прост и понятен.
Здесь мы закодировали Atmega16, чтобы вращать серводвигатель с 0 0 на 180 0 и снова возвращаться с 180 0 на 0 0 .Этот переход будет завершен за 9 шагов, то есть 0-45-90-135-180-135-90-45-0. Для задержки мы будем использовать внутреннюю библиотеку Atmel Studio, то есть
Подключите USBASP v2.0 и следуйте инструкциям по этой ссылке, чтобы запустить микроконтроллер Atmega16 AVR с помощью USBASP и Atmel Studio 7.0 . Просто создайте эскиз и загрузите его с помощью внешнего инструментария.