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

 
 
> TMS320LF24XX - модификация одного бита в регистре порта ввода вывода., Проблема с прерываниями.
bgc
сообщение May 6 2007, 18:44
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 313
Регистрация: 30-07-06
Из: Москва
Пользователь №: 19 188



На шестом году работы с TMS320LF2407 обнаружил забавную проблему в системе команд + транслятор:

Работаю в CCS 3.1 на C.

Оказалось, что TMS не может за одну команду изменить значение одного бита в байте регистра ввода вывода. Следовательно, если я управляю ножками одного регистра из обработчика прерывания и из фоновой программы, то для изменения одного бита в фоновой программе необходимо закрывать прерывания на 3 команды. Гиморой!!!

Ладно, готов я был в макре, которая управляет портами закрыть прерывания, но тогда макро разное для фоновой программы и для секций с закрытыми уже масками прерывания. Надо сохранять занчение регистра ST0 перед закрыванием прерывания, а сохранить текущее значения флага разрешения прерывания (in ST0) можно только через ассемблер, да и то не одной командой, да еще делать это надо аккуратно, чтобы не нарушить состояние регистров важных для процедуры С.

Я на это наткнулся через 6 лет после начала работы с этим процессором, и до этого ни разу эта проблема меня не беспокоила... (ну причина правда простая - Я крайне редко ножками процессора дергал, обычно за это отвечала встроенная перефферия).

Так вот, кто и как решает эту проблему под С? Наверное, есть готовое решение?


--------------------
Окружающий мир - не иссякающий источник сюрпризов!
Go to the top of the page
 
+Quote Post



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

 


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


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