Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

GCC: Аварийный выход из прерывания (функции)

Непрочитано 18.05.2013, 13:15  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,458
Сказал спасибо: 3,227
Сказали Спасибо 3,511 раз(а) в 2,392 сообщении(ях)
ForcePoint на пути к лучшему
Вопрос Re: GCC: Аварийный выход из прерывания (функции)

Сообщение от electroTrash Посмотреть сообщение
Это можно сделать с помощью асм. вставок, данный вариант некрасив и небезопасен, уж лучше определить массив достаточного размера в памяти программы и в нем уже разместить асм. программу.
Пожалуйста поясните насчёт небезопасности (в контексте начального загрузчика).
Что касается массива, то это представляется мне излишеством, т.к. приложение и начальный загрузчик - совершенно незасимы друг от друга. Приложение может только вызвать загрузчик и ничего более. Загрузчик может только запустить свежепереписанное приложение с 0 (или, если угодно, вызвать настоящий сброс через сторожевой таймер).
Реклама:
ForcePoint вне форума  
Непрочитано 18.05.2013, 18:30  
electroTrash
Прописка
 
Регистрация: 05.01.2013
Сообщений: 195
Сказал спасибо: 11
Сказали Спасибо 24 раз(а) в 21 сообщении(ях)
electroTrash на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Сообщение от ForcePoint Посмотреть сообщение
(в контексте начального загрузчика)
Я как раз имел ввиду случай ТС, у него программа обработки не расположена в секторе загрузчика, переход на обработчик прерывания должен быть размещен по вектору прерывания, к тому же у Вас нет штатного выход из программы, который тут необходим. Указывать явно расположение (адрес) функции обработки прерывания, может привести к проблемам, но можно определить массив достаточного размера или как у вас (я об этом тоже писал ранее) определить указатель на функцию и разместить ассемлером (stm) маш. код. jmp(call) ‹значение_указателя_на функцию›. Но, я думаю, ТС все же лучше сделать штатными директивами компилятора, наподобие указанного, а не придумывать себе проблемы.
electroTrash вне форума  
Непрочитано 19.05.2013, 20:39  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

akegor, но всетакие речь идет о GCC.
вот что порекомендовали:
http://gcc.gnu.org/onlinedocs/gcc-2....c_4.html#SEC64
в итоге:
Код:
void *ptr;
ISR (xxx_vect)
{
  ...
  ...
  goto *ptr;
}
void main (void)
{
  ptr=&&m1;
  ...
  while (1)
	{ ...
           ...
         }
m1:
  ...
  ...
}
MaxiMuz79 вне форума  
Непрочитано 19.05.2013, 22:28  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Сообщение от MaxiMuz79 Посмотреть сообщение
но всетакие речь идет о GCC
А в GCC pragma не работает на участок программы?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 20.05.2013, 01:45  
electroTrash
Прописка
 
Регистрация: 05.01.2013
Сообщений: 195
Сказал спасибо: 11
Сказали Спасибо 24 раз(а) в 21 сообщении(ях)
electroTrash на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

В GCC по другому:
Код:
ISR (xxx_vect) __attribute__ ((naked));
ISR (xxx_vect)
{
  ...
  ...
  goto m1;
}
electroTrash вне форума  
Непрочитано 20.05.2013, 07:42  
Vetal-soft
Временная регистрация
 
Регистрация: 04.08.2006
Сообщений: 67
Сказал спасибо: 2
Сказали Спасибо 20 раз(а) в 11 сообщении(ях)
Vetal-soft на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Если уж извращаться, то можно поступить так:
Вынести прерывание в отдельный файл, а функцию которая вызывается и в main, и в прерывании, описать полностью в хедере с ключевым словом static.

Последний раз редактировалось Vetal-soft; 20.05.2013 в 07:44.
Vetal-soft вне форума  
Непрочитано 20.05.2013, 08:19  
Someone
Гражданин KAZUS.RUN
 
Регистрация: 16.06.2005
Сообщений: 942
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Сообщение от MaxiMuz79 Посмотреть сообщение
программа должна быть по возможности быстрой и компактной.
Ну так что мешает вместо занятий глупостями писать компактный и быстрый код? В той теме уже советовали - пиши по человечески, я ссылку на апноту приводил, и так и не узнал, что же из апноты на ГЦЦ не только не работает, но и даёт противоположный результат (ухудшает производительность).
Someone вне форума  
Непрочитано 20.05.2013, 08:25  
Someone
Гражданин KAZUS.RUN
 
Регистрация: 16.06.2005
Сообщений: 942
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Сообщение от ForcePoint Посмотреть сообщение
Неясно только, что компилятор (GCC) делает последними двумя командами:
Ждёт конечно, пока 5й бит не установится (что говорит о том что УДР0 опустел), тогда пропустит переход, дальше пойдёт.
Someone вне форума  
Непрочитано 22.05.2013, 00:27  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Сообщение от Vetal-soft Посмотреть сообщение
Если уж извращаться, то можно поступить так:
Вынести прерывание в отдельный файл, а функцию которая вызывается и в main, и в прерывании, описать полностью в хедере с ключевым словом static.
результат абслоютно тотже самый что без static
MaxiMuz79 вне форума  
Непрочитано 22.05.2013, 06:36  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Чита-читал... И так и не понял, зачем изобретать велосипед в грубой извращенной форме?
Требуется: в случае аварийной ситуации по соответствующему прерыванию либо замереть, либо уйти на сброс (не принципиально). Застрять в обработчике прерывания навсегда - проблема? Либо автор недоговаривает, либо я чего-то не понимаю.
ПС Извращениями не наслаждаюсь...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аварийный подзарядник аккумулятора. Boryan Электроника средств транспорта 25 03.02.2012 07:27
HI-TECH PIC выход из прерывания Slava-martyn Микроконтроллеры, АЦП, память и т.д 6 12.12.2011 18:54
Как подключить аварийный светильник к более мощному аккумулятору? VOYA75 Источники питания и свет 11 18.11.2011 02:39
Аварийный фонарь, защита от переразряда Evlagor Источники питания и свет 17 16.03.2010 04:56
выход из прерывания vrt90 АЛЕКСАНДР Микроконтроллеры, АЦП, память и т.д 5 05.10.2004 12:18


Часовой пояс GMT +4, время: 14:21.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.