roboforum.ru

Технический форум по робототехнике.
Текущее время: 20 фев 2025, 22:25

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Определить, является ли число целым
СообщениеДобавлено: 09 мар 2006, 16:31 
Не в сети

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

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

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

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

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

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

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

заранее спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 мар 2006, 17:13 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Может "прямее" сделать?

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

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

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

и там:

-> Краткий Курс микроконтроллеры AVR - где взять примеры, куски кода ШИМ=PWM Servo LCD i2c 1-wire MotorControl - как сделать электронное устройство - основы электроники


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 мар 2006, 17:16 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
кстати, а почему б вам не задать вопрос в существующую тему - для начинающих по МК ???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 мар 2006, 18:38 
Не в сети

Зарегистрирован: 09 мар 2006, 15:40
Сообщения: 8
Как это сделать - смотри там:

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


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

Извиняюсь, что не там вопрос задал, мне теперь туда или
можно здесь продолжать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 мар 2006, 18:58 
Не в сети
отсылающий читать курс
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 мар 2006, 19:39 
Не в сети

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

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

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

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

есть ли у кого время и настроение глянуть на мое "безобразие" на си ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 мар 2006, 20:17 
Не в сети

Зарегистрирован: 18 дек 2004, 03:14
Сообщения: 155
Откуда: Москва
Есть такая команда: деление по модулю; возвращает остаток от деления.
в С это %, т.е. для проверки делимости на 7 надо написать
Код:
if (x % 7 == 0)

или, эстетично :)
Код:
if ( !(x % 7) )


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 мар 2006, 20:40 
Не в сети

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


7-8 периодов - это 7-8 констант, так? не то, чтобы слишком много.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 мар 2006, 20:44 
Не в сети

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


Ничего не распухнет, п/п деления в CV всего-то 14 слов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 мар 2006, 21:14 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
creatur писал(а):
у меня получается слишком много констант, как следствие  hex-file =~ 2k  - в VMLAB неработает совсем,
в реале - соотвественно тоже нет ( вернее не совсем по
зададанному алгоритму ...)


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

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


страница 5 краткого курса  avr123.nm.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 09 мар 2006, 21:49 
Не в сети

Зарегистрирован: 09 мар 2006, 15:40
Сообщения: 8
avr123.nm.ru писал(а):
страница 5 краткого курса  avr123.nm.ru


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

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


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

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

спасибо всем  ёщё раз


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 мар 2006, 01:41 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
creatur писал(а):
я правильно понял, что

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

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


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

Если прога будет больше то будет ОШИБКА ! не будет HEX'а вообЧе !


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 4 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO