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

 
 
> продолжить прерывание, atmega128 winavr
Mikron
сообщение Feb 9 2011, 14:07
Сообщение #1


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

Группа: Участник
Сообщений: 82
Регистрация: 1-03-10
Пользователь №: 55 731



Добрый день

есть некоторый код
Код
void funс(void){
    cli();
    ...
    sei();
}
ISR(INT0_vect){
    ...}
ISR(USART1_RX_vect){
    ...}
ISR(USART1_TX_vect){
   ...
   func();
   ...}
ISR(USART1_UDRE_vect){
...  }
...

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

Спасибо за помощь
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mikron
сообщение Feb 10 2011, 14:09
Сообщение #2


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

Группа: Участник
Сообщений: 82
Регистрация: 1-03-10
Пользователь №: 55 731



Цитата(ILYAUL @ Feb 9 2011, 19:15) *
Да и вот ещё , TX у Вас "младшее" по приоритету прерывание , смотря как написан код , Вы рискуете туда и не добраться

Возник вопрос, почему могу туда не добраться
Просто в документации на контроллер про прерывания написано

There are basically two types of interrupts. The first type is triggered by an event that
sets the interrupt flag. For these interrupts, the Program Counter is vectored to the
actual interrupt vector in order to execute the interrupt handling routine, and hardware
clears the corresponding interrupt flag. Interrupt flags can also be cleared by writing a
logic one to the flag bit position(s) to be cleared. If an interrupt condition occurs while the
corresponding interrupt enable bit is cleared, the interrupt flag will be set and remembered
until the interrupt is enabled, or the flag is cleared by software. Similarly, if one or
more interrupt conditions occur while the global interrupt enable bit is cleared, the corresponding
interrupt flag(s) will be set and remembered until the global interrupt enable bit
is set, and will then be executed by order of priority.

То есть произошел как бы запрос на прерывание, установился флаг, и рано или поздно оно все равно произойдет, а почему нет?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Mikron   продолжить прерывание   Feb 9 2011, 14:07
- - Палыч   Цитата(Mikron @ Feb 9 2011, 17:07) ...пре...   Feb 9 2011, 14:24
- - Xenia   Цитата(Mikron @ Feb 9 2011, 17:07) Функци...   Feb 9 2011, 14:48
- - ILYAUL   ЦитатаКогда я их снова разрешу, то могут возникнут...   Feb 9 2011, 16:15
- - Mikron   Всем огромное спасибо за помощь) Что-то я реально ...   Feb 9 2011, 21:25
|- - Палыч   Цитата(Mikron @ Feb 10 2011, 00:25) ...фу...   Feb 10 2011, 07:15
|- - ILYAUL   Цитата(Mikron @ Feb 10 2011, 17:09) Возни...   Feb 10 2011, 18:39
|- - ReAl   Цитата(ILYAUL @ Feb 10 2011, 20:39) Кстат...   Feb 11 2011, 07:31
- - _Артём_   Кодvoid func(void) { unsigned char savSR...   Feb 10 2011, 14:18
|- - Палыч   Цитата(_Артём_ @ Feb 10 2011, 17:18) Разв...   Feb 10 2011, 15:20
- - _Pasha   Ето винавр, проснитесь! Код#include <util/...   Feb 11 2011, 05:07
- - ILYAUL   Цитата(_Pasha @ Feb 11 2011, 08:07) Стал...   Feb 11 2011, 11:36
- - demiurg_spb   Цитата(ILYAUL @ Feb 11 2011, 14:36) При п...   Feb 11 2011, 11:40
|- - ILYAUL   Цитата(demiurg_spb @ Feb 11 2011, 14:40) ...   Feb 11 2011, 13:21
|- - Палыч   Цитата(ILYAUL @ Feb 11 2011, 16:21) У Вас...   Feb 11 2011, 14:57
|- - demiurg_spb   Похоже Илья упускает момент буферирования регистра...   Feb 11 2011, 15:25
|- - Палыч   Цитата(demiurg_spb @ Feb 11 2011, 18:25) ...   Feb 11 2011, 15:51
||- - demiurg_spb   Цитата(Палыч @ Feb 11 2011, 18:51) А, раз...   Feb 12 2011, 08:25
|- - ILYAUL   Цитата(demiurg_spb @ Feb 11 2011, 18:25) ...   Feb 11 2011, 18:16
|- - Палыч   Цитата(ILYAUL @ Feb 11 2011, 21:16) Итог:...   Feb 11 2011, 19:01
|- - ILYAUL   Цитата(Палыч @ Feb 11 2011, 22:01) Да, US...   Feb 11 2011, 21:40
|- - _Pasha   Цитата(ILYAUL @ Feb 12 2011, 00:40) Но эт...   Feb 11 2011, 22:22
|- - ILYAUL   Цитата(_Pasha @ Feb 12 2011, 01:22) Эта а...   Feb 12 2011, 11:17
|- - _Pasha   Цитата(ILYAUL @ Feb 12 2011, 15:17) Вот и...   Feb 12 2011, 11:43
|- - demiurg_spb   Цитата(ILYAUL @ Feb 12 2011, 14:17) Давай...   Feb 12 2011, 13:05
|- - ILYAUL   Цитата(demiurg_spb @ Feb 12 2011, 16:05) ...   Feb 13 2011, 04:45
- - _Pasha   Цитата(ILYAUL @ Feb 11 2011, 14:36) Причё...   Feb 11 2011, 15:40


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

 


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


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