Отговори на тема  [ 11 мнения ] 
Проблем с деление на "float" 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение Проблем с деление на "float"
Код:
float      fas, tam, cot;
   fas=15000.;
   tam=900.;

   cot = fas/tam;

Резултата е "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
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение Re: Проблем с деление на "float"
Ако добавиш "0" след десетичната точка ?


Чет Авг 07, 2014 2:09 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение Re: Проблем с деление на "float"
Същата работа!


Чет Авг 07, 2014 2:26 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Проблем с деление на "float"
В ПИКльовците е само емулация - пускаш го с дебъгера и виждаш къде му е проблема - много вероятно да е бъг в библиотеката на компилатора - пък ако не ти се занимава (то си е зор и си иска опит такова дебъгване) изолирай малка програмка която се дъни и го пращай на микрочип да си го анализират :)

_________________
Мразя да мразя ...


Чет Авг 07, 2014 2:44 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение Re: Проблем с деление на "float"
Като изолирам формулите в отделен проект, всичко работи. Даже и другите подобни формули в този същия проект, но в други процедури си работят. По-склонен съм да мисля, че проблема е в задклавиатурното устройство, отколкото в компилатора, но не мога да измисля какво съм осрал :lol: За това писах тука - някой може да даде идея, която да проработи!
То в тия жеги само това е спасението: :drinkers: :D


Чет Авг 07, 2014 2:56 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Вто Окт 25, 2005 10:54 am
Мнения: 896
Мнение Re: Проблем с деление на "float"
Или буфер или стека си омазал... или буфер който е омазал стека:) Сложи брейк преди да умре и дебъгвай стъпка по стъпка в асемблера и виж на коя инструкция умира... или като иде в трапа, виж стека на кой адрес е възникнало изключението.


Чет Авг 07, 2014 5:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Окт 11, 2011 11:53 pm
Мнения: 4582
Местоположение: Brussels / Пловдив
Мнение Re: Проблем с деление на "float"
Стека май генерираше прекъсвания за ъндер/оверфлоу ... иначе като едното нищо може да е заради това - това са най мръсните грешки :)

_________________
Мразя да мразя ...


Чет Авг 07, 2014 5:47 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Нед Фев 25, 2007 1:41 am
Мнения: 276
Местоположение: София
Мнение Re: Проблем с деление на "float"
Тествай ако си извел изчислението в отделна функция да:
* предаваш данните за променливите по различни начини - поменливи/указатели
* вътре в нея да предефинираш променливи идващи ти от указатели

срещал съм подобен бъг при много голям сорс и евентуално силно намаляла RAM.


Чет Авг 07, 2014 10:45 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение Re: Проблем с деление на "float"
Ето 2 картинки на ситуацията. Първата е точно преди да "гръмне", а втората след това.


Прикачени файлове:
Clipboard.jpg
Clipboard.jpg [ 137.44 KiB | Прегледано 3387 пъти ]
Clipboard1.jpg
Clipboard1.jpg [ 139.97 KiB | Прегледано 3387 пъти ]
Пет Авг 08, 2014 9:05 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Re: Проблем с деление на "float"
Малко вероятно е една такава операция сама по себе си да направи такъв проблем. До колкото съм имал досег с този вид грешки, работата става при пренасочване или при опит за четене от точно определена клетка.
Пример:
Код:
int array[10];
int data=array[50000];

Не съм сигурен за това как се получават тези грешки, понеже при мен на симулация така и не можах да докарам такава, но на практика гърмеше през час.
Опитай да добавиш някаква проверка на резултата!
Поздрави!

_________________
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
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 11 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни