Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: проблема с вычислениями
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
ARV
я в шоке!
пишу:
Код
#define MAX_PHASE    9500UL
#define TDIV        8
#define CONCAT(x,y)    x ## y
#define DIVISOR(x)    CONCAT(TIMER_CLK_DIV_,x)
#define PRESCALER    DIVISOR(TDIV)
#define MAX_OCR        (((F_CPU * (MAX_PHASE/TDIV) / 1000000)))
#define TCNT_INIT        ((UINT16_MAX + 1UL)- MAX_OCR)

вроде бы все верно (на странно расставленные скобки в MAX_OCR не обращайте внимания - это я от безысходности расставлял их). однако следующая строка
Код
    printf_P(PSTR("SI:%u;%u;%u\n"),200,MAX_OCR,TCNT_INIT);
выводит в консоль
Цитата
SI:200;242;65294

ума не приложу, в чем дело! F_CPU у меня 11059200, ожидаю, что MAX_OCR будет тринадцать тысяч с хвостиком - ан нет sad.gif

что не так?!
zltigo
QUOTE (ARV @ Jul 22 2010, 11:18) *
пишу:

Видимо не все пишите, но и copy-paste. На отсутствие UL, а то и ULL внимание обратите.

MrYuran
Цитата(zltigo @ Jul 22 2010, 12:24) *
Видимо не все пишите, но и copy-paste. На отсутствие UL, а то и ULL внимание обратите.

именно ULL
F_CPU * MAX_PHASE - 40 бит получается, одинарный лонг не возьмёт

PS: тему, кстати, 2 раза запостили
ARV
прошу модераторов удалить эту тему, т.к. она есть дубль (что-то сглючило у меня). настоящая тема с проблемой и решением находится по этой ссылке http://electronix.ru/forum/index.php?showtopic=78638
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.