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

 
 
> avr проблемы с volatile переменной
mjpronin
сообщение Oct 5 2011, 18:38
Сообщение #1


Участник
*

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



Здравствуйте! Доброго Вам времени суток.

Помогите, пожалуйста, разобраться с проблемой. Необходимо использовать переменную, которая может быть изменена как по ходу программы, так и в прерывании. Думаю, многие уже воскликнули: просто он забыл объявить её как volatile, вот и мучается. Нет, не забыл, но почему-то всё происходит, как будто контроллер не замечает её изменения.

Я думаю, должно быть так: сначала «b» пока нет прирывания, потом один раз «а» и опять «b» пока опять не будет прерывание. А получается сначала «b», после прерывания «а» «b». Думаю, я что-то напутал.

Код
#define WORK 1
#define SEND 2
volatile char answer = WORK;

int main ()
{
    sei();    

    while (1)
        {
                   
            printf("b\n");

            if(answer == SEND)
                                       {
        
                                         printf("a\n");
                                         answer = WORK;        
        
                                        }
                        
        };
    
    return 0;
}

ISR(USART_RXC_vect)
{
              answer = SEND;        
}
Go to the top of the page
 
+Quote Post



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

 


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


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