Частотомер 1 гц — 10 мгц на микроконтроллере avr

Компиляция и загрузка

Поскольку на плате нет разъема ICSP, вам необходимо запрограммировать ATtiny13 либо перед пайкой с помощью адаптера SOP, либо после пайки с помощью зажима EEPROM.

При использовании Arduino IDE

  1. Убедитесь, что вы установили MicroCore .
  2. Перейдите в Инструменты -> Плата -> MicroCore и выберите ATtiny13.
  3. Перейдите в Инструменты и установите следующие параметры платы:
  • Clock: 1.2 MHz internal osc.
  • BOD: BOD 2.7V
  • Timing: Micros disabled
  1. Подключите ваш программатор к компьютеру и к ATtiny13.
  2. Перейдите в Инструменты -> Программатор и выберите ISP-программатор (например, USBasp ).
  3. Перейдите в Инструменты -> Записать загрузчик.
  4. Откройте Tacho.ino и нажмите Загрузить .

Схема охранного устройства

Алгоритм работы ПОУ № 1 (принципиальная схема рисунок 2) следующий. Внешними (выносными) элементами по отношению к ПОУ являются семь концевых выключателей (S1…S7), которые позволяют контролировать состояние семи дверей с помощью индикаторов HL2…HL8. Один концевой выключатель контролирует состояние одной двери.

Если дверь закрыта — концевой выключатель разомкнут. Соответствующий индикатор — не горит (погашен).

Рис.2. Принципиальная схема охранного устройства.

Рис. 3. Схема электронного ключа для задвижки (на ток до 15А).

Если дверь открыта — концевой выключатель замкнут. Соответствующий индикатор — периодически мигает. В интерфейс контроля и управления ПОУ входят: тумблер SA1, индикаторы HL1… HL9. Конструктивно, все вышеуказанные элементы целесообразно разместить на отдельной панели управления устройства.

Элементы интерфейса управления ПОУ имеют следующее назначение:

  • SA1 — тумблер включения сигнализации. При установке данного тумблера в положение «ВКЛ» — устройство ставится под охрану. Устройство ставится под охрану, через ~ 10 сек. с момента установки тумблера SA1 в положение «ВКЛ» из положения «ВЫКЛ». После установки устройства под охрану, сигнализация срабатывает через ~ 10 сек с момента замыкания любого концевого выключателя S1…S8;
  • HL1 — индикатор активации режима охраны. Если устройство находится в режиме «охрана», данный индикатор — горит, если в режиме » контроль состояния дверей» данный индикатор — погашен;
  • HL9 — функциональный индикатор микроконтроллера DD1. Данный индикатор периодически мигает, сразу после подачи питания на устройство. Мигающий индикатор HL9 указывает на то, что микроконтроллер DD1 «не завис», а функционирует по заданному алгоритму.

ПОУ построена на микроконтроллере DD1, рабочая частота которого задается генератором с внешним резонатором ZQ1 на 10 МГц. К порту РЗ микроконтроллера DD1 подключены тумблер SA1, пьезоэлектрический излучатель ВА1, индикатор HL1, ключи на транзисторах VT1…VT4. К порту Р1 микроконтроллера DD1 подключены концевые выключатели S1…S7 и индикаторы HL2…HL9.

Питание на данные индикаторы поступает через ключ на транзисторе VT5, который управляется с вывода 19 микроконтроллера DD1. Резисторы R13…R20 — токоограничительные для, индикаторов HL2…HL25. Резистор R10 — токоограничительный для индикатора HL1.

Реле К1, К2 управляются соответственно с выводов 2, 3 DD1.

Спустя 10 сек с момента подачи лог. 0 на вывод 3 микроконтроллера DD1- ПОУ ставится под охрану. Для этого необходимо установить тумблер SA1 в положение «ВКЛ» или установить прямой выход D-триггера DD2( вы вод 5 DD2) в лог. 0. Рассмотрим работу устройства в данном режиме.

Если включится любой из концевых выключателей S1…S7 ( будет открыта любая дверь) то на соответствующем выводе порта Р1 микроконтроллера DD1 будет присутствовать сигнал уровня логического 0. Через ~ 10 сек. с момента замыкания концевого выключателя включится звуковая сигнализация (пьезоэлектрический излучатель ВА1).

При этом на выводе 3 микроконтроллер DD1 установит уровень логического 0 (Включится реле К2). Реле К1 будет периодически включаться и выключаться с периодом ~ 1 сек ( на выводе 2 микроконтроллера DD1 выходной сигнал будет иметь форму меандра).

Сигнализация включится и в том случае если любой из концевых выключателей S1…S7 включится на короткое время (например, открыть и тут же закрыть дверь форточку). Сигнализация выключается установкой тумблера SA1 в положение «ВЫКЛ» или установкой прямого выхода D-триггера DD2 в лог. 1. Доступ к тумблеру SA1 целесообразно ограничить.

Пусть тумблер SA1 установлен в в положение «ВЫКЛ. Тогда при открывании дверей будут только периодически мигать соответствующие индикаторы. При этом, при открывании одной двери, в течении 2 сек. будет работать звуковая сигнализация (пьезоэлектрический излучатель ВА1).

К контактам реле К1, К2 можно подключить различные исполнительные механизмы или их цепи управления (механизм блокировки дверей, ревун и т. д.). Разработанная программа на ассемблере занимает всего-то порядка 0,4 КБайт памяти программ микроконтроллера.

Самодельный частотомер на ATTINY2313 — Уголок радиолюбителя

Этот самодельный частотомер на ATTINY2313 предназначен для измерения частоты в диапазоне примерно от 4МГц до более 160МГц. Его можно использовать как измеритель частот или в качестве устройства ввода-вывода TRX, например, на диапазон 144МГц (2м).

Технические характеристики частотомера:

  • измерение частоты в диапазоне 4-160 Мгц
  • отображение измерений на ЖК-дисплее
  • чувствительность 700мВ
  • входное напряжение, макс < 30В
  • питание: 8-15В
  • очень простая плата, минимальное количествоэлементов, быстрый запуск
  • размеры платы: 37х80мм

Схема прекрасно отработала в диапазоне от 3,8МГц до 162МГц. Основой схемы является микроконтроллер ATTINY2313. Его преимуществом является возможность работать на частотах до 20МГц. В схеме использован кварц на 16МГц, таким образом, сам процессор теоретически должен правильно измерять частоты до 8МГц.

Зачастую оказывается, что диапазон до 8МГц слишком мал. Увеличение верхнего диапазона можно получить, используя делитель частоты (прескалер). В схеме задействован прескалер LB3500, который позволяет измерять до 150 Мгц.

Краткая информация о LB3500:

  • напряжение питания — 4,5…5,5В
  • потребляемый ток — l6мА-24мА
  • входное напряжение — 100мВ-600мВ
  • выходное напряжение — 0,9 Vpp
  • делитель — 8

Без применения дополнительного делителя схема способна измерять частоты до 64МГц. Добавление дополнительного делителя в виде двоичного счетчика 74LS293 (ICl) позволяет увеличить диапазон измерений до 150 Мгц (макс. для LB3500).

ICl делит частоту на 4. Таким образом, вся система прескалера (ICl и IC4) делит входную частоту на 32. Транзистор Tl с элементами C7, R2, R3 обеспечивает высокое входное сопротивление.

Входной сигнал после разделения попадает на вход микросхемы LB3500. На выходе в 9 IC4 сигнал получается в 8 раз меньшей частоты, чем на входе. К сожалению, выходной сигнал микросхемы LB3500 не согласовывается с TTL уровнями. Для устранения этого недостатка в схему добавлен транзистор Т2, который предназначен для согласования. Потенциометр PRI обеспечивает точное соответствие.

С выхода QB счетчика IC1 сигнал попадает на вход счетчика Tl микросхемы IC2. Программа микроконтроллера вычисляет частоту этого сигнала, умножает ее на 32 и результат измерения поступает на ЖК-дисплей.

Печатная плата и прошивка (скачено: 279)

Программное обеспечение

Основной принцип

Для выполнения калибровки программа сначала загружается в целевой ATtiny с помощью встроенного последовательного программатора высокого напряжения. Кроме того, заводское значение калибровки генератора (OSCCAL) записывается в EEPROM.

Программа на целевой ATtiny читает EEPROM и записывает значение в регистр OSCCAL. Затем подается сигнал с половиной тактовой частоты на вывод PB0. Поскольку фьюзы ранее были установлены так, что целевой ATtiny работает с предварительным делителем 8, на PB0 подается сигнал с 1/16 частоты генератора.

Стенд для пайки со светодиодной подсветкой
Материал: АБС + металл + акриловые линзы. Светодиодная подсветка…

Подробнее

#include <avr/io.h>
#include <avr/eeprom.h>

int main(void) {
  OSCCAL = eeprom_read_byte(0);
  DDRB   = 0b00000001;
  TCCR0A = 0b01000010;
  TCCR0B = 0b00000001;
  while(1);
}

Эта частота измеряется калибратором и сравнивается с целевым значением. Затем значение калибровки генератора (OSCCAL) корректируется соответствующим образом и записывается в EEPROM целевой ATtiny. Этот процесс повторяется до тех пор, пока не будет найдено значение OSCCAL, которое приводит к наименьшему отклонению частоты.

Последовательный программатор высокого напряжения

Код для высоковольтного последовательного программатора (HVSP) совершенно прост. Проще говоря, для каждого действия по линиям данных в целевой ATtiny отправляется серия инструкций, и считывается соответствующий ответ.

Измерение частоты

Таймеры/счетчики ATtiny84 используются для измерения частоты. PB0 целевого ATtiny, который выводит сигнал с частотой 1/16 собственного генератора, подключен к входу T0 ATtiny84. Timer0 считает импульсы на T0, а timer1 останавливает измерение через 32 миллисекунды. Исходя из этого, можно рассчитать частоту генератора целевого ATtiny.

Схема приставки контур

Автор статьи схему доработал относительно первоисточника, посему оригинал не прилагаю, плата и файл прошивки в общем архиве. Теперь возьмем неизвестный нам контур — приставка для измерения резонансной частоты контура.

Вставляем в не совсем пока удобную панельку, для проверки девайса сойдет, смотрим результат измерений:

Частотомер калибровался и тестировался на кварцевом генераторе 4 МГц, результат был зафиксирован такой: 4,00052 МГц. В корпусе частотомера решил вывести питание и на приставку +9 Вольт, для этого был сделан простой стабилизатор +5 В, +9 В, его плата на фото:

Забыл добавить, плата частотомера разведена немного к верху задом — для удобства съёма pic микроконтроллера, вращении подстроечного конденсатора, минимальной длины дорожек на LCD.

Теперь частотомер выглядит вот так:

Единственное, не стал исправлять пока ошибку в надписи мгГц, а так всё на 100% рабочее. Сборка и испытание схемы — ГУБЕРНАТОР.

Схема простого частотомера

Схема частотомера довольно простая, большинство функций выполняет микроконтроллер. Единственное, для микроконтроллера необходим усилительный каскад, чтобы увеличить входное напряжения с 200-300 мВ до 3 В. Транзистор, включенный по схеме с общим эмиттером, обеспечивает псевдо-TTL сигнал, поступающий на вход микроконтроллера. В качестве транзистора необходим какой-нибудь «быстрый» транзистор, я применил BFR91 — отечественный аналог КТ3198В.

Напряжение Vкэ устанавливается на уровне 1.8-2.2 вольта резистором R3* на схеме. У меня это 22 кОм, однако может потребоваться корректировка. Напряжение с коллектора транзистора прикладывается к входу счетчика/таймера микроконтроллера PIC, через последовательное сопротивление 470 Ом. Для выключения измерения, в PIC задействываются встроенные pull-down резисторы. В PIC реализован 32-битный счетчик, частично аппаратно, частично софтово. Подсчет начинается после того, как выключаются встроенные pull-down резисторы микроконтроллера, продолжительность составляет точно 0.4 секунды. По истечении этого времени, PIC делит полученное число на 4, после чего прибавляет или отнимает соответствующую промежуточную частоту, для получения реальной частоты. Полученная частота конвертируется для отображения на дисплее.

Для того, чтобы частотомер работал правильно, его необходимо откалибровать. Проще всего это сделать так: подключить источник импульсов с заранее точно известной частотой и вращая подстроечный конденсатор выставить необходимые показания. Если данный метод не подходит, то можно воспользоваться «грубой калибровкой». Для этого, выключите питание прибора, а 10 ножку микроконтроллера подсоедините на GND. Затем, включите питание. МК будет измерять и отображать внутреннюю частоту.

Если вы не можете подстроить отображаемую частоту (путем подстройки конденсатора 33 пФ), то кратковременно подсоедините вывод 12 или 13 МК к GND. Возможно, что это нужно будет сделать несколько раз, так как программа проверяет эти выводы только один раз за каждое измерение (0.4 сек). После калибровки, отключите 10 ногу микроконтроллера от GND, не выключая при этом питания прибора, чтобы сохранить данные в энергонезависимой памяти МК.

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

Аппаратное обеспечение

ИК-светодиод излучает свет, который отражается вращающимся объектом и обнаруживается ИК-фотодиодом. Фотодиод меняет свою проводимость в зависимости от силы отраженного света. Если у вращающегося объекта есть только одна белая полоса, а вся остальная поверхность темная, то фотодиод изменяет свое сопротивление дважды за оборот.

Стенд для пайки со светодиодной подсветкой
Материал: АБС + металл + акриловые линзы. Светодиодная подсветка…

Подробнее

Напряжение в точке соединения фотодиода и резистора сопротивлением 10 кОм поднимается один раз выше и снижается один раз ниже заданного порогового значения, которое задается переменным резистором.

Если вы хотите использовать для питания устройства «таблетку», помните, что в этом случае будет работать только литий-ионные аккумуляторные батареи типа LIR1220. Обычные батарейки CR1220 не смогут обеспечить достаточной мощности.

Похожие:

3 Основные технические характеристикиРуководство предназначено для изучения конструкции, принципа действия и правил эксплуатации весов автомобильных электронных ва скиф-М,…

Техническое задание основные технические характеристики сверлильно-фрезерного…Основные технические характеристики сверлильно-фрезерного обрабатывающего центра с чпу тс-510 (2 ед.)

3. Основные технические характеристики

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

Общие технические…

Технические характеристикиТехнические характеристики аттракциона могут быть изменены в сторону улучшения без предварительного оповещения

Настоящий паспорт является документом, удостоверяющим гарантированные…Настоящий паспорт является документом, удостоверяющим гарантированные предприятием-изготовителем основные параметры и технические…

ВниманиеНастоящее руководство по эксплуатации удостоверяет основные параметры и технические характеристики мультиметра цифрового специализированного…

Руководство по эксплуатации ш. 02

00. 00 РэРэ является документом, удостоверяющим гарантированные предприятием-изготовителем основные параметры и технические характеристики…

Технического контроляНастоящий паспорт является документом, удостоверяющим гарантированные предприятием изготовителем основные параметры и технические…

Технического контроляНастоящий паспорт является документом, удостоверяющим гарантированные предприятием изготовителем основные параметры и технические…

Руководство по эксплуатации ст 27. 00. 00. 000-а рэКроме того, рэ является документом, удостоверяющим гарантированные предприятием-изготовителем основные параметры и технические характеристики…

Основные технические характеристикиМашина позволяет производить вышивку на готовых изделиях и элементах кроя по всем типам материала, включая кожу

Техническая часть функциональные характеристики, технические и качественные…Портативный фетальный допплер-анализатор предназначен для диагностики сердцебиения плода

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

Руководство по эксплуатации шмг1Н. 00. 00. 000 РэКроме того, рэ является документом, удостоверяющим гарантированные предприятием изготовителем основные параметры и технические характеристики…

Руководство по эксплуатации опк. 00. 000РЭКроме того, рэ является документом, удостоверяющим гарантированные предприятием-изготовителем основные параметры и технические характеристики…

Руководство, инструкция по применению

Инструкция, руководство по применению

Программное обеспечение

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

Прерывание запускается на каждом заднем фронте выхода компаратора, которое сохраняет текущее значение timer0 и перезапускает таймер. 8-битный таймер расширяется до 16-битного с помощью прерывания переполнения таймера.

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

Паяльная станция 2 в 1 с ЖК-дисплеем
Мощность: 800 Вт, температура: 100…480 градусов, поток возду…

Подробнее

Полученное значение частоты вращения отображается на OLED-дисплее с шиной I²C. Реализация протокола I²C основана на простом методе передачи битов. Метод был специально разработан для ограниченных в ресурсах контроллеров ATtiny13 и ATtiny10.

Функции OLED адаптированы для модуля SSD1306 128×32 OLED, но их можно легко изменить для использования с другими модулями. В целях экономии ресурсов реализованы только основные функции, необходимые для этого устройства.

Схема и описание работы частотомера на микроконтроллере AVR ATtiny2313

В данной статье представлена простая и надежная схема частотомера, реализованная на основе микроконтроллера ATtiny2313 (семейство AVR). С ее помощью можно измерять частоты до 65 кГц включительно. Программа для микроконтроллера написана на BascomAVR – нечасто уже используется, но может быть кто то его еще юзает, поэтому, надеюсь, кому то еще эта схема пригодится. В дальнейшем уже буду публиковать схемы с использованием более современных программно-аппаратных схем.

Отображение частоты производится на дисплее 16*2, но обязательно с контроллером HD44780 или аналогичным KS066.. Для питания прибора подойдет напряжение от 5 до 9 вольт.

Подсчет числа импульсов производится при помощи подсчитывания импульсов по нарастающему фронту на ноге 9 микроконтроллера (PD.5/T1 и вход таймера Timer1). Два диода 1N4148 и резистор на 10 кОм необходимы для защиты входа от перенапряжения.

Для работы схемы у микроконтроллера необходимо прошить fuse bits, чтобы задействовать режим работы с внешним кварцевым резонатором (данная операция уже много где в сети описана, поэтому здесь не будем отвлекаться на это).

Текст программы написан на бэйсике в среде BascomAVR. Демо версия этой программы имеет ограничение по размеру кода в 4 Кб, но этого нам вполне хватает. Скачать BascomAVR можно с официального сайта ее разработчика — www.mcselec.com. В программе задействованы 2 таймера: таймер0 служит для отсчета фиксированных интервалов времени (в рассматриваемом нами случае 1 секунда, можно изменять), а таймер1 осуществляет подсчет импульсов, пришедших за это время.

Необходимо отметить, что подсчет числа импульсов будет производиться только в том случае, если уровень сигнала на контакте 9 будет равен уровню логической «1» (примерно 3-5 вольт). Timer0 работает на дефолтной частоте (то есть которая установлена в нем по умолчанию) микроконтроллера ATtiny2313, равной 8 МГц, делитель тактовой частоты не используется. Чтобы увеличить верхний предел измерения частоты (65 кГц) необходимо использовать внешний кварц с большей тактовой частотой и немного изменить прошивку.

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

  Frequency (14,0 KiB, 80 hits)

Простой частотомер на микросхеме своими руками — характеристики и схема

Параметры предлагаемого частотомера приведены в следующей таблице:

Режим работы Частотомер Частотомер Цифровая шкала
Диапазон измерений 1 Гц…20 МГц 1–200 МГц 1–200 МГц
Дискретность 1 Гц 10 Гц 100 Гц
Чувствительность 40 мВ 100 мВ 100 мВ

Данный частотомер обладает целым рядом преимуществ по сравнению с предшествующими:

  • современная дешевая и легко доступная элементная база;
  • максимальная измеряемая частота — 200 МГц;
  • совмещение в одном приборе частотомера и цифровой шкалы;
  • возможность увеличения максимальной измеряемой частоты до 1,2 ГГц при незначительной доработке входной части прибора;
  • возможность коммутации во время работы до 4 ПЧ.

Принципиальная схема частотомера и необходимые детали

Список необходимых радиоэлементов:

  • 6 микросхем — DD1 (К555ЛА3); DD2 (К193ИЕ3); DD4 (КР1816ВЕ31); DD5, DD7 (2хК555ИР22); DD6 (К555ИД7); DD8 (К573РФ2).
  • Логическая ИС (DD3) — К555ИЕ19.
  • 17 биполярных транзисторов (VT1, VT2–VT17) — КТ368А и 16хКТ361В
  • Стабилитрон (VD1) — КС113А.
  • 7 конденсаторов — С1 (0.01 мкФ); С2, С8 (2х0.1 мкФ); С3 (56 пФ); С4 (1000 пФ); С5 (22 пФ); С6 (12 пФ).
  • Подстроечный конденсатор (С7) — 5-20 пФ.
  • Электролитический конденсатор (С9) — 3.3 мкФ.
  • 41 резистор — R1 (51 Ом); R2, R25–R40 (17х68 кОм, R2 по ошибке в схеме указана как R3); R3 (10 кОм); R4, R6 (2х560 Ом); R5 (33 Ом); R6, R7 (2х1 кОм, в схеме по ошибке два резистора R6); R8–R23 (16х20 кОм); R24 (2 кОм).
  • Кварцевый резонатор (ZQ1) — 8.86 МГц.
  • Вакуумно люминисцентный индикатор (HL1) — ИВ-18.
  • Переключатель (S1)
  • Блок переключателей (S2)

Печатная плата частотомера и рекомендации по монтажу своими руками

Печатная плата частотомера:
Видео, как собрать частотомер на одной микросхеме:

Microchip ATmega328P

Вторым в нашем списке идет 8-разрядный AVR микроконтроллер ATmega328P.

Рисунок 3 – Микроконтроллер ATmega328P от Microchip

Выводы GPIO с возможностью генерирования прерываний

ATmega328P имеет 23 вывода GPIO, разделенных на три порта: PORTB (восемь выводов), PORTC (семь выводов) и PORTD (восемь выводов). Все выводы имеют возможность генерирования прерываний по изменению состояния на выводе. Однако отдельных флагов прерываний выводов нет, вместо этого флаг прерывания есть у каждого порта. Но два вывода на PORTD можно настроить как внешние прерывания, у них есть отдельные флаги прерывания.

Настройка прерываний

23 прерывания по изменению состояния на выводе предварительно настроены для обнаружения логического изменения значения на выводах (с 0 на 1 или с 1 на 0). Два внешних прерывания могут быть сконфигурированы для обнаружения только нарастающего фронта (изменение с 0 на 1), только спадающего фронта (изменение с 1 на 0) или постоянного значения 0. Прерывание по изменению состояния на выводе для каждого вывода может быть отдельно включено или выключено. Кроме того, может быть включено или выключено прерывание для каждого порта.

Флаг прерывания для порта или любого из выводов внешних прерываний устанавливается всегда, когда происходит событие, для которого он настроен, независимо от того, включено ли прерывание или выключено. Кроме того, флаг будет установлен независимо от того, настроен ли вывод как выход или как вход.

Вектор прерывания, обработчик и приоритеты

Каждый порт имеет один вектор прерывания (у PORTB – это PCINT0, у PORTC – это PCINT1, у PORTD – это PCINT2). Кроме того, каждый вывод внешнего прерывания имеет свой собственный отдельный вектор (вывод 2 в PORTD – INT0, а вывод 3 в PORTD – INT1). Каждый вектор прерывания может быть включен или отключен индивидуально, но это делается в периферийном устройстве GPIO, а не в контроллере прерываний (то есть контроллер прерываний не имеет возможности отдельного включения векторов прерываний, и все разрешения векторов прерываний выполняются в периферийных устройствах).

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

В ATmega328P приоритеты прерываний фиксированы и не могут быть изменены. После прерывания сброса прерывания выводов имеют самый высокий приоритет среди всех прерываний в следующем порядке: INT0, INT1, PCINT0, PCINT1, PCINT2.

Обработчики прерываний в ATmega328P могут быть прерваны прерываниями с более высоким приоритетом, но это не происходит автоматически. Когда запускается обработчик прерывания, CPU отключает все прерывания. Вы должны вручную включить прерывания в коде своего обработчика, чтобы разрешить вытеснение. Кроме того, существует регистр, называемый регистром состояния AVR, который является частью CPU, и значение которого CPU не сохраняет автоматически перед входом в прерывание и не восстанавливает после выхода из прерывания. Вы должны в своем обработчике прерывания сохранить и восстановить его значение. Причина, по которой вы должны это сделать, заключается в том, что CPU должен возобновить работу в том состоянии, в котором он находился до возникновения прерывания. Возможно, что действия, которые вы выполняете в своем обработчике, могут изменить этот регистр, поэтому, если вы не сохраните значение, которое он имел до начала ваших действий, и не восстановите его, CPU после вашего прерывания вернется в другое состояние, что может трудноуловимые ошибки в вашей системе.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Электрик в доме
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: