Перейти к содержанию
    

USART_RXC_vect и TIMER1_OVF_vect

Вот разработал я устройство, написал программу, всё работает. НО!

Смысл в чём, по переполнению таймера 1 выполняется подпрограмма анализа состояния размыкателей.

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

Почему когда МК передаёт данные в UART, не работает прерывание от таймера, меня на 100% устраивает то, что передача будет прерываться. Главное для меня не пропустить захват события обрабатываемое прерыванием от счётчика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот разработал я устройство, написал программу, всё работает. НО!

Смысл в чём, по переполнению таймера 1 выполняется подпрограмма анализа состояния размыкателей.

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

Почему когда МК передаёт данные в UART, не работает прерывание от таймера, меня на 100% устраивает то, что передача будет прерываться. Главное для меня не пропустить захват события обрабатываемое прерыванием от счётчика.

1. Без специальных мер вложенные прерывания запрещены, т.е. во время одного прерывания другое произойти не может. Но есть в принципе влияние двух процессов друг на друга возможно.

2. Но! Если все написано правильно, то оно, как правило, не происходит. Это еще нужно умудриться так закодировать, чтобы несложные процессы влияли друг на друга, поскольку задержка выполнения одного из прерываний обычно незначительна.

Так что объясняйте, как Вам это удалось? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Dog Pawlowa опередил с ответом. :)

1. Посмотрите, что у Вас в прерывании по UART происходит.

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

Изменено пользователем mdmitry

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот разработал я устройство, написал программу, всё работает. НО!

Смысл в чём, по переполнению таймера 1 выполняется подпрограмма анализа состояния размыкателей.

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

Почему когда МК передаёт данные в UART, не работает прерывание от таймера, меня на 100% устраивает то, что передача будет прерываться. Главное для меня не пропустить захват события обрабатываемое прерыванием от счётчика.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Для того чтобы сделать вложенное прерывание:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Респект IEC !! Я забыл про эту фишку всё заработало спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...