реклама на сайте
подробности

 
 
> прерывание EINT, прерывание EINT
vladimir_orl
сообщение Jul 15 2013, 04:45
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 18-09-12
Из: Орёл
Пользователь №: 73 591



Здравствуйте. Пишу программный эмулятор SPI (mega128) с использованием внешнего прерывания EINT2. Номер режима SPI - 3, прерывание настроено по фронту. Вначале включение-отключение программного блока происходило управлением переменной

Код
ISR (INT2_vect)
{
    if (m_enable_collect == TRUE){
                 ....
                 ....
                 ....
    {
}



Всё работало. Но для ускорения и снижения накладных расходов на проверку переменной решил управлять с помощью выставления и снимания бита в EIMSK.


Код
if (m_SPI_start){
    EIFR = 0;
    EIMSK = (1 << INT2);
} else {
    EIFR = 0;
    EIMSK = 0;
}



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

1. До
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- vladimir_orl   прерывание EINT   Jul 15 2013, 04:45


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 17:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01343 секунд с 7
ELECTRONIX ©2004-2016