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

 
 
 
Reply to this topicStart new topic
Слесарь
сообщение Jun 3 2014, 15:03
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 884
Регистрация: 7-11-09
Из: Ростовская обл.
Пользователь №: 53 484



Здравствуйте!
Разрабатываю достаточно большой проект пользуясь MPLAB 8.60 + C18 v4.20. PIC18F67J60.
Мне необходимо по сигналу таймера 1800 раз в секунду прерывание основной программы вычитать блок данных из одной микросхемы по SPI и записать в другую микросхему. Это достаточно объемный код, если еще учесть что переключает CS чипы третья микросхема подключенная последовательной шиной.
Не могу поместить весь объем кода в прерывание по таймеру. Собственно, не помещается всего десяток строк, но сокращать код больше некуда.
Линковщик пишет Error - Recursion not supported for functions with locals of "overlay"

Можно ли это как-то обойти?
Go to the top of the page
 
+Quote Post
volodya
сообщение Jun 4 2014, 01:54
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 194
Регистрация: 14-02-07
Из: УКРАИНА
Пользователь №: 25 344



Цитата(Слесарь @ Jun 3 2014, 22:13) *
Здравствуйте!
Разрабатываю достаточно большой проект пользуясь MPLAB 8.60 + C18 v4.20. PIC18F67J60.

Линковщик пишет Error - Recursion not supported for functions with locals of "overlay"

Можно ли это как-то обойти?


Уточните С18 by Microchip последняя - v3.47 от 20янв.2014. а что у Вас не ясно.
Если я правильно понял : линкер пытается сообщить - рекурсивный вызов для функции (посмотрите документацию)
расположенный в оверлейной области или с данными оверлейного типа не допустим. Какие-то претензии к порядку вызовов.
Возможно вызов в прерывании и фоне одновременно или др. причины.
Тут (на форуме) часто звучали рекомендации в прерывание не вносить большие блоки кода. Выставте флаг ,
а в фоновом блоке отреагируйте на него. Из личных ощущений - PIC18 не шустрый и как такового стека в нем нет. То-есть данные сохраняются в зависимости от компилятора. С18 искусственно выделял регистр косвенной адресации и формировал стек данных. HITECH обыгрывала ситуацию иначе и возникала проблема, возможно ситуация схожа.


--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть"
"Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
Go to the top of the page
 
+Quote Post

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

 


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


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