Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
12.06.2011, 23:15
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Не отрабатывается нужная задержка
здравствуйте дорогие друзья!
Нужно отработать заданную задержку на ATtiny2313.
Пишу на СИ и симмулирую в PROTEUS е .
тактитуется мк внутренным RC генератором 4 MHz.
Нужно сформировать задержку в 0.2 ms в прерывании INTO частотой 500 Hz.
Прерывание по переднему фронту импульсов.
делаю так:
в качестве шага беру период тактов 1/4 000 000 =0.25 us.
далее находим сколько раз поместится этот шаг в наш интервал
0.2 ms=200us т.е. 200/0.25 =800(DEC)=(0x320)Hex и пищем:
Int a;
--
FOR(a=0;a‹0x320;a++)
{};
---
однако полученная задержка при симмулировании в протеусе несколько раз длинее нужной.
Прошу помощи опытных друзей , чем может быть причина ?
Правильны ли мои действия?
Спасибо заранее.
|
|
|
|
12.06.2011, 23:45
|
|
Гражданин KAZUS.RU
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
|
Re: не отрабатывается нужная задержка
А Вы в протесе, в окне свойств 2313, в поле CLKDIV8 выбрали unprogrammed? Там по умолчанию стоит programmed.
|
|
|
|
13.06.2011, 00:33
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Не отрабатывается нужная задержка
да не, тут подход в корне не верный. Либо задержку писать на асме, либо по прерыванию в таймере, что куда профессиональнее.
|
|
|
|
13.06.2011, 07:02
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Не отрабатывается нужная задержка
да частота не делится на 8 ,это только для 8 MHz генератора, а уменя работает на 4 Mhz.
Дело в том ,что все работает четко т.е. любая задержка отрабатывается без проблем но просто нужно подогнать под нужную ,а мне нужно узнать почему по моему алгоритму не работает т.е. получается длинее расчетной.
В чем причина?
Спасибо.
|
|
|
|
13.06.2011, 07:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Не отрабатывается нужная задержка
На сколько длиннее? В разы или на несколько процентов
|
|
|
|
13.06.2011, 07:57
|
|
Прописка
Регистрация: 19.07.2006
Адрес: Russia,Yekaterinburg
Сообщений: 184
Сказал спасибо: 12
Сказали Спасибо 75 раз(а) в 43 сообщении(ях)
|
Re: Не отрабатывается нужная задержка
Сообщение от begun
|
Int a;
--
FOR(a=0;a‹0x320;a++)
{};
---
однако полученная задержка при симмулировании в протеусе несколько раз длинее нужной.
Прошу помощи опытных друзей , чем может быть причина ?
Правильны ли мои действия?
Спасибо заранее.
|
Причина в том что для вас в этой конструкции стоит как вам кажется одна операция
Цитата:
|
FOR(a=0;a‹0x320;a++)
{};
|
Но на деле давайте посчитаем
1 такт сложение, 2 такта переход 1 такт сравнение итого в 3 раза дольше чем вы запланировали. Если стоит оптимизация то я не ручаюсь и за эти разы
(для саморазвития посмотрите листинг ассемблерный)
Так что вариантов решения 2
1) Отказатся от подобной конструкции и использовать таймер
2) эмпирически подобрать число для нужной задержки, однако помните что при изменении степени оптимизации может все изменится.
__________________
Разработка электроники на заказ, написание ПО для ПК и МК.Обращайтесь в личку.
Последний раз редактировалось mobil2005; 13.06.2011 в 08:01.
|
|
|
|
13.06.2011, 07:59
|
|
Прописка
Регистрация: 19.07.2006
Адрес: Russia,Yekaterinburg
Сообщений: 184
Сказал спасибо: 12
Сказали Спасибо 75 раз(а) в 43 сообщении(ях)
|
Re: Не отрабатывается нужная задержка
Сообщение от begun
|
да частота не делится на 8 ,это только для 8 MHz генератора, а уменя работает на 4 Mhz.
|
А для работы таймера и не обязательно деление на 8. Что в таймер загрузил по тому он и будет работать хоть на делите 5 хоть на 35
__________________
Разработка электроники на заказ, написание ПО для ПК и МК.Обращайтесь в личку.
|
|
|
Сказали "Спасибо" mobil2005
|
|
|
13.06.2011, 18:06
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 866
Сказал спасибо: 230
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Не отрабатывается нужная задержка
да, вы правы.
в разных ситуациях получатся по разному и видимо не имеет смысла идти по пути такого формирования .
Нужно разобратся всетаки в ASSEMBLER е.
Заодно попробую с таймером.
Спасибо за дельный совет.
|
|
|
|
13.06.2011, 18:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Не отрабатывается нужная задержка
Сообщение от begun
|
Заодно попробую с таймером.
|
Угу... это типичная ошибка начинающих.. сделать ПОПРОЩЕ и ПОБЫСТРЕЕ...
Делайте с таймером, будет пахать и на АСМ и на СИ не будет зависить от оптимизации.
Освоите КАК НУЖНО формировать задержки.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:35.
|
|