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

 
 
 
Reply to this topicStart new topic
> USART_RXC_vect и TIMER1_OVF_vect, Непойму почему так
Tcom
сообщение May 17 2007, 01:39
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Вот разработал я устройство, написал программу, всё работает. НО!
Смысл в чём, по переполнению таймера 1 выполняется подпрограмма анализа состояния размыкателей.
На прерывании по приему байта по UART , устройство передаёт свои значения, которые насобирали за определенный период, а теперь вопрос.
Почему когда МК передаёт данные в UART, не работает прерывание от таймера, меня на 100% устраивает то, что передача будет прерываться. Главное для меня не пропустить захват события обрабатываемое прерыванием от счётчика.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 17 2007, 02:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Tcom @ May 17 2007, 08:39) *
Вот разработал я устройство, написал программу, всё работает. НО!
Смысл в чём, по переполнению таймера 1 выполняется подпрограмма анализа состояния размыкателей.
На прерывании по приему байта по UART , устройство передаёт свои значения, которые насобирали за определенный период, а теперь вопрос.
Почему когда МК передаёт данные в UART, не работает прерывание от таймера, меня на 100% устраивает то, что передача будет прерываться. Главное для меня не пропустить захват события обрабатываемое прерыванием от счётчика.

1. Без специальных мер вложенные прерывания запрещены, т.е. во время одного прерывания другое произойти не может. Но есть в принципе влияние двух процессов друг на друга возможно.
2. Но! Если все написано правильно, то оно, как правило, не происходит. Это еще нужно умудриться так закодировать, чтобы несложные процессы влияли друг на друга, поскольку задержка выполнения одного из прерываний обычно незначительна.
Так что объясняйте, как Вам это удалось? smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
mdmitry
сообщение May 17 2007, 02:17
Сообщение #3


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Dog Pawlowa опередил с ответом. smile.gif
1. Посмотрите, что у Вас в прерывании по UART происходит.
2. Какой период работы таймера и сколько времени от периода длится прерывание. Может быть у Вас частые прерывания и контроллер на пределе возможностей. В этом случае пропуск прерываний по таймеру неизбежен при обработке других прерываний.

Сообщение отредактировал mdmitry - May 17 2007, 02:19


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение May 17 2007, 02:19
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(Tcom @ May 17 2007, 09:39) *
Вот разработал я устройство, написал программу, всё работает. НО!
Смысл в чём, по переполнению таймера 1 выполняется подпрограмма анализа состояния размыкателей.
На прерывании по приему байта по UART , устройство передаёт свои значения, которые насобирали за определенный период, а теперь вопрос.
Почему когда МК передаёт данные в UART, не работает прерывание от таймера, меня на 100% устраивает то, что передача будет прерываться. Главное для меня не пропустить захват события обрабатываемое прерыванием от счётчика.


Приоритеты можно рганизовать программно, например, в процедуре обработки от одного источника запретить прерывания от источников с меньшим приоритетом, разрешить с большим и сделать глобальное разрешение. Но делать это нужно очень аккуратно, следить за стеком и обеспечить перед выходом корректное восстановление всех разрешений запретов.
Go to the top of the page
 
+Quote Post
IEC
сообщение May 17 2007, 03:37
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Привходе в прерывание сбрасывается флаг разрешения прерывания, при выходе из прерывания он восстанавливается.
Для того чтобы сделать вложенное прерывание:
в обработчике прерывания от УАПП программно устанавливайте флаг разхрешения прерывания. Тогда, если при обработке прерывания от УАПП возникнет прерывание от таймера, то программа передаст управление на его обработчик.
Go to the top of the page
 
+Quote Post
Tcom
сообщение May 17 2007, 04:47
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Респект IEC !! Я забыл про эту фишку всё заработало спасибо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 1st September 2025 - 21:12
Рейтинг@Mail.ru


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