Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
07.12.2007, 15:04
|
#1
|
Прописка
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
глюк в Hi-tech-9.61-pro?
Здравствуйте. Столкнулся я с такой проблемой... Есть у меня ф-ция, вычисляющая a/(2^b). Написал я код в С, отладил, все ОК. Потом через какое то время обновил компилятор с 9.50 обычного на 9.61-pro. После этого ф-ция стала выдавать совершенно левые результаты. Вот код:
Код:
|
koef2=10;
mant2=5;
k2=((float)koef2/((int)1‹‹mant2)); |
9.50 выдает что к2=0.3125, а в 9.61-pro к2=2.5
Как такое возможно?
|
|
|
|
07.12.2007, 15:41
|
#2
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
где-то читал, что 9ю61 не любит длинных выражений.
Попробуйте
Код:
|
mant2=1 ‹‹mant2;
k2=(float)koef2/(int)mant2; |
Что тогда ?
__________________
разум когда-нибудь победит... (с)
|
|
|
|
07.12.2007, 16:10
|
#3
|
Прописка
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
тогда выдает 1 ![Улыбка](images/smilies/icon_smile.gif) 9.50 выдает 0.3125
|
|
|
|
07.12.2007, 16:13
|
#4
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Это что, нормально ???
К вопросу о вреде новых версий...
Нет у меня 9.61 для проверки - я о нем на сахаре плохое читал...
__________________
разум когда-нибудь победит... (с)
|
|
|
|
07.12.2007, 16:17
|
#5
|
Прописка
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
на всякий случай, вот ф-ция целиком:
Код:
|
unsigned int calc(unsigned int ADC,unsigned char koef,unsigned char koef1,unsigned char mant1,unsigned char koef2,unsigned char mant2){
unsigned int digi;
float k1,k2;
k1=((float)koef1/((int)1‹‹mant1));
k2=((float)koef2/((int)1‹‹mant2));
digi=(int)(((float)k1*ADC*ADC)+((float)k2*ADC));
if(koef›128)digi=(int)(((koef*digi)/128)-digi);
else digi=(int)(((koef*digi)/128)+digi);
return digi;
} |
|
|
|
|
07.12.2007, 16:30
|
#6
|
Временная регистрация
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
А размер флоат проверяли ? В смысле, в 9.50 и 9.61 ?
__________________
разум когда-нибудь победит... (с)
|
|
|
|
08.12.2007, 23:12
|
#7
|
Вид на жительство
Регистрация: 06.10.2006
Сообщений: 329
Сказал спасибо: 4
Сказали Спасибо 17 раз(а) в 13 сообщении(ях)
|
У 9.61 PRO есть проблемы, посмотри хотя бы та размер самого компилятора, он в два раза меньше обычного.
Пока его лучше использовать только для проектов с простой математикой, с короткими выражениями. Уж очень он не любит длинных строк.
|
|
|
|
10.12.2007, 08:50
|
#8
|
Прописка
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
user_ushastyj-да, это я проверяю в первую очередь, к тому же вообщем он флоаты нормально считает, пробелма была именно с этой конкретной ф-цией.
Всем спасибо, буду пользовать 9.50, похоже что этот PRO слишком уж профессиональный для меня...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
MPLAB и Hi-Tech
|
3ann |
Микроконтроллеры, АЦП, память и т.д |
0 |
14.07.2009 15:17 |
Размер функций в Hi-Tech C?
|
stri |
Микроконтроллеры, АЦП, память и т.д |
7 |
29.12.2007 15:49 |
Правильная задержка в HI-TECH PIC16
|
vsvetlov |
Микроконтроллеры, АЦП, память и т.д |
1 |
06.09.2007 13:59 |
!!! Вопрос по HI-TECH !!!
|
hubble |
Микроконтроллеры, АЦП, память и т.д |
0 |
05.09.2007 05:53 |
Ну где же ты - Hi Tech C ???
|
Prime |
Микроконтроллеры, АЦП, память и т.д |
7 |
07.09.2005 11:02 |
Часовой пояс GMT +4, время: 06:25.
|
|