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

 
 
> Прерывания в бутлоадере
Skaf
сообщение Nov 4 2010, 18:18
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 228
Регистрация: 4-06-09
Пользователь №: 49 940



Всем привет. Пожалуйста подскажите как перенести обработчики прерываний в бутлоадер. Atmega16. Я знаю что там есть какой-то бит IVSEL для этого. Меня интересует как прописать все это на си в AVR GCC. Какие есть там подводные камни. Где можно про это почитать?

Сообщение отредактировал Skaf - Nov 4 2010, 18:19
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
artymen
сообщение Nov 8 2010, 17:01
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 6-11-09
Из: г. Омск
Пользователь №: 53 464



В любом случае доверять такие "ответственные" операции сишному компилятору не стоит, а уж тем более при оптимизации. Начиная с какой то версии 4.х.х в GCC появилась возможность устанавливать аттрибуты оптимизации для отдельных функций. Не знаю, кому как, но фича весьма и весьма полезная. Делаем вот так:
Код
void Move_interrupts(void) __attribute__ ((optimize(0)));
и можем быть почти уверены, что защитили код функции он извратных посягательств оптимизатора maniac.gif

---
Пардон, забыл, что регистры объявлены как volatile и тем самым защищены уже. Просто я с этой оптимизацией до конца не разобрался, и на мой взгляд, gcc параноик, скока не отключай оптимизацию, он все равно будет оптимизировать. Точно, маньяк smile.gif И меня параноиком сделал. Я чуть ли не каждую переменную с volatile объявляю :D

Сообщение отредактировал artymen - Nov 8 2010, 18:18


--------------------
"Сознание своего несовершенства приближает к совершенству"
Гёте
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 8 2010, 18:23
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(artymen @ Nov 8 2010, 20:01) *
Не знаю, кому как, но фича весьма и весьма полезная.
Не все йогурты одинаково полезны...
Ни разу не было нужно. Могу лишь предположить, что может потребоваться оптимизация по скорости для какой-то критичной функции, да и то это ИМХО означает, что выбран неверный алгоритм или дохлый контроллер.
Ибо выигрыш будет совсем незначительным - в пределах погрешности измерения.
Так, что не стоит засорять код лишней фигнёй и пудрить мозги себе и людям.
А уж компилить функции с нулевым уровнем оптимизации считаю бредом сивой кобылы.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post



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

 


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


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