реклама на сайте
подробности

 
 
> деление на ноль
Jenya7
сообщение Feb 19 2014, 10:20
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



надоело все время высчитывать делитель для таймера - решил автоматизировать процесс:
CODE
#define F_CPU 72000000UL
#define F_CPU_MHZ 72
#define SYSTEM_TICK_NS ((1 /F_CPU_MHZ) * 1000UL)

uint32_t GetPrescaleForDelay(uint32_t delay, char * units)
{
uint32_t prescale;
uint32_t multiplyer;
uint32_t ticks;

if(strcmp(units,"ns")==0)
{ multiplyer = 1; }
else if(strcmp(units,"us")==0)
{ multiplyer = 1000; }
else if(strcmp(units,"ms")==0)
{ multiplyer = 1000000; }
//else
//{ return 0; }

//how many ticks needed for delay
// if(SYSTEM_TICK_NS > 0) //не помогает
ticks = (delay * multiplyer) / SYSTEM_TICK_NS;

prescale = F_CPU / ticks;
return prescale;
}


компайлер честно предупреждает - Warning[Pe039]: division by zero на строчке ticks = (delay * multiplyer) / SYSTEM_TICK_NS;

но это как то действует на нервы. как бороться с делением на ноль?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016