roboforum.ru

Технический форум по робототехнике.

Определить, является ли число целым

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Определить, является ли число целым

Сообщение creatur » 09 мар 2006, 16:31

Всем здрасте!

Для меня MK = Си = Asm = Китайский
( утрировано, но правдиво)

Сижу разбираюсь с AT90S2313 и CodeVisionAVR и есть
успехи:

Уже  получилось менять  ШИМ по Таймеру  (1Гц),
для примера: за 255 сек  изменить сважность от 0% до100%

А в реальной задаче временные интервалы есс-но    
другие - скажем надо изменять ШИМ на +1 каждые 7 сек.
за определенный период(T)

А теперь вопрос : как на Си(CodeVisionAVR) сделать

if (T/7 есть целое число/или кратное 7 )?

заранее спасибо
creatur
 
Сообщения: 8
Зарегистрирован: 09 мар 2006, 15:40

Сообщение avr123.nm.ru » 09 мар 2006, 17:13

Может "прямее" сделать?

таймер молтит и прерывания генерит, а по насчету нужного колич. прерываний узнаем что 7 сек. прошло.

Как это сделать - смотри там:

-> Упражнения - задачи по курсу AVR

и там:

-> Краткий Курс микроконтроллеры AVR - где взять примеры, куски кода ШИМ=PWM Servo LCD i2c 1-wire MotorControl - как сделать электронное устройство - основы электроники
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение avr123.nm.ru » 09 мар 2006, 17:16

кстати, а почему б вам не задать вопрос в существующую тему - для начинающих по МК ???
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение creatur » 09 мар 2006, 18:38

Как это сделать - смотри там:

-> Упражнения - задачи по курсу AVR


с этого я и начинал - спасибо автору...

Извиняюсь, что не там вопрос задал, мне теперь туда или
можно здесь продолжать?
creatur
 
Сообщения: 8
Зарегистрирован: 09 мар 2006, 15:40

Сообщение avr123.nm.ru » 09 мар 2006, 18:58

я указывать не полномочен.  Просто совет, мнение.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение creatur » 09 мар 2006, 19:39

Тогда продолжу здесь...

"Прямее" то не всегда "дешевле"...
У AT90S2313 всего то (2К + 128) памяти...

в реальной задаче используются 7-8  различных периодов
времени, каждый выражен в секундах, т.е
для примера:
 Т1 = 1800   сек / 255 (100% нагрузка) =~7
 T2 = 28800 сек / 255  /_/_/_/_/_/_/_/   =~122
..............................
и т.д.  
у меня получается слишком много констант, как следствие  hex-file =~ 2k  - в VMLAB неработает совсем,
в реале - соотвественно тоже нет ( вернее не совсем по
зададанному алгоритму ...)

Вот и был вопросик про си ( "а в  дельфях я гораздо длинее" - if T1/7 is integer...что то вроде этого  )...

есть ли у кого время и настроение глянуть на мое "безобразие" на си ?
creatur
 
Сообщения: 8
Зарегистрирован: 09 мар 2006, 15:40

Сообщение ASin » 09 мар 2006, 20:17

Есть такая команда: деление по модулю; возвращает остаток от деления.
в С это %, т.е. для проверки делимости на 7 надо написать
Код: Выделить всёРазвернуть
if (x % 7 == 0)

или, эстетично :)
Код: Выделить всёРазвернуть
if ( !(x % 7) ) 


Только вот в AT90S2313 нет аппаратного деления. А значит, компилятор включит в проект библиотеку деления и код ещё больше распухнет. Проще уж написать цикл с вычитаниями.
ASin
 
Сообщения: 155
Зарегистрирован: 18 дек 2004, 03:14
Откуда: Москва

Сообщение wolf » 09 мар 2006, 20:40

creatur писал(а):в реальной задаче используются 7-8  различных периодов
времени, каждый выражен в секундах, т.е
для примера:
 Т1 = 1800   сек / 255 (100% нагрузка) =~7
 T2 = 28800 сек / 255  /_/_/_/_/_/_/_/   =~122
..............................
и т.д.  
у меня получается слишком много констант, как следствие  hex-file =~ 2k  - в VMLAB неработает совсем,


7-8 периодов - это 7-8 констант, так? не то, чтобы слишком много.
wolf
 
Сообщения: 63
Зарегистрирован: 23 июл 2005, 00:39
Откуда: Казань

Сообщение wolf » 09 мар 2006, 20:44

ASin писал(а):Только вот в AT90S2313 нет аппаратного деления. А значит, компилятор включит в проект библиотеку деления и код ещё больше распухнет. Проще уж написать цикл с вычитаниями.


Ничего не распухнет, п/п деления в CV всего-то 14 слов.
wolf
 
Сообщения: 63
Зарегистрирован: 23 июл 2005, 00:39
Откуда: Казань

Сообщение avr123.nm.ru » 09 мар 2006, 21:14

creatur писал(а):у меня получается слишком много констант, как следствие  hex-file =~ 2k  - в VMLAB неработает совсем,
в реале - соотвественно тоже нет ( вернее не совсем по
зададанному алгоритму ...)


если hex получился то он НЕ МОЖЕТ не влезать в МК - хоть в реале хоть в VMLAB.

creatur писал(а): Вот и был вопросик про си


страница 5 краткого курса  avr123.nm.ru
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение creatur » 09 мар 2006, 21:49

avr123.nm.ru писал(а):страница 5 краткого курса  avr123.nm.ru


и правда есть...  :oops:  ослеп сапсем однако!

avr123.nm.ru писал(а):если hex получился то он НЕ МОЖЕТ не влезать в МК - хоть в реале хоть в VMLAB.
avr123.nm.ru


влезать то влезает, просто VMLAB и PonyProg ошибок не
выдавали, вот я и подумал...

я правильно понял, что 4К hex можно прошить в 2к MK ?
и ни чего не случится? в смысле должно "фунциклировать"?

спасибо всем  ёщё раз
creatur
 
Сообщения: 8
Зарегистрирован: 09 мар 2006, 15:40

Сообщение avr123.nm.ru » 10 мар 2006, 01:41

creatur писал(а):я правильно понял, что

4К hex можно прошить в 2к MK ?  и ни чего не случится?

в смысле должно "фунциклировать"?


Компилятор знает каков размер памяти используемого МК и выдает после компиляции размер программы относительно размера памяти.

Если прога будет больше то будет ОШИБКА ! не будет HEX'а вообЧе !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 19