| Ваш IP: 100.26.179.251 | Online(37) - гости: 7, боты: 30 | Загрузка сервера: 0.65 ::::::::::::

Работа с прерываниями PCINT0…7

ATtiny2313


PCINT0…7 — это входы для внешнего прерывания которое срабатывает при изменении состояния на входах PCINT7..0.

Для ATtiny2313 входы PCINT0..7 соответствуют входам PB0..7.

За внешние прерывания отвечают три регистра.

 

Регистр GIMSK — разрешает прерывания

7 6 5 4 3 2 1 0
PCIE

Прерывания на выводах PCINT0…7 разрешено, если PCIE бит установлен в 1. Любое изменение на любом из выводов PCINT0…7 сгенерирует прерывание.

Пример использования:

GIMSK |= (1 << PCIE); // разрешает прерывания на PCINT0…7

 

Регистр PCMSK — маска прерываний

7 6 5 4 3 2 1 0
PCINT7 PCINT6 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0

Каждый бит из PCINT0…7 отвечает за свой вывод. Установка какого-нибудь бита из PCINT0…7 разрешает соответствующему выводу работать в качестве источника.

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

Пример использования:

PCMSK |= (1<<PCINT0) | (1 << PCINT3); // разрешает входам PCINT0 и PCINT3 работать в качестве источника прерываний.

 

Регистр флагов — EIFR

7 6 5 4 3 2 1 0
PCIF

При смене логического уровня на любом из выводов PCINT0…7 происходит вызов прерывания, при этом устанавливается соответствующий флаг прерывания PCIF. Этот флаг очищается аппаратно после выхода из подпрограммы обработки прерывания.

 

Обработчики прерывания PCINT_vect

Пример использования:

ISR(PCINT_vect){ // — код — //} — при возникновении прерывания исполняется // — код — //

 

Пример:

byte i;

void setup() {
  DDRD |= (1 << 5); //  PD5 - выход
  DDRB &= ~(1 << 0);PORTB |= (1 << 0); // вход PCINT0 как вход, использовать подтягивающий резистор
  DDRB &= ~(1 << 3);PORTB |= (1 << 3); // вход PCINT3 как вход, использовать подтягивающий резистор
  
  GIMSK |= (1 << PCIE);// разрешает прерывания на PCIN

  PCMSK |= (1<<PCINT0) | (1 << PCINT3);// разрешает выходам работать в качестве источника

}

void loop() {
   PORTD |= (1 << 5); // PD5 выход 1
   if(i==1)delay(5000);i=0; // как сработает прерывание подождать 5 секунд
}

ISR(PCINT_vect){
  PORTD &= ~(1 << 5);
  i=1;
  } 

Светодиод подключенный к выходу PB5 горит всегда, если кратковременно замкнуть вход PCINT0 или PCINT3 на GND, светодиод погаснет на 5 секунд и загорится вновь.

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

Войти с помощью: 

Случайные статьи

  • Узел настройки УКВ-ЧМ приемника

    Узел настройки УКВ_ЧМ приемника представляет собой синтезатор напряжения для электронной настройки УКВ_ЧМ приемника и как дополнительное уст-во — электронную линейную шкалу напряжения для контроля напряжения подаваемого на варикапы приемника. Напряжение настройки приемника устанавливается при помощи полевого транзистора VT1, в его затворной цепи включен С1, при нажатии S1 или S2 С1 …Подробнее...
  • Стерео усилитель класса D 2*25Вт на базе TDA7490

    Стерео усилитель класса D 2*25Вт на базе TDA7490

    Микросхема TDA7490 имеет защиту от перенапряжения, тепловую и защиту от КЗ, так же микросхема имеет встроенные функции MUTE и STAND-BY. Усилитель на TDA7490 имеет следующие технические характеристики: Напряжение питания от +/-10В до +/-25В (номинальное напряжение +/-21В) Ток покоя от 70 до 120мА в зависимости от  напряжения питания Выходная мощность 25Вт …Подробнее...
  • Усилитель мощности звуковой частоты класса D на ИМС MAX9709

    Усилитель мощности звуковой частоты класса D на ИМС MAX9709

    Усилитель мощности звуковой частоты класса D на ИМС MAX9709 обеспечивает выходную мощность до 25Вт на канал (стерео) при нагрузке 8 Ом и 50Вт в режиме моно при нагрузке 4 Ом. ИМС MAX9709 обеспечивает высокую производительность (КПД 87%), при этом используется небольшой радиатор охлаждения. Напряжение питания усилителя от 10 до 22В. MAX9709  имеет …Подробнее...
  • Простой испытатель тиристоров

    Простой испытатель тиристоров

    Из подручных радиоэлементов можно собрать простой испытатель тиристоров, который состоит из трансформатора со вторичной обмоткой на 6,3В (0,5А), диода, конденсатора, лампы и трех переключателей. Выбор постоянного или переменного тока осуществляется переключателем SA2. Электроды тиристора подключаются при помощи зажимов, индикатор служит лампа накаливания 6,3Вх0,28А. Для проверки тиристора постоянным током переведите переключатель …Подробнее...
  • УМЗЧ на 50Вт на полевых MOSFET транзисторах

    УМЗЧ на 50Вт на полевых MOSFET транзисторах

    На рисунке показана схема 50 Вт усилителя с выходными полевыми MOSFET транзисторами. Первый каскад усилителя представляет собой дифференциальный усилитель на транзисторах VT1 VT2. Второй каскад усилителя состоит из транзисторов VT3 VT4. Оконечный каскад усилителя состоит из МОП-транзисторов IRF530 и IRF9530. Выход усилителя через катушку L1 соединен с нагрузкой 8 Ом. Цепь состоящий …Подробнее...