Программировать AVR контроллеры можно как на ассемблере AVR assembler, так и на Си. Тут, думаю, каждый должен сделать свой выбор сам в зависимости от конкретной задачи и своих предпочтений. Лично я в первую очередь начал ковырять ассемблер. При программировании на ассемблере архитектура устройства становится понятнее и появляется ощущение, что копаешься непосредственно во внутренностях контроллера. К тому же полагаю, что в особенно критических по размеру и производительности программах знание ассемблера может очень пригодиться. После ознакомления с AVR ассемблером я переполз на Си. После знакомства с архитектурой и основными принципами, решил собрать что то полезное и интересное. Тут мне помогла дочурка, она занимается шахматами и в один прекрасный вечер заявила, что хочет иметь часы таймер для партий на время. Вот она идея первого проекта Можно было конечно заказать их на том же e. Bay, но захотелось сделать свои собственные часы, с блэк. Сказано сделано В качестве дисплея решено было использовать два 7 сегментных диодных индикатора. Для управления достаточно было 5 кнопок Игрок 1, Игрок 2, Сброс, Настройка и Пауза. Ну и не забываем про звуковую индикацию окончания игры. На рисунке ниже представлена общая схема подключения микроконтроллера к индикаторам и кнопкам. Она понадобится нам при разборе исходного кода программы Разбор полета. Начнем, как и положено, с точки входа программы функции main. На самом деле ничего примечательного в ней нет настройка портов, инициализация данных и бесконечный цикл обработки нажатий кнопок. Ну и вызов sei разрешение обработки прерываний, о них немного позже. Таким образом, заслав в DDRB и DDRD число 0x. FF, мы сделали B и D портами вывода. Соответственно, команда DDRC 0b. C во входные пины, а оставшиеся в выходные. Команда PORTC. Согласно схеме, к этим входам подключены кнопки, которые при нажатии замкнут их на землю. Таким образом контроллер понимает, что кнопка нажата. Далее следует настройка двух таймеров, Timer. Timer. 1. Первый мы используем для обновления индикаторов, а второй для обратного отсчета времени, предварительно настроив его на срабатывание каждую секунду. Подробное описание всех констант и метода настройки таймера на определенноый интервал можно найти в документации к ATmega. RUS Примеры применения USB в 8разрядных микроконтроллерах AVR. Представлены схемы и их описание для наиболее типичных случаев. Обработка прерываний. ISR TIMER0. В нашем случае это обработчик TIMER0. Дело в том, что каждый отдельно взятый индикатор имеет 9 контактов 7 для управления сегментами, 1 для точки и 1 для питания. Для управления 4 цифрами понадобилось бы 3. Слишком расточительно. Поэтому вывод разрядов на индикатор с несколькими цифрами организован по следующему принципу Напряжение поочередно подается на каждый из общих контактов, что позволяет высветить на соответствующем индикаторе нужную цифру при помощи одних и тех же 8 управляющих контактов. При достаточно высокой частоте вывода это выглядит для глаза как статическая картинка. Atmega16 Инструкция По Применению' title='Atmega16 Инструкция По Применению' />Именно поэтому все 8 питающих контактов обоих индикаторов на схеме подключены к 8 выходам порта D, а 1. B. Таким образом, функция display с задержкой в 0. Итак, ATmega8, самый простой МК из всех ATmega. Книга представляет собой справочное издание по применению. Микроконтроллер ATmega16 описание скачать datasheet. Соответсвтенно рекомендую применять микроокнтроллеры ATmega16 для серийных и. Следуя инструкции, можно за несколько минут установить все. Atmega16 Инструкция По Применению' title='Atmega16 Инструкция По Применению' />Под конец отключаются все выходы, подающие напряжение на индикаторы команда PORTD 0. Если этого не сделать, то последняя выводимая цифра будет продолжать гореть до следующего вызова функции display, что приведет к ее более яркому свечению по сравнению с остальными. Обработка нажатий void handle. Нажатие регистрируется проверкой bit. Задержка длительностью DEBOUNCE. Сохранение статуса нажатия в соответствующих битах переменной. Функции обработки нажатий достаточно тривиальны и полагаю, что в дополнительных комментариях не нуждаются. Полный текст программыdefine F. Ниже показан окончательный вид устройства. Часы питаются от 9 вольтовой батарейки типа Крона. Потребление тока 5. А. Заключение. Потратив 2. DIY проекты. Статья посвящается тем, кто, как и я в свое время, думает, что начать программировать микроконтроллеры это сложно, долго или дорого. Поверьте, начать намного проще, чем может показаться. Если есть интерес и желание пробуйте, не пожалете Удачного всем программированияТак как начинаю осваивать микроконтроллеры фирмы ATMEL. Правда я так и не смог придумать практического применения этих. Наборы Сдр Трансиверов. P. S. Ну и напоследок, небольшая видео демонстрация прототипа.