AVR

Бинарные часы на DS1302 и микроконтроллере ATmega8

Просмотров: 16412Комментарии: 11
Микроконтроллеры AVRЭлектроника. Схемотехника
Понравилась мне идея бинарных часов и решил сделать проект себе на будущее. Сразу решил, что отображаться и устанавливаться будут только минуты и часы. Так как эти часы буду делать только на показ или на подарок. Не буду углубляться в подробности, программа довольно простая. Приведу схему и краткие характеристики заложенные в эти часы. На схеме не ставил ограничительные резисторы на светодиоды. Понятное дело, что если собирать эти часы в железе, то нужно перед каждым светодиодом поставить ограничивающий резистор где-то на 200 Ом. В конце статьи можно скачать проект в Протеусе и программу на WinAVR.
Схема

Спящий режим микроконтроллеров AVR

Просмотров: 25971Комментарии: 4
AVR.НачинающимЭлектроника. Схемотехника
Спящий режим и управление питанием микроконтроллеров AVR может оказаться очень полезным, если микроконтроллер какое-то время ничего не делает, а просто тикает и ожидает какого-нибудь события. А также, для выключения не используемой периферии МК в целях экономии ресурсов батареи питания. Для перевода МК в режим сна в WinAVR нужно установить нужные биты регистра управления микроконтроллером и  воспользоваться инструкцией SLEEP таким образом
asm("sleep");
Вообще у разных микроконтроллеров биты управления режимами энергосбережения могут быть разбросаны по разным регистрам. А также количество режимов может изменяться от 2 до 6 у разных моделей МК. Чтобы посмотреть регистры конкретного микроконтроллера загляните в даташит в раздел "Power management and sleep modes". В данной статье мы рассмотрим МК mega8.
Рассмотрим регистр управления режимами питания микроконтроллера.
MCUCR

Подключение внешнего АЦП по SPI к микроконтроллеру AVR

Просмотров: 29131Комментарии: 3
Микроконтроллеры AVRЭлектроника. Схемотехника
Понадобилось мне тут недавно подключить к МК внешнее АЦП на 12 бит по SPI. И в этой статье решил рассказать, что из этого получилось. В первую очередь, хотелось чтобы это АЦП можно было подключить к МК в Протеусе и получить результат там. Покапавшись по интернету и посмотрев цены, остановился на 12-и битном одноканальном АЦП фирмы Microchip MCP3201. Самого MCP3201 в Протеусе нет, но есть 10-и битный MCP3001. Отличается он от MCP3201 лишь тем, что он 10-ти битный и поэтому есть небольшое отличие в обработке уже полученных данных, а получать с него данные также как с 12-и битного. Но обо всем по порядку.
Основные характеристики MCP3201
  • 12 бит
  • Интерфейс SPI
  • Диапазон напряжения питания: 2.7-5.5 В
  • Низкое энергопотребление
  • 100ksps при питании 5В
  • 50ksps при питании 2.7В
Далее...

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

Просмотров: 64003Комментарии: 1
AVR.НачинающимЭлектроника. Схемотехника
При рассмотрении работы таймера/счетчика 1 (см. Таймер счетчик МК AVR) пропустил описание ШИМа, но, думаю, статья о ТС1 будет не полной без описания режима ШИМ. Наиболее часто, наверное, в интернете можно встретить применение ШИМ для регулировки яркости светодиодов и скорости оборотов двигателя. Как же это работает? А очень просто, мы регулируем скважность импульсов и тем самым изменяем эквивалентное напряжение. Скважность это отношение длительности периода к длительности импульса. Чтобы получить из цифрового сигнала постоянный аналоговый можно воспользоваться интегрирующей RC цепочкой.

Спидометр (тахометр) на микроконтроллере AVR. WinAVR (Часть1)

Просмотров: 30949Комментарии: 0
AVR.НачинающимЭлектроника. Схемотехника
Обещался переделать спидометр под WinAVR, поэтому давайте начнем. Заодно эта статья будет примером работы с таймером в режиме захвата (настройку этого режима смотрите в Таймеры счетчики микроконтроллеров AVR). Здесь приведу пример программы, которая будет выводить на экран скорость движения (м/с) и пройденное расстояние (м). Итак, подключаем символьный дисплей к порту D, а на вход ICP будем подавать сигнал с нашего датчика. В Протеусе заменим этот датчик на генератор импульсов. Принцип измерения состоит в том чтобы посчитать время между импульсами на входе ICP микроконтроллера. И зная расстояние пройденное между импульсами сможем посчитать скорость. Приведу здесь полный код программы, так как она совсем небольшая, а в конце можно будет скачать проект в WinAVR. Здесь настроил таймер/счетчик так, чтобы он досчитывал до 16000 за 1с, т.е. максимальное время между импульсами будет равно 4с. Если за это время не придет импульс на ножку ICP, таймер/счетчик обнулится и начнет счет заново. Таким образом, зная до скольки счетчик досчитает за одну секунду мы можем посчитать время между импульсами, для этого разделим значение счетчика за 1с на значение счетчика между импульсами. Пройденное расстояние узнаем откалибровав наш прибор. 
Далее...

Заметка о велосипедном спидометре.

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

Кнопки.
В первую очередь сварганил быстренько платку с кнопками, чтобы можно было по менюшке поклацать и проверить все настройки. Получилось примерно такое

Генератор пилообразного напряжения. Пример.

Обещался как-то привести пример на компаратор AVR, покапался по своему архиву и нашел генератор пилообразного напряжения. Вообще для реализации в железе этот генератор не из удачных, хотя если его доработать, то получится вполне приличный генератор. В свое время он был заброшен и, в итоге, так и остался в сыром виде. Но эта схема мне понравилась тем, что она хорошо подходит в качестве примера для работы с АЦП, Аналоговым Компаратором, SPI и внешними прерываниями в МК AVR . Вся эта периферия работает здесь самым простым образом, но при этом  связана друг с другом. Программу и пример в Proteus'e можно скачать в конце статьи, поэтому не буду приводить здесь куски этой программы, а приведу только схему и кратко опишу как это все реализовано и для чего используется в схеме. Но начну с того, что опишу какие возможности закладывались в этот генератор.
  1. Непрерывная генерация.
  2. Генерация пачек импульсов. Запуск пачки по синхроимпульсу.
  3. Регулировка частоты выходного сигнала (напряжение 0..5В).
  4. Регулировка длины пачки импульсов (напряжение 0..5В).
Далее...

Интерфейс SPI микроконтроллеров AVR

Просмотров: 57808Комментарии: 5
AVR.НачинающимЭлектроника. Схемотехника
Интерфейс SPI (Serial Peripheral Bus) - интерфейс для обмена данными между микросхемами. Придуман компанией Motorola, но в настоящее время используется в продукции многих производителей. Шина SPI организована как "ведущий-подчиненный". В качестве ведущего чаще всего выступает микроконтроллер. Внешние устройства подключенные к ведущему являются подчиненными (ведомыми). Если соединить два микроконтроллера по шине SPI, то они могут по очереди становится ведущим или ведомым. Главное, что в конкретный момент времени на шине SPI только одно устройство может быть ведущим. Рассмотрим на примере mega8 какие ножки в МК связаны с шиной SPI и что они означают

Побитовые операции и их применение в WinAVR

Просмотров: 28757Комментарии: 3
AVR.НачинающимЭлектроника. Схемотехника
Битовые операции применяются повсеместно при программировании микроконтроллеров. Мы ими пользуемся при работе с регистрами МК, при работе с переменными программы и др. Вот и решил описать их и объяснить применение на каких-нибудь простых примерах. Буду по порядку описывать побитовые операции и сразу приводить примеры.

Операция НЕ (Побитовое отрицание)
Эта операция изменяет значение бита на противоположное. 
Если применить эту операцию к байту, то результатом будет байт с измененными на противоположные битами. В WinAVR операция НЕ обозначается "~" и ставится перед числом к которому она применяется. Например:
unsigned char res=~(0b00110011);
После этого значение переменной res=0b11001100

EEPROM в микроконтроллерах AVR

Просмотров: 19085Комментарии: 0
AVR.НачинающимЭлектроника. Схемотехника
Почти во всех микроконтроллерах AVR есть память EEPROM (Electrically Erasable Programmable Read-Only Memory) - электрически стираемая программируемая постоянно запоминающая память. Память EEPROM сохраняет свое содержимое при отсутствии питания. Это бывает нужно, если мы хотим восстановить какие-то данные после перезагрузки микроконтроллера. Эта память находится в отдельном логическом и физическом пространстве. Как и для работы с другой периферией МК, для работы с EEPROM используются несколько регистров. Рассмотрим их.

EEAR - регистр адреса EEPROM. Если память превышает 256 байт, тогда для адресации используются два регистра - EEARH и EEARL (старший и младший байт регистра адреса). Чтобы записать  или считать данные нужно записать в эти регистры адрес ячейки памяти в которую мы хотим записать или с которой хотим считать байт данных.

EEDR - регистр данных, хранит данные, которые будут записаны в EEPROM или прочитаны оттуда.

EECR - регистр управления EEPROM