Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.07.2009, 21:49
|
#21
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Наверно вы.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
03.07.2009, 22:00
|
#22
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
По умолчанию все переменные signed int, а 9 * 40000 = 36000 что больше максимального значения для signed int 32767 что и приводит к изменению знака.
|
|
|
|
04.07.2009, 00:11
|
#23
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от TEHb
|
По умолчанию все переменные signed int
|
Я подозревал что дело в приеведении типов, и поэтому попробовал с типом LONG, это было в последней строчке моего примера.
Код:
|
TEMP1= ((long)(9*4000)) / ((long)fclc) ;//грузит в переменую - fff8h вместо 000Ah=10 |
сейчас попробовал с unsigned long фигня то же получается...
Код:
|
TEMP1= ((unsigned long)(9*4000)) / ((unsigned long)fclc) ;//грузит в переменую - B975h вместо 000Ah=10 |
и СПАСИБО ТЕНЬ, за подсказку ![Улыбка](images/smilies/icon_smile.gif) сейчас попробовал
Код:
|
TEMP1= ((unsigned int)(9*4000)) / ((unsigned int)fclc) ;//грузит в переменую 000Ah=10 |
Получилось.
Значит нужно указать такую же размерность констант как и переменная, а больше нельзя?
Ведь для увеличения точности вычислений констант, желательно пользовать UNSIGNED LONG.
Где в Хайтеке это можно указать...?
Кто в курсе.
В IAR AVR наверное по умолчанию LONG или UNSIGNED LONG. таких казусов пока не было.
|
|
|
|
04.07.2009, 00:40
|
#24
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
|
|
|
|
04.07.2009, 01:56
|
#25
|
Почётный гражданин KAZUS.RU
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Сообщение от picavr
|
Код:
|
TEMP1= ((unsigned long)(9*4000)) / ((unsigned long)fclc) ;//грузит в переменую - B975h вместо 000Ah=10 |
|
ну, здесь типы приводятся уже после вычисления, вполне возможно что компилятор не поймёт что имелось в виду.
Лучше написать так:
Код:
|
TEMP1= (unsigned long)((9*((unsigned long)4000)) / fclc); |
тогда уж точно будет считать в unsigned long.
|
|
|
|
04.07.2009, 11:59
|
#26
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от TEHb
|
тогда уж точно будет считать в unsigned long.
|
уже заработало.
И Ещё раз сенк. пригодится.
|
|
|
|
06.07.2009, 09:05
|
#27
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Еще пригодится: чтобы привести к unsigned long'у константу, удобно пользоваться такой записью:
Код:
|
TEMP1= (9UL * 4000UL) / ((unsigned long)fclc) |
|
|
|
|
06.07.2009, 12:01
|
#28
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от testerplus
|
TEMP1= (9UL * 4000UL) / ((unsigned long)fclc)
|
Эт я в курсе
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
вычисление CRC
|
qaz12345qaz12345 |
Микроконтроллеры, АЦП, память и т.д |
32 |
23.08.2010 23:55 |
Вычисление параметров синусоиды по отсчетам, снятых с АЦП
|
_DmZ_ |
Микроконтроллеры, АЦП, память и т.д |
11 |
08.10.2008 16:23 |
Странное вычисление температуры DS18S20
|
nagano |
Микроконтроллеры, АЦП, память и т.д |
0 |
20.08.2008 08:58 |
компилятор C Hi-Tech, не работают директивы #asm #endasm
|
alexplev |
Микроконтроллеры, АЦП, память и т.д |
2 |
26.04.2008 22:47 |
компилятор fuzzy tech-mp lkz microchip
|
MrDigital |
Микроконтроллеры, АЦП, память и т.д |
0 |
26.11.2004 14:50 |
Часовой пояс GMT +4, время: 01:23.
|
|