» » Анатомия микроконтроллеров ATmega - 3. Прерывания.

 
 
 

Анатомия микроконтроллеров ATmega - 3. Прерывания.

Разместил alx32 21 июля 2008. Просмотров: 23942

4 Итак, наши светодиоды мигают, но мы не можем никак повлиять на программу, давайте добавим в схему кнопку:
Анатомия микроконтроллеров ATmega - 3. Прерывания.
и подключим её к выводу порта В, к нулевому разряду.
Откроем мастер Code Wizard AVR, и создадим новый проект:
Анатомия микроконтроллеров ATmega - 3. Прерывания.

Исключён фрагмент. Полный вариант статьи доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.

Источник тактовых импульсов по умолчанию установлен системным, частоту таймера устанавливаем равной 3906 кГц, и поставим галочку прерывания по переполнению. Щас я объясню что почём.

Таймер 0 восьмибитный, то есть он считает с 0 до 255, при превышении числа 255 происходит переполнение, вырабатывается прерывание и значение таймера сбрасывается в 0. При генерации прерывания основная программа останавливается и происходит переход на подпрограмму обработчик прерывания по вектору записанному в начале памяти программ. Для каждого события отведён свой вектор. Основная программа не замечает прерываний, но она может ими управлять.

Давайте реализуем это всё на практике.
Исключён фрагмент. Полный вариант статьи доступен только полноправным членам сообщества и подписчикам.
Пожалуйста, ознакомьтесь с условиями доступа.


Далее заполним наш бесконечный цикл:
Анатомия микроконтроллеров ATmega - 3. Прерывания.

В бесконечном цикле программа проверяет нажатие кнопки, и переключает прерывания, разрешая или запрещая их. обратите внимание на команду #asm("sei")/#asm("cli"), это инструкция компилятору для вставки в данном месте команды ассемблера разрешения/запрещения прерывания. Таким образом мы запускаем/останавливаем бегущие огни.

Подробнее с прерываниями можно ознакомиться в даташите на ATmega8, даташит можно найти в "Справочнике" на нашем сайте.
Продолжение следует...
Александр

Об авторе

Александр (alx32)
Ульяновск
Я простой электрик
 

Понравилось? Палец вверх!

  • всего лайков: 12

Поделись с друзьями!


Связанные материалы:


Немного про шину 1-Wire и цифровой термометр DS18b20

Фотка от www.150cc.ru Здравствуйте, друзья. Хочу предложить вашему вниманию несколько простых...

Программа обмена по RS-232 на языке C# в среде Microsoft Visual Studio

Сограждане, применяющие микроконтроллеры, часто испытывают потребность использования функций обмена...

Программа ForMC в помощь программисту микроконтроллеров

Программа называется ForMC, изначально предназначалась для МК AVR. В ней объединены несколько...

Програмирование в AVR Studio 5 с самого начала. Часть 8

Перейдем к изучению встроенных таймеров. Изучение прерываний и особенно таймеров в...

Програмирование в AVR Studio 5 с самого начала. Часть 7

Поговорим о прерываниях. Слово прерывание говорит само за себя, происходит остановка...

Микроконтроллеры. Связь с внешним миром. Часть 3.

И снова приветствую Вас в моей лекционной! На этот раз я расскажу Вам как "сэкономить" выводы...

Микроконтроллеры. Связь с внешним миром. Часть 2

Здравствуйте, дорогие Датагорцы! По некоторым слабо зависящим от меня причинам не мог участвовать в...

Грызем микроконтроллеры. Урок 3.

Эту статью я начну с провокационного вопроса… А какую конструкцию на основе МК хотите создать ВЫ? ...

Программный валкодер

Это не новость и не статья. Это просто развёрнутый комментарий к датагосркой статье "Что есть...

Анатомия микроконтроллеров ATmega - 2

Итак, продолжим издевательство над МК. Что же нам ещё такого сделать? Давайте заставим мигать...

Анатомия микроконтроллеров ATmega

Здравствуйте, датагорцы! После публикации моей первой статьи, меня завалили вопросами о...

Программирование микроконтроллеров ATmega

Хеллоу ВСЕМ!!! Итак, как я и обещал, расскажу как залить программу в МК. Для этого нам понадобится...
<
  • Гражданин
22 июля 2008 02:02

Гунтис / GuntisK

  • Регистрация: 15.09.2011
  • Публикаций: 20
  • Комментариев: 90
 
  • 0
А вот тут у меня возник трабл- при компиляций CodeVision ненравится массив а и переменная cnt. Проверил много раз. Где искать вину?

<
  • Гражданин
25 июля 2008 22:52

Александр / alx32

  • Регистрация: 26.06.2008
  • Публикаций: 8
  • Комментариев: 35
 
  • 0
странно, у меня откомпилировал...

<
  • Гражданин
26 июля 2008 01:05

Александр / alx32

  • Регистрация: 26.06.2008
  • Публикаций: 8
  • Комментариев: 35
 
  • 0
Гунтис, перенеси определяемые переменные перед функцией обработки прерывания, у меня тоже самое было, пока я так не сделал, видимо компилятор сначала проверяет функцию обработки прерывания и видит неопределённые переменные...
Тут уж трабл в code wizard...

<
  • Гражданин
26 июля 2008 12:00

Гунтис / GuntisK

  • Регистрация: 15.09.2011
  • Публикаций: 20
  • Комментариев: 90
 
  • 0
Буду пробовать-спасибо! smile

Информация
Вы не можете участвовать в комментировании. Вероятные причины:
— Администратор остановил комментирование этой статьи.
— Вы не авторизовались на сайте. Войдите с паролем.
— Вы не зарегистрированы у нас. Зарегистрируйтесь.
— Вы зарегистрированы, но имеете низкий уровень доступа. Получите полный доступ.