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

 
 
 
Reply to this topicStart new topic
> Status Register, Проверка его содержимого
Grigorij
сообщение Jan 29 2008, 08:45
Сообщение #1


Участник
*

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



Вопрос наверное немного глупый, но все же. Возможно ли на СИ добраться до содержимого Status Register?

Сразу отвечу зачем мне это надо. Имеем следующую ф-цию (используется для MSP430F2131):

Код
void Name(void)
{
     __disable_interrupt();

     //здесь делаем что-либо
    
     //необходимо восстановить значение бита GIE, которое было до захода
     //в ф-цию
}


Конечно возможно решение в лоб. Ввести глобальную переменную, например, char _gie, которая будет соответствовать состоянию бита GIE. Однако решение, по моему, через чур грубое.
Go to the top of the page
 
+Quote Post
VAI
сообщение Jan 29 2008, 08:58
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Если используете ИАР:
загляните в файл "....\430\inc\intrinsics.h"

Код
int myfunk( .... )
{
.......
istate_t i;

    i = __get_interrupt_state();                                  // сохраним статус прерываний
    __disable_interrupt();                                        // Запретим прерывания
......
......
      __set_interrupt_state( i );                                 // востановим статус прерываний
......
......
}


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
diper
сообщение Jan 29 2008, 09:06
Сообщение #3


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

Группа: Свой
Сообщений: 94
Регистрация: 12-11-05
Из: Росиия, Нижний Новгород
Пользователь №: 10 750



Код
__monitor void func (void)
{
...
}
Конечно если компилятор поддерживает...
Go to the top of the page
 
+Quote Post
Grigorij
сообщение Jan 29 2008, 09:32
Сообщение #4


Участник
*

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



Цитата(VAI @ Jan 29 2008, 11:58) *
Если используете ИАР:
загляните в файл "....\430\inc\intrinsics.h"

Код
int myfunk( .... )
{
.......
istate_t i;

    i = __get_interrupt_state();                                  // сохраним статус прерываний
    __disable_interrupt();                                        // Запретим прерывания
......
......
      __set_interrupt_state( i );                                 // востановим статус прерываний
......
......
}


Спасибо. То что надо.
Go to the top of the page
 
+Quote Post

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

 


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


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