Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Микроконтроллеры, робототехника, схемотехника, 3D принтеры
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2024, 15:30   #1
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 742
По умолчанию Как включить прерывание по SPI?

Здравствуйте. Пишу лабораторную работу и надо сделать прерывание SPI Transfer Complete. Atmel Studio 7.0. Проблема в том, что компилятор выкидывает это прерывание(хотя я по синтаксису правильно написал) и выдает Warning: Severity Code Description Project File Line
Warning 'SPI_STC_vect' appears to be a misspelled signal handler, missing __vector prefix [-Wmisspelled-isr] Prm D:\...\main.cpp 45
Как поставить прерывание? Ставишь временно прерывание по Таймер1 совпадение по каналу А и все, оно появляется. Ставишь снова по SPI и оно пропадает. Как поставить прерывание на место?
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 21.05.2024, 14:15   #2
DeepFlake
Пользователь
 
Регистрация: 16.05.2024
Сообщений: 13
По умолчанию

"missing __vector prefix" - не здесь ошибка?
DeepFlake вне форума Ответить с цитированием
Старый 21.05.2024, 17:43   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 742
По умолчанию

Спасибо за помощь, но не в этом дело. Надо было поставить прерывание SPI, но не получилось и пришлось сделать через бит, когда цикл while ждет установки бита-флага, когда завершение приема или передачи. Atmel Studio 7 выбрасывает этот вектор прерывания из программы, хотя другое прерывание ставится нормально.
Проект двухмикроконтроллерный и микроконтроллер, как раб.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.

Последний раз редактировалось Cuprum5; 21.05.2024 в 17:48.
Cuprum5 вне форума Ответить с цитированием
Старый 22.05.2024, 08:23   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,566
По умолчанию

А если ассемблерной вставкой? Я на АВР писа'л только на асме, поэтому за Си сказать не могу. И МК у меня выполнял то, что я ему приказал, а не что думает компилятор по этому поводу. Но вообще сейчас, по-моему, тренд: кодить для микроконтроллеров, даже не открывая страницу ДШ с системой команд. "Это - прошлый век. Компилятор - наше всё!"
Да, я ретроград.

Последний раз редактировалось digitalis; 22.05.2024 в 08:28.
digitalis вне форума Ответить с цитированием
Старый 22.05.2024, 10:20   #5
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 742
По умолчанию

Договорились с человеком на C писать, там же не только 1 прерывание написать - еще куча всего.
Я писал на C и смотрел ассемблерный код. Прерывания нету - ну все тогда.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 22.05.2024, 13:36   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,566
По умолчанию

Так можно всё тело проги на Си, а асм-вставка тут вроде кашу не испортит. И оформить это макросом - будет "почти чистое Си".
Впрочем, я не знаю, поддерживает ли АВРовский Си-компилятор макросы. Читать описание языка нужно, я думаю.
А если отключить оптимизацию? Тогда по идее он должен компилить 1:1, без затей.
Ну и на проблемный фрагмент исходника, если оно не top secret, взглянуть бы.

Последний раз редактировалось digitalis; 22.05.2024 в 13:40.
digitalis вне форума Ответить с цитированием
Старый 22.05.2024, 18:00   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,318
По умолчанию

А если "SPI__STC_vect" попробовать, т.е. два нижних подчеркивания?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 22.05.2024, 18:08   #8
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 742
По умолчанию

Выключал оптимизацию - не появляется прерывание там.
2 нижних подчеркивания - это нет, только по одному.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.

Последний раз редактировалось Cuprum5; 22.05.2024 в 18:13.
Cuprum5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прерывание 11H X@OC Общие вопросы C/C++ 1 15.04.2011 19:37
Прерывание 1aH X@OC Общие вопросы C/C++ 15 07.04.2011 15:17
6 прерывание ленусик Фриланс 1 03.06.2008 16:22
6 прерывание ленусик Помощь студентам 5 30.05.2008 16:57