AVR.Начинающим

Подписаться на эту рубрику по RSS

Микроконтроллеры

Просмотров: 16180Комментарии: 0
Электроника. СхемотехникаAVR.Начинающим

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

Далее...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Библиотека графического LCD 128x64

Просмотров: 22295Комментарии: 4
Электроника. СхемотехникаAVR.Начинающим
Решил тут недавно поработать с экранчиком WG12864 и оформил результаты в виде небольшой библиотеки для WinAVR. Используя эту библиотеку можно рисовать точку, линию, прямоугольник, круг, символ и строку на экране (поддержка английских и русских символов), можно настроить, чтобы графика выводилась на белом фоне или на черном. Конечно, можно еще совершенствовать эту библиотеку, но это буду делать по мере использования дисплея.
Итак, эта библиотека подходит для ЖКИ с управляющим контроллером KS0108. Состоит из трех файлов - lcd12864.h, lcd12864.c, chars.h. Файл chars.h содержит коды символов, а файлы lcd12864.h и lcd12864.c и есть собственно библиотека для работы с дисплеем. Подключается аналогично библиотеке символьного ЖКИ - Подключение библиотеки символьного ЖКИ в WinAVR
Хотя, кратко и здесь опишу подключение:
  1. Создаем проект в WinAVR и копируем файлы библиотеки в папку с проектом.
  2. Добавляем в основном файле программы заголовочный файл lcd12864.h.
  3. В Makefile, в разделе SRC=$(TARGET).c добавляем через пробел файл lcd12864.c. Должно получиться так: SRC=$(TARGET).c lcd12864.c.
  4. Теперь можем работать с функциями дисплея.

Чтение и запись EEPROM в WinAVR. Продолжение

Просмотров: 19355Комментарии: 1
Электроника. СхемотехникаAVR.Начинающим

В предыдущей статье мы пробовали записывать и читать память EEPROM микроконтроллеров AVR используя функции WinAVR. Тогда мы работали с байтами и словами (тоже самое - char и int). А что если мы хотим записать long int, массив переменных (опять же  char, int, long int) или float? Давайте разберем все по порядку.

Чтение/запись dword (long int)
Итак, переменная типа long int (размер переменной в WinAVR - 4 байта). Для чтения и записи переменной этого типа в файле eeprom.h есть функции - eeprom_read_dword, eeprom_write_dword.

SFIOR - регистр специальных функций ввода вывода МК AVR

Просмотров: 13527Комментарии: 1
Электроника. СхемотехникаAVR.Начинающим
Когда описывал разную периферию обратил внимание, что биты регистра SFIOR описываются в разных местах даташита, а это может оказаться не очень удобным. Не так часто конечно он используется, я бы даже сказал редко, но все же решил сделать короткую заметку об этом регистре, может кому сгодится. Итак, SFIOR (special function input output regester) - регистр специальных функций ввода вывода. В этой заметке опишу регистр МК ATmega16 и в каком разделе даташита биты описываются. У него задействованы почти все биты регистра. У других микроконтроллеров функции битов будут те же самые, но некоторые биты могут не использоваться.

SFIOR