|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 6:38 pm
|
Страница 1 от 1
|
[ 11 мнения ] |
|
Проблем с деление на "float"
| Автор |
Съобщение |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
 Проблем с деление на "float"
Резултата е "Address Error trap" Това нещо работи, когато вместо деление е +, - или * Ако fas & tam са integer, работи, но резултата е цяло число. (16.00000) PIC24HJ128GA506A на 40 Mips, MPLAB IDE 8.92 без оптимизации, с опция "Large code model" (128kB flash) Това е част от голям проект, който си работи, но се налага да се добавят някой нови функции към устройството. На други места в програмата има подобни сметки, които си работят. Формулите са по-сложни от примера по-горе, но и той не работи, като го компилирам вместо онези формули. P.S. При компилиране не дава ниакаква грешка, но при симулация влиза в "AdressЕrror" прекъсване, а като го записах в проца (първия път, без да подозирам, че нещо не е наред), започна да се рестартира. Пробвах го с C30 v3.31, C30 v3.25 i xc16 v1.21 - няма разлика.
Последна промяна Gogo на Чет Авг 07, 2014 2:43 pm, променена общо 4 пъти
|
| Чет Авг 07, 2014 2:06 pm |
|
 |
|
bateAz
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 4:11 pm Мнения: 3750 Местоположение: София
|
 Re: Проблем с деление на "float"
Ако добавиш "0" след десетичната точка ?
|
| Чет Авг 07, 2014 2:09 pm |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
 Re: Проблем с деление на "float"
Същата работа!
|
| Чет Авг 07, 2014 2:26 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: Проблем с деление на "float"
В ПИКльовците е само емулация - пускаш го с дебъгера и виждаш къде му е проблема - много вероятно да е бъг в библиотеката на компилатора - пък ако не ти се занимава (то си е зор и си иска опит такова дебъгване) изолирай малка програмка която се дъни и го пращай на микрочип да си го анализират 
_________________ Мразя да мразя ...
|
| Чет Авг 07, 2014 2:44 pm |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
 Re: Проблем с деление на "float"
Като изолирам формулите в отделен проект, всичко работи. Даже и другите подобни формули в този същия проект, но в други процедури си работят. По-склонен съм да мисля, че проблема е в задклавиатурното устройство, отколкото в компилатора, но не мога да измисля какво съм осрал  За това писах тука - някой може да даде идея, която да проработи! То в тия жеги само това е спасението: 
|
| Чет Авг 07, 2014 2:56 pm |
|
 |
|
t_i_t_o
Ранг: Почетен член
Регистриран на: Вто Окт 25, 2005 10:54 am Мнения: 896
|
 Re: Проблем с деление на "float"
Или буфер или стека си омазал... или буфер който е омазал стека:) Сложи брейк преди да умре и дебъгвай стъпка по стъпка в асемблера и виж на коя инструкция умира... или като иде в трапа, виж стека на кой адрес е възникнало изключението.
|
| Чет Авг 07, 2014 5:10 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: Проблем с деление на "float"
Стека май генерираше прекъсвания за ъндер/оверфлоу ... иначе като едното нищо може да е заради това - това са най мръсните грешки 
_________________ Мразя да мразя ...
|
| Чет Авг 07, 2014 5:47 pm |
|
 |
|
speedblue
Ранг: Ориентиран
Регистриран на: Нед Фев 25, 2007 1:41 am Мнения: 276 Местоположение: София
|
 Re: Проблем с деление на "float"
Тествай ако си извел изчислението в отделна функция да: * предаваш данните за променливите по различни начини - поменливи/указатели * вътре в нея да предефинираш променливи идващи ти от указатели
срещал съм подобен бъг при много голям сорс и евентуално силно намаляла RAM.
|
| Чет Авг 07, 2014 10:45 pm |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
 Re: Проблем с деление на "float"
Ето 2 картинки на ситуацията. Първата е точно преди да "гръмне", а втората след това.
|
| Пет Авг 08, 2014 9:05 am |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: Проблем с деление на "float"
Малко вероятно е една такава операция сама по себе си да направи такъв проблем. До колкото съм имал досег с този вид грешки, работата става при пренасочване или при опит за четене от точно определена клетка. Пример: Не съм сигурен за това как се получават тези грешки, понеже при мен на симулация така и не можах да докарам такава, но на практика гърмеше през час. Опитай да добавиш някаква проверка на резултата! Поздрави!
_________________www.elkran.com
|
| Нед Авг 10, 2014 9:07 am |
|
 |
|
Ники
Ранг: Почетен член
Регистриран на: Съб Окт 30, 2004 11:19 pm Мнения: 609
|
 Re: Проблем с деление на "float"
Позабравил съм 24-ките, обаче скоро имаше и друга тема за гърмене, беше с 32-ки, мисля проблема е същия, неподравнен адрес в масив, в който се слага цяла дума. По сложените картинки, имаш инструкция mov [--W15],W12, вижда се w15=0x14CC, като направи предекремента, съдържанието/адрес в масив?/ става нечетно, т.е. неподравнено на дума, и следва гарантиран гърмеж с ADDRESS ERROR.
|
| Нед Авг 10, 2014 10:10 am |
|
|
|
Страница 1 от 1
|
[ 11 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 5 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|