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

 
 
> МЕГА128 математика и CodeVisionAVR, Мега виснет
Punk
сообщение Oct 24 2006, 13:35
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Решил погонять математику с большими числами на м128 (макс. число 1000000 исп типы: unsigned long int, unsigned int, unsigned char) поперемножать их повычитать,в общем все с ними поделать.Результаты выкидываю на ЖКИ.Компилил в КодеВижне,
так вот компилятор говорит что стека ему надо 312 байт я ему и поставил 320 и проц пару раз число умножит,поделит и виснет если же ему стека 2048 байт впендюрить то проц очень даже долго работает
целых 23 операции без бэ выполняет а потом гонит и виснет.
Не подскажите в чем тут дело......такое чувство что RAMа засирается постепенно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
arttab
сообщение Oct 25 2006, 04:06
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



рекурсией не баловались?


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
Punk
сообщение Oct 25 2006, 05:36
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Цитата(arttab @ Oct 25 2006, 08:06) *
рекурсией не баловались?


Если это заключается в вызове данной функции из самой этой функции то да баловался
Go to the top of the page
 
+Quote Post
Demeny
сообщение Oct 25 2006, 07:21
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(Punk @ Oct 25 2006, 09:36) *
Цитата(arttab @ Oct 25 2006, 08:06) *

рекурсией не баловались?


Если это заключается в вызове данной функции из самой этой функции то да баловался

Рекурсия, скорее всего, тут ни при чём, так как иначе не выполнилось бы ни одного умножения и всё погрязло бы в бесконечном цикле. Возможно, где-то внутри функции создаётся память оператором new , а по выходе из неё не удаляется delete. Возможно, что эта бага зарыта в библиотеке, если вы таковой пользуетесь. Возможно, в библиотечной функции не соответствует количество PUSH при входе в функцию количеству POP при выходе из неё.
Если есть вставки на Ассемблере, то наивероятнейшая причина - та же - несоответствие количества операторов PUSH количеству операторов POP.

Сообщение отредактировал Demeny - Oct 25 2006, 07:24


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
Punk
сообщение Oct 25 2006, 11:48
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Я не юзал либы а только обычные операции: "/", "*", "-", "+"

и асмовые вставки не делал
Go to the top of the page
 
+Quote Post
Demeny
сообщение Oct 25 2006, 12:11
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(Punk @ Oct 25 2006, 15:48) *
Я не юзал либы а только обычные операции: "/", "*", "-", "+"

и асмовые вставки не делал

Дык пройдите код отладчиком и понаблюдайте за SP, до входа в любую процедуру CALL и после выхода из неё RET значение регистра указателя стэка должно быть одинаковым. Возможно, для этого надо поудобнее реорганизовать программу...


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
Serj78
сообщение Oct 25 2006, 21:38
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



попробуйте поставить галочку stack end marker, возможно в этом дело
Go to the top of the page
 
+Quote Post
klen
сообщение Oct 25 2006, 23:52
Сообщение #8


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(Demeny @ Oct 25 2006, 16:11) *
Дык пройдите код отладчиком и понаблюдайте за SP

Поддержыаю предложение - и посмотрите что со стеком творится. ведь известно что наибоее верояные плавающие сбои в том что стек до данных спускается(или если их несколько то они залазят друг на друга) и каша возникает.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Oct 26 2006, 00:31
Сообщение #9


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Проверьте, не выполняется ли где-нибудь в программе деление на ноль. Я однажды так очень долго мучился с поиском ошибки... Правда в моем случае МК просто перезагружался... но это в моем случае)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
arttab
сообщение Oct 26 2006, 01:32
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



Цитата
не выполняется ли где-нибудь в программе деление на ноль


А что в этом случае должно получиться? Деление это ведь вычитание. Арифметикой пользуюсь, но проверяю чтобы небыло /0.
Извените, что на пол шага от вопроса отошел.


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
radist
сообщение Oct 26 2006, 11:10
Сообщение #11


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

Группа: Свой
Сообщений: 122
Регистрация: 24-05-05
Пользователь №: 5 329



Если конкретно, то компилятор пишет обычно следующее:
"
Data Stack area: 60h to DFh
Data Stack size: 128 byte(s)
Estimated Data Stack usage: 22 byte(s)
"
т.е. он показывает приблизительный на его взгляд размер стека. Но в случае длинной рекурсии компилятор может очень сильно ошибаться. Может быть дело в этом.
Go to the top of the page
 
+Quote Post
Punk
сообщение Oct 27 2006, 08:06
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Всем спасибо ! решилось.Я юзал рекурсию из-за чего стек уходил в область программы.
Go to the top of the page
 
+Quote Post
kamedi_clab
сообщение Oct 27 2006, 08:17
Сообщение #13


Местный
***

Группа: Новичок
Сообщений: 239
Регистрация: 5-10-06
Пользователь №: 21 004



дак вы в симуляторе VMLAB посмотрите что происходит в меге.
Go to the top of the page
 
+Quote Post

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

 


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


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