Память программ микроконтроллеров AVR, помимо своего прямого предназначения может быть использована для хранения константных данных. Для этого в AVR ассемблере есть специальные директивы .db и .dw. Первая определяет константный байт или несколько байтов, вторая константное слово или несколько слов. (слово - это 2 байта). Для того чтобы указать, что заданные константы расположены во flash памяти микроконтроллера,  используется директива .cseg 

   Все микроконтроллеры AVR семейства MEGA имеют в своем составе модуль UART/USART. Он позволяет связывать микроконтроллер и компьютер по интерфейсу RS-232. Для этого необходим компьютер с COM портом, преобразователь уровней, ну и соответствующий микроконтроллер. Проблема в том, что современные компьютеры перестают оснащать COM портами, потому что на смену им приходит (или уже пришла) USB. На наше счастье ряд фирм выпускает специализированные микросхемы преобразующие USB в  RS232 без всякой головной боли. Им требуется минимальная "обвязка" внешних компонентов, и для них доступны готовые драйвера. Одна из таких микросхем - FT232BM фирмы FTDI.  Чтобы вы не тратили свое время на изучение документации, рисование схемы и разводку платы, предлагаю вам готовое решение на ее основе.

   Таймеры/счетчики микроконтроллеров AVR имеют несколько режимов работы. Один из них, СТС  - сброс при совпадении, мы уже использовали. Давайте разберемся  с другим режимом - Fast PWM.
   PWM (Pulse-width modulation или по-русски широтно-импульсная модуляция) – это вид модуляции цифровых сигналов, при котором частота сигнала остается  постоянной, а длительность меняется. С помощью ШИМ можно регулировать мощность в нагрузке, а также генерировать аналоговые сигналы. 

   В интернете довольно много микроконтроллерных проектов с применением LCD от телефона Nokia3310. Причина большой популярности дисплея в его дешевизне и простоте использования. Вдохновившись удачным опытом работы с мотороловским экраном, я решил взяться за lcd от Nokia. Вот что из этого получилось.

   Один из наиболее частых способов применения директивы #define –  создание макроопределений замаскированных под функции. Для макросов состоящих из одной инструкции, это легко. Просто определяем макрос без  точки с запятой.

Страница 33 из 37