Регистр TIMSK в микроконтроллерах AVR: назначение и использование битов прерываний таймеров

Для чего нужен регистр TIMSK в AVR микроконтроллерах. Какую роль играют биты TOIE0 и OCIE0 в этом регистре. Как правильно настраивать и использовать биты прерываний таймеров в TIMSK. Какие типичные конфигурации можно реализовать с помощью этого регистра.

Содержание

Назначение регистра TIMSK в микроконтроллерах AVR

Регистр TIMSK (Timer/Counter Interrupt Mask Register) в микроконтроллерах AVR предназначен для управления прерываниями от таймеров/счетчиков. Он позволяет разрешать или запрещать генерацию прерываний при возникновении определенных событий таймера, таких как переполнение или совпадение.

Основные биты в регистре TIMSK и их назначение:

  • TOIE0 — разрешение прерывания по переполнению таймера 0
  • OCIE0 — разрешение прерывания по совпадению таймера 0
  • TOIE1 — разрешение прерывания по переполнению таймера 1
  • OCIE1A, OCIE1B — разрешение прерываний по совпадению A и B таймера 1
  • TOIE2 — разрешение прерывания по переполнению таймера 2
  • OCIE2 — разрешение прерывания по совпадению таймера 2

Роль битов TOIE0 и OCIE0 в регистре TIMSK

Биты TOIE0 и OCIE0 в регистре TIMSK играют важную роль в управлении прерываниями таймера 0:


  • TOIE0 (Timer/Counter0 Overflow Interrupt Enable) — разрешает прерывание при переполнении таймера 0. Когда этот бит установлен в 1, прерывание будет генерироваться каждый раз, когда значение таймера 0 переполняется (переходит от максимального значения к 0).
  • OCIE0 (Timer/Counter0 Output Compare Match Interrupt Enable) — разрешает прерывание при совпадении значения таймера 0 с заданным значением сравнения. Когда этот бит установлен в 1, прерывание будет генерироваться каждый раз, когда значение таймера 0 совпадает с значением в регистре OCR0.

Почему нужны биты разрешения прерываний в TIMSK?

Биты разрешения прерываний в регистре TIMSK необходимы по нескольким причинам:

  1. Гибкость управления: Они позволяют программисту выборочно включать или отключать прерывания для конкретных событий таймера, не затрагивая работу самого таймера.
  2. Экономия ресурсов: Отключение неиспользуемых прерываний помогает избежать ненужных вызовов обработчиков прерываний, экономя процессорное время.
  3. Предотвращение конфликтов: Позволяет избежать нежелательных прерываний в критических участках кода.
  4. Динамическое управление: Дает возможность включать и выключать прерывания в процессе выполнения программы в зависимости от текущих задач.

Типичные конфигурации использования регистра TIMSK

Регистр TIMSK позволяет реализовать различные конфигурации работы с таймерами. Вот несколько типичных сценариев:


1. Простой подсчет времени без прерываний

В этом случае все биты TIMSK устанавливаются в 0. Таймер работает, но не генерирует прерываний. Программа может периодически проверять значение таймера для измерения временных интервалов.

TIMSK = 0x00; // Отключаем все прерывания таймера

2. Измерение длительных интервалов с прерыванием по переполнению

Для измерения длительных интервалов можно использовать прерывание по переполнению. В этом случае устанавливается бит TOIE0:

TIMSK |= (1 << TOIE0); // Разрешаем прерывание по переполнению таймера 0

В обработчике прерывания можно увеличивать программный счетчик для учета количества переполнений.

3. Генерация точных временных интервалов

Для генерации точных интервалов используется прерывание по совпадению. Устанавливается бит OCIE0:

TIMSK |= (1 << OCIE0); // Разрешаем прерывание по совпадению таймера 0
OCR0 = 250; // Устанавливаем значение сравнения

В этом случае прерывание будет генерироваться каждый раз, когда значение таймера достигнет 250.

4. Реализация ШИМ с использованием прерываний

Для реализации ШИМ можно использовать оба типа прерываний:

TIMSK |= (1 << TOIE0) | (1 << OCIE0); // Разрешаем оба прерывания

В обработчике прерывания по совпадению можно выключать выход, а в обработчике переполнения - включать, реализуя тем самым ШИМ-сигнал.

Как правильно настраивать биты прерываний в TIMSK?

При настройке битов прерываний в регистре TIMSK следует придерживаться следующих рекомендаций:

  1. Определите, какие события таймера вам нужны для вашей задачи (переполнение, совпадение или оба).
  2. Настройте соответствующие биты в регистре TIMSK, используя операцию побитового ИЛИ:
TIMSK |= (1 << TOIE0); // Разрешаем прерывание по переполнению
TIMSK |= (1 << OCIE0); // Разрешаем прерывание по совпадению
  1. Убедитесь, что глобальные прерывания разрешены:
sei(); // Разрешаем глобальные прерывания
  1. Реализуйте соответствующие обработчики прерываний:
ISR(TIMER0_OVF_vect) {
    // Обработчик прерывания по переполнению
}

ISR(TIMER0_COMP_vect) {
    // Обработчик прерывания по совпадению
}

Часто задаваемые вопросы о регистре TIMSK

Какой бит в TIMSK отвечает за прерывание по переполнению таймера 0?

За прерывание по переполнению таймера 0 отвечает бит TOIE0 (Timer/Counter0 Overflow Interrupt Enable) в регистре TIMSK.


Можно ли одновременно использовать прерывания по переполнению и по совпадению?

Да, можно одновременно использовать оба типа прерываний. Для этого нужно установить соответствующие биты в регистре TIMSK:

TIMSK |= (1 << TOIE0) | (1 << OCIE0);

Что произойдет, если не установить биты в TIMSK?

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

Нужно ли очищать биты TIMSK после обработки прерывания?

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

Заключение

Регистр TIMSK играет ключевую роль в управлении прерываниями от таймеров в микроконтроллерах AVR. Правильное использование битов этого регистра позволяет гибко настраивать работу таймеров и эффективно обрабатывать связанные с ними события. Понимание назначения и принципов работы TIMSK необходимо для создания точных и эффективных временных систем в проектах на базе AVR микроконтроллеров.


timsk | МКОУ "Тымская ООШ"

Опубликовано автором timsk

   Ребята нашей школы стали участниками традиционных лыжных гонок в селе Староюгино, посвященные памяти воина-интернационалиста Юрия Перемитина, который с детства занимался спортом.
   16 февраля 2023 года спортсмены разных возрастов встретились на лыжне, чтобы продемонстрировать своё мастерство, спортивный азарт и волю к победе. И, конечно же, чтобы вспомнить трагическую историю семьи Перемитиных, потерявшей сына в Афганской войне, и почтить память Юрия, замечательного, трудолюбивого, жизнерадостного парня, который с честью выполнил свой воинский долг, оправдав звание командира взвода, и за боевые заслуги был награждён медалью «За отвагу» и орденом Красной Звезды посмертно.
   На лыжне собрались около ста участников соревнований из Староюгинской, Новоюгинской, Тымской, Сосновской, Павловской школ, школы-интерната №1, школы №2 и ДЮСШ вместе с тренерами, членами судейской коллегии и болельщиками, которые с волнением и восхищением наблюдали за происходящим.
   Для наших ребят это было первое выездное соревнование по лыжным гонкам, поэтому волнение у ребят было сильное, но в нужный момент смогли взять себя в руки и прошли гонку с хорошими результатами.
   Гонка продолжалась несколько часов. Пока судьи подводили итоги, всех участников угощали вкусными булочками с чаем и конфетами.
Участвовало в соревнованиях 8 Тымских ребят:
   
Брагина Анастасия — 9 класс, забег 2 километра,
 
 Марамошкина Варвара — 6 класс, забег 1 км,
   
Гаус Диана — 6 класс, забег 1 км.,
   
Марамошкин Арсений — 5 класс, забег 1 км.,
 
 Юдина Юлия — 4 класс, забег 1 км.,
   
Савенко Сергей — 3 класс, забег 500 метров,
   
Панова Олеся — 3 класс, забег 500 метров.
   И самый юный участник нашей команды
Смоленцев Дмитрий - 2 класс, забег 500 метров.
   Тымская команда привезла в школу три медали.
Серебренные медали получили Панова Олеся и Савенко Сергей, золотую медаль получил Смоленцев Дмитрий.
   МКОУ «Тымская ООШ» выражает благодарность МКОУ «Староюгинская ООШ» за приглашение на такое замечательное мероприятие и радушный прием.


 

 

 

 

 

 

 


Рубрика: Главная | Добавить комментарий

Опубликовано автором timsk

   14 февраля 2023 года на базе МКОУ «Вертикосская СОШ» был проведен Районный методический день учителей физической культуры и тренеров-преподавателей школ Каргасокского и Тымского образовательных округов по теме: «Организация условий, способствующих профессиональному и творческому росту педагога».
   Участников Районного методического дня поздравила  А.С. Гусева, директор МКОУ «Вертикосская школа».  Школьники показали яркий, зажигательный танец, который подарил участникам заряд бодрости и положительные эмоции.
   Уроки физической культуры, спортивные секции играют  большую роль в образовательном процессе школ, оказывают огромное влияние на здоровье и физическую подготовку детей. Поэтому работа учителей физкультуры и тренеров спортивных секций требует профессионального подхода, который включает использование новейших методов и современных средств обучения. В ходе мероприятия преподаватели физической культуры и тренера-преподаватели провели: урок «Совершенствование элементов гимнастики и акробатики» (А.В. Астафьев, МКОУ «Сосновская ООШ») для учеников 3 –его класса и учебно-тренировочное занятие по дополнительному образованию школьников по теме: «Совершенствование технико-тактический действий в футболе» (П.В. Столяров, МБОУ «Каргасокская СОШ-интернат № 1).
   Новосельцева Д.С. выступала с сообщением «Спорт в Тымской школе», подробно рассказав, какие виды спорта, секции, спортивные мероприятия есть в нашей школе. Также Дарья Сергеевна рассказала о спортивных традициях Тымской школы и спортивных предпочтениях детей.
  Был представлен слайд-шоу фотографий ребят с занятий физической культуры. И в завершение своего выступления вместе с присутствующими на мероприятии отправились в виртуальную экскурсию «киноколлаж спортивных занятий».
   И.В. Кирин представил вниманию преподавателей опыт своей работы «Применение игрового портала shessking, lichess,chess.com для организации тренировочного процесса по виду спорта «Шахматы».
   На заключительном этапе все участники районного методического дня получили сертификаты.
   МКОУ «Тымская ООШ» выражает благодарность УООиП «Каргасокский район» за организацию районного методического дня и педагогическому составу МКОУ «Вертикосская СОШ» за гостеприимство и добрый прием.

Рубрика: Главная | Добавить комментарий

Опубликовано

13.02.2023 автором timsk

Мы живём в удивительной стране: самой большой в мире по площади, уникальной по природным и культурным объектам, с великой историей и мужественными людьми. Российским учёным принадлежат величайшие научные открытия, произведениями великих русских поэтов и писателей, художников и композиторов восхищается весь мир.
И нам с вами важно осознавать эти особенности, чтобы ценить, сохранять, а в будущем и преумножать славу нашей страны. Ведь от всех нас зависит будущее нашей страны, будущее России!

Живут в России разные

Народы с давних пор.
Одним тайга по нраву,
Другим степной простор.
У каждого народа
Язык свой и наряд.
А Родина – Россия
У нас у всех одна.

Рубрика: Главная | Добавить комментарий

Опубликовано автором timsk

По традиции наша новая учебная неделя началась с церемонии поднятия Государственного флага Российской Федерации.

Почетное право поднять флаг, было доверено активистам школы: ученице 6 класса Марамошкиной Варваре, ученице 4 класса Юдиной Юлии и ученице 3 класса Пановой Олесе.

Рубрика: Главная | Добавить комментарий

Опубликовано автором timsk

Ешьте овощи и фрукты-
Это лучшие продукты.
Вас спасут от всех болезней.
Нет вкусней их и полезней.

Подружитесь с овощами,
И с салатами и щами.
Витаминов в них не счесть.
Значит, нужно это есть!

(Н. Довженко)

Рубрика: Главная | Добавить комментарий

Опубликовано автором timsk

  В рамках недели  старших классов  по теме — «Великие люди России и мира», Дарья Сергеевна провела информминутку на тему: «Великие Российские спортсмены».
В России всегда большое внимание уделялось спорту. Необходимо помнить людей, прославивших нашу страну.
Самые знаменитые спортсмены России завоевали множество медалей, показали себя настоящими борцами, способными отстоять честь страны!
  Детям были представлены 16 Спортсменов, которые имеют многие спортивные награды, их имена на века останутся в истории спорта. Это Иван Поддубный – советский и российский профессиональный борец, который за 40 лет не проиграл ни одного поединка. Это Лариса Латынина, которая до 2012 года имела наибольшую коллекцию олимпийских медалей.
  На этом мероприятии дети познакомились с уважаемыми российскими спортсмена, их заслугами, их деятельностью.
  Был оформлен стенд «10 величайших шахматистов всех времён».
Открывает список Гарри Каспаров – ВЕЛИЧАЙШИЙ ИЗ ВЕЛИКИХ, а на 10 месте Вишванатан Ананд. Представлена краткая история шахматистов, их победы и заслуги.
  Также представлен стенд «Герои нашего времени. Известные подвиги спасателей МЧС». Ведь люди, которые спасают чужие жизни, заслуживают звание «Великие люди России».
Нам есть на кого ровняться!

Рубрика: Главная | Добавить комментарий

Опубликовано автором timsk

В преддверие общероссийского  праздника «День Российской науки, который отмечается ежегодно 8 февраля с 1999 года, в нашей школе стартовала неделя старших классов. Развитие науки и великие открытия не свершились бы без огромного вклада людей — ученых. Поэтому темой недели старших классов мы выбрали «Великие люди России и мира». Начали мы наше путешествие с информминутки «Великие люди России и мира», где познакомились с знаменитыми именинниками февраля. Их оказалось так много и каждого ребята узнали, у нас не осталось сомнений, что этот праздник заслуживает нашего внимания. Временные рамки не позволили нам поближе поговорить о каждом в этот день, поэтому ребята по классам выбрали одного из именинников, с которым познакомились поближе, оформляя плакат с его  биографией, достижениями и открытиями. В завершении работы 5 класс познакомили обучающихся с выдающимся именинником, день рождение которого приходится на 8 февраля — Дмитрием Ивановичем Менделеевым.

6 класса представили биографию и творчество французского писателя Жуль Верна. 7 класс — великие открытия Галелео Галилея и 9 класс — Владимира Ивановича Вернадского.

Рубрика: Главная | Добавить комментарий

Опубликовано

07.02.2023 автором timsk

Рубрика: Главная | Добавить комментарий

Опубликовано автором timsk

С давних времён человек пытался ответить на вопросы: как устроен мир? Почему день сменяет ночь? Почему плавятся металлы? Почему идёт дождь, и летают птицы?
И со временем, отвечая на множество вопросов, люди построили корабли, автомобили и паровозы, посмотрели в небо сквозь линзы телескопов.
А сейчас мы уже привыкли, что книги стали электронными, телескопы отправляются в далёкий космос, а операции делает лазер.
И всё это стало возможным благодаря учёным.
Кто же такие учёные? Учёные – это люди, изучающие явления и объекты в области какой-то науки: физики, химии, астрономии, математики, медицины, истории и многих других.
Цель их работы – узнавать новое и изучать неизвестное в окружающем нас мире. И использовать эти знания на благо людей.
Так, например, изучая строение кожи акулы, учёные создали костюмы для пловцов с целью увеличения их скорости.
Благодаря химикам, были изобретены новые материалы, различного рода пластики.
В конце XX века российские учёные в Антарктиде обнаружили большое озеро подо льдом. Озеро назвали «Восток», по названию полярной станции, которая находится над ним.
Всё озеро находится под слоем льда толщиной около 4 километров, и было изолировано от внешнего мира более миллиона лет назад.
Пробы, собранные нашими учёными, помогут определить, какие живые организмы приспособились к жизни в таких суровых условиях. Ещё одно научное открытие российских учёных – самый большой космический радиотелескоп. Он позволяет эффективно изучать всё, что происходит в космосе.
И в наше время – наука и технологии продолжают стремительно развиваться. Множество открытий ещё впереди. И, возможно, какие-то открытия сделаете именно вы!

 

Рубрика: Главная | Добавить комментарий

Опубликовано автором timsk

Рубрика: Образование и воспитание | Добавить комментарий

‎Timsk on Apple Music

‎Timsk on Apple Music
  • Algeria
  • Angola
  • Armenia
  • Azerbaijan
  • Bahrain
  • Benin
  • Botswana
  • Cameroun
  • Cape Verde
  • Chad
  • Côte d’Ivoire
  • Congo, The Democratic Republic Of The
  • Egypt
  • Eswatini
  • Gabon
  • Gambia
  • Ghana
  • Guinea-Bissau
  • India
  • Iraq
  • Israel
  • Jordan
  • Kenya
  • Kuwait
  • Lebanon
  • Liberia
  • Libya
  • Madagascar
  • Malawi
  • Mali
  • Mauritania
  • Mauritius
  • Morocco
  • Mozambique
  • Namibia
  • Niger (English)
  • Nigeria
  • Oman
  • Qatar
  • Congo, Republic of
  • Rwanda
  • Saudi Arabia
  • Senegal
  • Seychelles
  • Sierra Leone
  • South Africa
  • Sri Lanka
  • Tajikistan
  • Tanzania, United Republic Of
  • Tunisia
  • Turkmenistan
  • United Arab Emirates
  • Uganda
  • Yemen
  • Zambia
  • Zimbabwe
  • Australia
  • Bhutan
  • Cambodia
  • 中国大陆
  • Fiji
  • 香港
  • Indonesia (English)
  • 日本
  • Kazakhstan
  • 대한민국
  • Kyrgyzstan
  • Lao People's Democratic Republic
  • 澳門
  • Malaysia (English)
  • Maldives
  • Micronesia, Federated States of
  • Mongolia
  • Myanmar
  • Nepal
  • New Zealand
  • Papua New Guinea
  • Philippines
  • Singapore
  • Solomon Islands
  • 台灣
  • Thailand
  • Tonga
  • Turkmenistan
  • Uzbekistan
  • Vanuatu
  • Vietnam
  • Armenia
  • Österreich
  • Belarus
  • Belgium
  • Bosnia and Herzegovina
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France (Français)
  • Georgia
  • Deutschland
  • Greece
  • Hungary
  • Iceland
  • Ireland
  • Italia
  • Kosovo
  • Latvia
  • Lithuania
  • Luxembourg (English)
  • Malta
  • Moldova, Republic Of
  • Montenegro
  • Nederland
  • North Macedonia
  • Norway
  • Poland
  • Portugal (Português)
  • Romania
  • Россия
  • Serbia
  • Slovakia
  • Slovenia
  • España
  • Sverige
  • Schweiz
  • Turkey
  • Ukraine
  • United Kingdom
  • Anguilla
  • Antigua and Barbuda
  • Argentina (Español)
  • Bahamas
  • Barbados
  • Belize
  • Bermuda
  • Bolivia (Español)
  • Brasil
  • Virgin Islands, British
  • Cayman Islands
  • Chile (Español)
  • Colombia (Español)
  • Costa Rica (Español)
  • Dominica
  • República Dominicana
  • Ecuador (Español)
  • El Salvador (Español)
  • Grenada
  • Guatemala (Español)
  • Guyana
  • Honduras (Español)
  • Jamaica
  • México
  • Montserrat
  • Nicaragua (Español)
  • Panamá
  • Paraguay (Español)
  • Perú
  • St. Kitts and Nevis
  • Saint Lucia
  • St. Vincent and The Grenadines
  • Suriname
  • Trinidad and Tobago
  • Turks and Caicos
  • Uruguay (English)
  • Venezuela (Español)
  • Canada (English)
  • Canada (Français)
  • United States
  • Estados Unidos (Español México)
  • الولايات المتحدة
  • США
  • 美国 (简体中文)
  • États-Unis (Français France)
  • 미국
  • Estados Unidos (Português Brasil)
  • Hoa Kỳ
  • 美國 (繁體中文台灣)

avr - Полезность некоторых битов в регистре TIMSK

спросил

Изменено 5 лет назад

Просмотрено 784 раза

\$\начало группы\$

В регистре TIMSK есть вещи, которые меня смутили. Согласно даташиту на Atmega32:

Когда бит TOIE0 записывается в единицу, а бит I в регистре состояния установлен (единица), прерывание по переполнению таймера/счетчика 0 разрешено.

А дальше пишет что выполняется соответствующее прерывание, а именно TOV0 , в регистре ТИФР .

Зачем вообще нужен бит TOIE0 ? Если он включен аппаратно, и я не могу его отключить (ну, я мог бы, записав в него логическую 1, но по какой причине/результату?), то почему он вообще был встроен в реестр? То же самое верно и для других битов, таких как OCIE0 в регистре TIMSK и соответствующий флаг в регистре TIFR , OCF0 . Я не изучал другие биты в регистре TIMSK , но пока первые два бита меня смутили.

\$\конечная группа\$

7

\$\начало группы\$

Этот бит регистра TIMSK управляет прерыванием таймера/счетчика 0 по переполнению 9. 0048 будет включен или нет. Важно, если вы собираетесь кодировать подпрограмму обслуживания прерываний (ISR) для TC0, тогда вам нужно 1 в этом бите, чтобы разрешить запуск прерывания по переполнению.

\$\конечная группа\$

\$\начало группы\$

Биты разрешения прерывания сообщают, когда вы хотите получить прерывание.

Типичные конфигурации:

  1. Прерывание не требуется. Приложение просто оставляет таймер включенным и просматривает значение счетчика всякий раз, когда происходит что-то еще, чтобы узнать, сколько времени это заняло. Тогда все биты IE равны нулю.

  2. Измерение длительных интервалов. Вас по-прежнему интересует только то, сколько времени что-то заняло, но это может быть много времени, и вы ожидаете, что счетчик переполнится. Затем вы включаете бит TOIE0 , и ваш обработчик прерываний программно реализует биты более высокого порядка в счетчике.

  3. Измерение точных интервалов. Вы запускаете таймер, устанавливаете значение сравнения, затем включаете OCIE0 и флаг автоматического сброса. Вы получаете прерывание каждый раз, когда компаратор совпадает, и таймер перезапускается, поэтому у вас есть четко определенный интервал между прерываниями.

  4. ШИМ. Вы устанавливаете как TOIE0 , так и OCIE0 , затем вы получаете прерывания, когда счетчик соответствует значению сравнения и когда он переполняется. Когда счетчик совпадает, вы отключаете выход, когда происходит переполнение, вы включаете его.

\$\конечная группа\$

Зарегистрируйтесь или войдите

Зарегистрироваться через Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

avr-libc: iocompat.h Исходный файл

1 /*

2  * ---------------------------------------------- ------------------------------------------------------------

3  * " THE BEER-WARE LICENSE" (Revision 42):

4  * написал этот файл. Пока вы сохраняете это уведомление, вы

5  * можете делать с этим материалом все, что захотите. Если мы когда-нибудь встретимся, и ты считаешь, что

6  * это того стоит, ты можешь купить мне пиво взамен. Йорг Вунш

7  * ----------------------------------------------------------- --------------------------------

8  *

9  * Определения совместимости функций ввода/вывода для различных AVR.

10  *

11  * $Id: iocompat_8h_source.html,v 1.1.1.7 2022/01/29 09:22:00 joerg_wunsch Exp $

12 */

13

14 #if! Определено (iocompat_h)

15 #define iocompat_h 1

16

17/ *

18 * Регулирование специфики для устройства:

9 *

20 * * Предоставьте определения для расположения порта/контакта OCR1[A],

21  * имя регистра OCR, управляющего ШИМ, и отрегулируйте прерывание

22  * имена векторов, которые отличаются от используемых в demo. c

23  * [TIMER1_OVF_vect].

24  */

25 #if defined(__AVR_AT90S2313__)

26 # define OC1 PB3

27 # define OCR OCR1

28 # define DDROC DDRB

29 # define TIMER1_OVF_vect TIMER1_OVF1_vect

30 #elif defined(__AVR_AT90S2333__ ) || Defined(__AVR_AT90S4433__)

31#define OC1 PB1

32#Define DDROC DDRB

33#Define OCR OCR1

34#elifdefined(__AVR_AT90S4414__)| определено (__AVR_AT90S8515__) || \

35  определено (__AVR_AT90S4434__) || определено (__AVR_AT90S8535__) || \

36  определено (__AVR_ATmega163__) || определено (__AVR_ATmega8515__) || \

37  определено (__AVR_ATmega8535__) || \

38  определено (__AVR_ATmega164P__) || определено (__AVR_ATmega324P__) || \

39  определено (__AVR_ATmega644__) || определено(__AVR_ATmega644P__) || \

40 определено (__AVR_ATmega1284P__)

41 # определить OC1 PD5

42# DEFINE DDROC DDRD

43# Определите OCR OCR1A

44# IF! Определено (TIMSK) / * Новый Atmegas * /

45# DEFINE TIMSK1

46# ENDIFT

47 #ELIFENIFINED (__ER_8

46# endif

47 #ELIFINIFINE (__ER_862 46# endif

47. ) || определено (__AVR_ATmega48__) || \

48  определено (__AVR_ATmega88__) || определено(__AVR_ATmega168__)

49 # определить OC1 PB1

50 # определить DDROC DDRB

51 # определить OCR OCR1A

52 # if !defined(TIMSK) /* ATmega48/88/168 */

53 # define TIMSK TIMSK1

54 # endif /* !defined(TIMSK) */

55 #elifdefined(__900_ATtiny23900_5) 56 # определить OC1 PB3

57 # определить OCR OCR1A

58 # определить DDROC DDRB

59 #elifdefined(__AVR_ATtiny24__) || определено (__AVR_ATtiny44__) || \

60 определенный (__AVR_ATtiny84__)

61 # определить OC1 PA6

62 # define DDROC DDRA

63 # if !defined(OCR1A)

64 # /* обход имени с ошибкой в ​​avr-libc 1.4.[0..1] */

65 # define OCR OCRA1

6 60002 64 # else

67# Define OCR OCR1A

68# ENDIF

69# Определите TIMSK TIMSK1

70# Определите TIMER1_OVF_VECT TIM1_OVF_VECT / * XML и DataShiet MAISTINGE * /

71 #ELIFININED (__ERININGEINGEINGEIINGEIINGENTIIN определено (__AVR_ATtiny45__) || \

72 defined(__AVR_ATtiny85__)

73 /* Таймер 1 на этих устройствах является только 8-битным таймером. */

74# DEFINE OC1 PB1

75# DEFINE DDROC DDRB

76# DEFINE OCR1A

77# DEFINE TCCR1A TCCR1

78# DEFINE TCCR1B1B1

79# DEFINE DEFINER11 255 /* возможен только 8-битный ШИМ */

81 # определить TIMER1_PWM_INIT _BV(PWM1A) | _BV(COM1A1)

82 # define TIMER1_CLOCKSOURCE _BV(CS12) /* использовать прескалер 1/8 */

83 #elif Defined(__AVR_ATtiny26__)

84 /* Довольно близко к ATtinyX5, но достаточно отличается для своего собственного раздела. */

85# DEFINE OC1 PB1

86# DEFINE DDROC DDRB

87# DEFINE OCR1A

88# DEFINE TIMER1_OVF_VECT TIMER1_OVF1_VECT

89# DEFINE TIMER1_TOP 255/ *ВЫСОКОЙ БИТ 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT 8-BIT PWM * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * # определить TIMER1_PWM_INIT _BV(PWM1A) | _BV(COM1A1)

91 # определить TIMER1_CLOCKSOURCE _BV(CS12) /* использовать прескалер 1/8 */

92 /*

93  * Без установки OCR1C в TOP ATtiny26 не вызывает прерывание

94  * переполнения в режиме PWM.

95  */

96 # определить TIMER1_SETUP_HOOK() OCR1C = 255

97 #elifdefined(__AVR_ATtiny261__) || определено (__AVR_ATtiny461__) || \

98  определено (__AVR_ATtiny861__)

99 # определить OC1 PB1

100 # определить DDROC DDRB

101 # определить OCR OCR1A

102 # определить TIMER1_PWM_INIT _BV(WGM10) | _BV(PWM1A) | _BV(COM1A1)

103 /*

104  * Хотя на этих устройствах таймер 1 может работать в 10-битном режиме,

105  * обработка 10-битных регистров ввода-вывода сложнее, чем

106  * что 16-разрядных регистров других устройств AVR (комбинированные

107  * 16-разрядные операции ввода-вывода невозможны), поэтому мы ограничиваем эту демонстрацию 8-разрядными

108  * режим довольно стандартный.

109  */

110 # определить TIMER1_TOP 255

111 # определить TIMER1_CLOCKSOURCE _BV(CS12) /* использовать прескалер 1/8 */

112 #elif Defined(_3_AVR_ATmega)| Defined(__AVR_ATmega16__)

113#define OC1 PD5

114#Define DDROC DDRD

115#Define OCR OCR1A

116#elifdefined(__AVR_ATmega64__) || определено (__AVR_ATmega128__) || \

117  определено (__AVR_ATmega165__) || определено (__AVR_ATmega169__) || \

118  определено (__AVR_ATmega325__) || определено (__AVR_ATmega3250__) || \

119  определено (__AVR_ATmega645__) || определено (__AVR_ATmega6450__) || \

120  определено (__AVR_ATmega329__) || определено (__AVR_ATmega3290__) || \

121  определено (__AVR_ATmega649__) || определено (__AVR_ATmega6490__) || \

122  определено (__AVR_ATmega640__) || \

123  определено (__AVR_ATmega1280__) || определено (__AVR_ATmega1281__) || \

124  определено (__AVR_ATmega2560__) || определено (__AVR_ATmega2561__) || \

125 Определено (__ avr_atmega32u4__)

126# define oc1 pb5

127# define ddroc ddrb

128# define ocr ocr1a

129# defined (pb5) / * * * * 130 # define PB5 5

131 # endif

132 # if !defined(TIMSK) /* new ATmegas */

133 # define TIMSK TIMSK1

134# endif

135 #else

136# Ошибка "Не знаю, какой вид MCU вы собираетесь для"

137 #endif

138

139/

старые AVR здесь.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *