Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
soxop
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 483
1

ISR в отдельном модуле

28.09.2013, 01:32. Просмотров 3194. Ответов 9
Метки нет (Все метки)

Как из main-программы перенести ISR в другой модуль (библиотеку)? AVR-GCC. Пока приходится костылем: в модуле
Код
void isr_foo(void) { ... }
В main.c:
Код
ISR(FOO) { isr_foo(); }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2013, 01:32
Ответы с готовыми решениями:

Синтаксис ISR в GCC
Перевожу Си-шный проект из CVAVR в AVRStudyo и вношу соответствующие правки в...

ISR и SIGNAL, в чем отличие?
Встретил код: SIGNAL(SIG_OUTPUT_COMPORE0) В чем отличие от:...

Вызов планировщика из ISR.
Не могу найти функцию принудительного вызова планировщика из обработчика...

Процедуры и функции в отдельном модуле.
При реализации использовать процедуры и функции, которые необходимо разместить...

Функция в отдельном модуле и динамический массив
Добрый день. Нужна помощь с задачей: Программа должна считать сумму...

9
ShodS
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
28.09.2013, 01:44 2
Цитата Сообщение от soxop
Как из main-программы перенести ISR в другой модуль (библиотеку)? AVR-GCC. Пока приходится костылем: в модуле
Код:
void isr_foo(void) { ... }

В main.c:
Код
ISR(FOO) { isr_foo(); }
Может в другом модуле ISR объявить как .global
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
28.09.2013, 01:49 3
костыль можно объявить как inline. тогда особой разницы не будет
0
kytikot
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 3,435
28.09.2013, 02:13 4
а через extern описать не получится?
0
soxop
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 483
28.09.2013, 02:15 5
Может в другом модуле ISR объявить как .global
Что такое .global в Си? В Си функции по умолчанию публичны.

костыль можно объявить как inline. тогда особой разницы не будет
Лихо вы инлайните внешние функции... fosipalm

UPD. Уже нашёл ответ на сайте avr-libc. Тема закрыта.
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
28.09.2013, 02:25 6
Лихо вы инлайните внешние функции... fosipalm
мда, пожалуй погорячился :)
0
ShodS
0 / 0 / 0
Регистрация: 01.02.2010
Сообщений: 2,011
28.09.2013, 03:10 7
[QUOTE="soxop"]
Цитата Сообщение от Цитата:[/QUOTE]
Может в другом модуле ISR объявить как .global
Что такое .global в Си? В Си функции по умолчанию публичны.Ага... эт я оказывается в ассемблерных вставках так делал.....

[QUOTE="soxop
UPD. Уже нашёл ответ на сайте avr-libc. Тема закрыта.
Ну поделитесь тогда... нам тожа интересно...
0
riptyti
0 / 0 / 0
Регистрация: 06.08.2011
Сообщений: 534
28.09.2013, 05:26 8
>>Ну поделитесь тогда... нам тожа интересно...

:) видимо забыл добавить #include <avr/interrupt.h> в этом самом модуле.
0
stritsh
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 161
28.09.2013, 11:19 9
В модуле в хидер пишете прототип фунции прерывания, а в сишный файл подключаете этот хидер и хидер работы с прерываниями и пишете обработчик прерывания . Далее в главный си файл подключаете только хидер и все. У меня в 5 студии работает.
0
уни
327 / 106 / 12
Регистрация: 06.03.2010
Сообщений: 234
28.09.2013, 11:44 10
В догонку. ISR в отдельном модуле: ISRList.cpp. Не нужно никаких дополнительных заголовочников, если только модули не используют общие идентификаторы. Прототип функции прерывания тоже не нужен. Адрес вызова ISR нужен в одном конкретном месте - таблице векторов прерываний, поэтому нужно просто где-то определить ISR и всё. Не важно где, пусть даже в ассемблерном модуле, который подключается к Си-программе.
0
28.09.2013, 11:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2013, 11:44

Процедуры и функции оформить в отдельном модуле
Процедуры и функции оформить в отдельном модуле, и создать программу, которая...

Сделать недоступной функцию в отдельном .cpp модуле
Допустим, я хочу добавить к проекту новый .cpp файл с содержанием некоторых...

Оформить в виде макроса и разместить их в отдельном модуле
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru