Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USART_RXC_vect и TIMER1_OVF_vect
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Tcom
Вот разработал я устройство, написал программу, всё работает. НО!
Смысл в чём, по переполнению таймера 1 выполняется подпрограмма анализа состояния размыкателей.
На прерывании по приему байта по UART , устройство передаёт свои значения, которые насобирали за определенный период, а теперь вопрос.
Почему когда МК передаёт данные в UART, не работает прерывание от таймера, меня на 100% устраивает то, что передача будет прерываться. Главное для меня не пропустить захват события обрабатываемое прерыванием от счётчика.
Dog Pawlowa
Цитата(Tcom @ May 17 2007, 08:39) *
Вот разработал я устройство, написал программу, всё работает. НО!
Смысл в чём, по переполнению таймера 1 выполняется подпрограмма анализа состояния размыкателей.
На прерывании по приему байта по UART , устройство передаёт свои значения, которые насобирали за определенный период, а теперь вопрос.
Почему когда МК передаёт данные в UART, не работает прерывание от таймера, меня на 100% устраивает то, что передача будет прерываться. Главное для меня не пропустить захват события обрабатываемое прерыванием от счётчика.

1. Без специальных мер вложенные прерывания запрещены, т.е. во время одного прерывания другое произойти не может. Но есть в принципе влияние двух процессов друг на друга возможно.
2. Но! Если все написано правильно, то оно, как правило, не происходит. Это еще нужно умудриться так закодировать, чтобы несложные процессы влияли друг на друга, поскольку задержка выполнения одного из прерываний обычно незначительна.
Так что объясняйте, как Вам это удалось? smile.gif
mdmitry
Dog Pawlowa опередил с ответом. smile.gif
1. Посмотрите, что у Вас в прерывании по UART происходит.
2. Какой период работы таймера и сколько времени от периода длится прерывание. Может быть у Вас частые прерывания и контроллер на пределе возможностей. В этом случае пропуск прерываний по таймеру неизбежен при обработке других прерываний.
VladimirYU
Цитата(Tcom @ May 17 2007, 09:39) *
Вот разработал я устройство, написал программу, всё работает. НО!
Смысл в чём, по переполнению таймера 1 выполняется подпрограмма анализа состояния размыкателей.
На прерывании по приему байта по UART , устройство передаёт свои значения, которые насобирали за определенный период, а теперь вопрос.
Почему когда МК передаёт данные в UART, не работает прерывание от таймера, меня на 100% устраивает то, что передача будет прерываться. Главное для меня не пропустить захват события обрабатываемое прерыванием от счётчика.


Приоритеты можно рганизовать программно, например, в процедуре обработки от одного источника запретить прерывания от источников с меньшим приоритетом, разрешить с большим и сделать глобальное разрешение. Но делать это нужно очень аккуратно, следить за стеком и обеспечить перед выходом корректное восстановление всех разрешений запретов.
IEC
Привходе в прерывание сбрасывается флаг разрешения прерывания, при выходе из прерывания он восстанавливается.
Для того чтобы сделать вложенное прерывание:
в обработчике прерывания от УАПП программно устанавливайте флаг разхрешения прерывания. Тогда, если при обработке прерывания от УАПП возникнет прерывание от таймера, то программа передаст управление на его обработчик.
Tcom
Респект IEC !! Я забыл про эту фишку всё заработало спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.