Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

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

Непрочитано 17.05.2013, 11:38  
Vovich1974
Частый гость
 
Регистрация: 31.10.2008
Сообщений: 11
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vovich1974 на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Ну, ТС таки не уточнил. Я не совсем понимаю, зачем цепляться за С, если С++ дает ощутимо больше плюсов (каламбурчик однако). Разве что под малые контроллеры писать на С...
Реклама:
Vovich1974 вне форума  
Непрочитано 17.05.2013, 12:05  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Сообщение от lsa Посмотреть сообщение
Только теперь нужно получить адрес m1 и заменить загрузку двух байт в стек на нужные числа.
как вариант можно использовать
а можно ли получить адрес метки или начала блока в Си официально ?
MaxiMuz79 вне форума  
Непрочитано 17.05.2013, 12:07  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Сообщение от Vovich1974 Посмотреть сообщение
Ну зачем же так извращаться.... А может стоит вспомнить о паре try-catch ?
насколько я понимаю это уже С++ , я использую avr-gcc-4.7.1
MaxiMuz79 вне форума  
Непрочитано 17.05.2013, 12:13  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

MaxiMuz79, не понял, чем не устраивает https://kazus.run/forums/showpost.ph...5&postcount=16 ? Никаких наворотов и извратов,
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 17.05.2013, 13:52  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

akegor, собственно причины здесь: https://kazus.run/forums/showthread.php?t=104418
MaxiMuz79 вне форума  
Непрочитано 17.05.2013, 15:03  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Насколько я понял из https://kazus.run/forums/showpost.ph...50&postcount=1 нужно просто уйти в тупик? Тогда непонятна забота о стеке...
"Возникла ситуация когда при обработке прерывания нужно изменить привычный ход программы, когда содержимое сохранненых регистров и указатель стека уже не важны" - непонятен Ваш предыдущий ответ.
Ну, хозяин - барин, ему видней...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 17.05.2013, 20:35  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Сообщение от akegor Посмотреть сообщение
нужно просто уйти в тупик?
да но перед тем как закончить нужно в цикле вызывать функцию , а при вызове в теле прерывания функции по умолчанию сохраняется в стеке вся верхняя половина регистрового файла !
MaxiMuz79 вне форума  
Непрочитано 17.05.2013, 22:22  
electroTrash
Прописка
 
Регистрация: 05.01.2013
Сообщений: 195
Сказал спасибо: 11
Сказали Спасибо 24 раз(а) в 21 сообщении(ях)
electroTrash на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

почему бы вам тогда при инициализации не разместить по адресу вектора прерывания соответствующей асм. вставкой маш. код. (rjmp interr_label). Да, не Си, но за все надо платить.
electroTrash вне форума  
Непрочитано 17.05.2013, 22:23  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Честно, не понимаю проблемы. Вызывается функция, заталкиваются в стек регистры, кончилась функция - стек освободился, следующий вызов в цикле приводит к тем же действиям. В чем собака роется?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 17.05.2013, 23:43  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: GCC: Аварийный выход из прерывания (функции)

Сообщение от electroTrash Посмотреть сообщение
почему бы вам тогда при инициализации не разместить по адресу вектора прерывания соответствующей асм. вставкой маш. код. (rjmp interr_label). Да, не Си, но за все надо платить.
ничего не понял. Вообще частично проблема решилась асм вставкой
asm("rjmp 0x1234");
только после первой компиляции остается правильно подобрать адрес. Культурно определять адрес нужного места в программе я пока не научился.
Цитата:
В чем собака роется?
не знаю в чем собака роется , но то что вы предлагаете идет в разрез с моими представлениями морали в программировании : программа должна быть по возможности быстрой и компактной.
MaxiMuz79 вне форума  
 
Опции темы

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

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, время: 21:18.


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