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

 
 
> sqrt() и прерывания
pvp
сообщение Oct 10 2007, 12:13
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 18
Регистрация: 16-02-07
Пользователь №: 25 414



Уважаемые формучане!
Помогите разрешить проблемку:
мк - ATMEGA8.
При разрешённых прерываниях (например, по завершении цикла преобразования АЦП) и использовании библиотечной функции sqrt() (естественно, не в обработчике прерывания) мк перезагружается.
При запрещении прерываний на время выполнения функции sqrt() всё работает как ожидается.

В чём дело и как побороть (не запрещая прерывания на время выполнения sqrt())?
Заранее спасибо.
P.S. Версия компилятора 4.20A
P.P.S. В версии 4.30A - всё аналогично.

Сообщение отредактировал pvp - Oct 10 2007, 12:43
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Oct 10 2007, 16:03
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(pvp @ Oct 10 2007, 15:13) *
При разрешённых прерываниях (например, по завершении цикла преобразования АЦП) и использовании библиотечной функции sqrt() (естественно, не в обработчике прерывания) мк перезагружается.
Весьма вероятно, что не хватает стека. Увеличьте размеры RSTACK и CSTACK.
Цитата(pvp @ Oct 10 2007, 19:03) *
Поборол увеличением размера стека данных до 64 байт (супротив 32 по-умолчанию).
"говорят, у дураков мысли сходятся. Но у умных - чаще!" smile.gif


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


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


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