0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 483
|
|
1 | |
ISR в отдельном модуле28.09.2013, 01:32. Показов 3767. Ответов 9
Метки нет (Все метки)
Как из main-программы перенести ISR в другой модуль (библиотеку)? AVR-GCC. Пока приходится костылем: в модуле
Код
void isr_foo(void) { ... } Код
ISR(FOO) { isr_foo(); }
0
|
28.09.2013, 01:32 | |
Ответы с готовыми решениями:
9
Макрос не работает в отдельном модуле Процедуры и функции в отдельном модуле. Процедуры и функции оформить в отдельном модуле Функция в отдельном модуле и динамический массив Выделить в подпрограмму и обособить в отдельном модуле |
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
|
|
28.09.2013, 01:44 | 2 |
Сообщение от soxop
В main.c: Код
ISR(FOO) { isr_foo(); }
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
28.09.2013, 01:49 | 3 |
костыль можно объявить как inline. тогда особой разницы не будет
0
|
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
|
|
28.09.2013, 02:13 | 4 |
а через extern описать не получится?
0
|
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 483
|
|
28.09.2013, 02:15 | 5 |
UPD. Уже нашёл ответ на сайте avr-libc. Тема закрыта.
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
28.09.2013, 02:25 | 6 |
0
|
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
|
|
28.09.2013, 03:10 | 7 |
[QUOTE="soxop"]
Сообщение от Цитата:[/QUOTE]
[QUOTE="soxop
0
|
0 / 0 / 0
Регистрация: 06.08.2011
Сообщений: 532
|
|
28.09.2013, 05:26 | 8 |
>>Ну поделитесь тогда... нам тожа интересно...
:) видимо забыл добавить #include <avr/interrupt.h> в этом самом модуле.
0
|
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 161
|
|
28.09.2013, 11:19 | 9 |
В модуле в хидер пишете прототип фунции прерывания, а в сишный файл подключаете этот хидер и хидер работы с прерываниями и пишете обработчик прерывания . Далее в главный си файл подключаете только хидер и все. У меня в 5 студии работает.
0
|
28.09.2013, 11:44 | 10 |
В догонку. ISR в отдельном модуле: ISRList.cpp. Не нужно никаких дополнительных заголовочников, если только модули не используют общие идентификаторы. Прототип функции прерывания тоже не нужен. Адрес вызова ISR нужен в одном конкретном месте - таблице векторов прерываний, поэтому нужно просто где-то определить ISR и всё. Не важно где, пусть даже в ассемблерном модуле, который подключается к Си-программе.
0
|
28.09.2013, 11:44 | |
28.09.2013, 11:44 | |
Помогаю со студенческими работами здесь
10
Описать заданный класс в отдельном модуле Сделать недоступной функцию в отдельном .cpp модуле Оформить в виде макроса и разместить их в отдельном модуле Запретить закрытие формы OnClose:=canone в отдельном модуле Создайте в отдельном модуле функцию для вычисления выражения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |