GCC: Аварийный выход из прерывания (функции)
17.05.2013, 11:38
|
|
|
Частый гость
Регистрация: 31.10.2008
Сообщений: 11
Сказал спасибо: 4
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: GCC: Аварийный выход из прерывания (функции)
Ну, ТС таки не уточнил. Я не совсем понимаю, зачем цепляться за С, если С++ дает ощутимо больше плюсов (каламбурчик однако). Разве что под малые контроллеры писать на С...
|
|
|
|
17.05.2013, 12:05
|
|
|
Гражданин KAZUS.RUN
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
|
Re: GCC: Аварийный выход из прерывания (функции)
Сообщение от lsa
|
|
Только теперь нужно получить адрес m1 и заменить загрузку двух байт в стек на нужные числа.
|
как вариант можно использовать
а можно ли получить адрес метки или начала блока в Си официально ?
|
|
|
|
17.05.2013, 12:07
|
|
|
Гражданин KAZUS.RUN
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
|
Re: GCC: Аварийный выход из прерывания (функции)
Сообщение от Vovich1974
|
|
Ну зачем же так извращаться.... А может стоит вспомнить о паре try-catch ?
|
насколько я понимаю это уже С++ , я использую avr-gcc-4.7.1
|
|
|
|
17.05.2013, 12:13
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: GCC: Аварийный выход из прерывания (функции)
MaxiMuz79, не понял, чем не устраивает https://kazus.run/forums/showpost.ph...5&postcount=16 ? Никаких наворотов и извратов,
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
17.05.2013, 13:52
|
|
|
Гражданин KAZUS.RUN
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
|
Re: GCC: Аварийный выход из прерывания (функции)
|
|
|
|
17.05.2013, 15:03
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: GCC: Аварийный выход из прерывания (функции)
Насколько я понял из https://kazus.run/forums/showpost.ph...50&postcount=1 нужно просто уйти в тупик? Тогда непонятна забота о стеке...
"Возникла ситуация когда при обработке прерывания нужно изменить привычный ход программы, когда содержимое сохранненых регистров и указатель стека уже не важны" - непонятен Ваш предыдущий ответ.
Ну, хозяин - барин, ему видней...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
17.05.2013, 20:35
|
|
|
Гражданин KAZUS.RUN
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
|
Re: GCC: Аварийный выход из прерывания (функции)
Сообщение от akegor
|
|
нужно просто уйти в тупик?
|
да но перед тем как закончить нужно в цикле вызывать функцию , а при вызове в теле прерывания функции по умолчанию сохраняется в стеке вся верхняя половина регистрового файла !
|
|
|
|
17.05.2013, 22:22
|
|
|
Прописка
Регистрация: 05.01.2013
Сообщений: 195
Сказал спасибо: 11
Сказали Спасибо 24 раз(а) в 21 сообщении(ях)
|
Re: GCC: Аварийный выход из прерывания (функции)
почему бы вам тогда при инициализации не разместить по адресу вектора прерывания соответствующей асм. вставкой маш. код. (rjmp interr_label). Да, не Си, но за все надо платить.
|
|
|
|
17.05.2013, 22:23
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: GCC: Аварийный выход из прерывания (функции)
Честно, не понимаю проблемы. Вызывается функция, заталкиваются в стек регистры, кончилась функция - стек освободился, следующий вызов в цикле приводит к тем же действиям. В чем собака роется?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
17.05.2013, 23:43
|
|
|
Гражданин KAZUS.RUN
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
|
Re: GCC: Аварийный выход из прерывания (функции)
Сообщение от electroTrash
|
|
почему бы вам тогда при инициализации не разместить по адресу вектора прерывания соответствующей асм. вставкой маш. код. (rjmp interr_label). Да, не Си, но за все надо платить.
|
ничего не понял. Вообще частично проблема решилась асм вставкой
asm("rjmp 0x1234"); только после первой компиляции остается правильно подобрать адрес. Культурно определять адрес нужного места в программе я пока не научился.
|
Цитата:
|
|
В чем собака роется?
|
не знаю в чем собака роется , но то что вы предлагаете идет в разрез с моими представлениями морали в программировании : программа должна быть по возможности быстрой и компактной.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:18.
|
|