Как получить 1 сек. задержку?
- Сообщения: 8
- Зарегистрирован: Вт сен 01, 2009 16:08:42
Как расчитать число котрое нужно записать в регистр совпадения чтобы получить задержку 1сек, 1/10сек, 1/100сек???
- Реклама
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
- Сообщения: 8
- Зарегистрирован: Вт сен 01, 2009 16:08:42
1 МГц = 1000000 имп в сек
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
N=T/dt; dt=1/f;Terr0r!sT писал(а):как всё это сосчитать, можно формулу?
где N - число (искомое); T- временной отрезок (1 сек или др); dt-длительность такта; f- тактовая частота в Гц(резонатора или источника импульсов).
Кратные величины стандартные кГц-1000 Гц, МГц-1000000 Гц;
Последний раз редактировалось Meteor Вт сен 01, 2009 17:55:59, всего редактировалось 1 раз.
- Реклама
- Сообщения: 4077
- Зарегистрирован: Вс мар 22, 2009 17:31:41
тактовую частоту делишь на верх таймера получаешь кол-во переполнений в секунду.
делишь секунду на кол-во этих переполнений получаешь длительность одного переполнения
длительность одного переполнения делишь на верх таймера - получаешь длительность одного такта
дальше нужное время интервала делишь на длительность одного такта получаешь кол-во тактов его и записываешь в регистр совпадения
Пример для 10ms:
1000000/65535=15.2590219
1/15.2590219=0.065535
0.065535/65535=0.000001
0.01/0.000001=10000 - это число нужно записать в регистр
Пример для 1 sec:
предделитель на 64
1000000/64/65535=0.238422217
1/0.238422217=4.19424
4.19424/65535=0.000064
1/0.000064=15625 - это число нужно записать в регистр
делишь секунду на кол-во этих переполнений получаешь длительность одного переполнения
длительность одного переполнения делишь на верх таймера - получаешь длительность одного такта
дальше нужное время интервала делишь на длительность одного такта получаешь кол-во тактов его и записываешь в регистр совпадения
Пример для 10ms:
1000000/65535=15.2590219
1/15.2590219=0.065535
0.065535/65535=0.000001
0.01/0.000001=10000 - это число нужно записать в регистр
Пример для 1 sec:
предделитель на 64
1000000/64/65535=0.238422217
1/0.238422217=4.19424
4.19424/65535=0.000064
1/0.000064=15625 - это число нужно записать в регистр
- Сообщения: 8
- Зарегистрирован: Вт сен 01, 2009 16:08:42
sps за ответы, но почему то секунда даже на глаз слишком длинная получается
, может прошивку глянете???
- Вложения
-
- +проект для Proteus.rar
- (18.06 КБ) 184 скачивания
- Сообщения: 8
- Зарегистрирован: Вт сен 01, 2009 16:08:42
Да ниче, все нормально. Может я вопрос не правильно понял, у тя где глючит, в протеусе или в железе. Т.к. в протеусе на глаз очень плохо видно, точнее совсем не видно.Terr0r!sT писал(а):а чё может быть не так???, прога просто выводит на индикатор 4 числа а по прерыванию уменьшает их
Выхода два: 1. В AVRStudio пошагово (F10) пройдись, или создай COFF (ELF) файл, и тоже по Ф10 пройдись в протеусе.
Вотс, прокрутил твой отсчет до 30 секунд. Вполне нормально работает.
- Вложения
-
- 1.jpg
- (17.1 КБ) 289 скачиваний
- Сообщения: 8
- Зарегистрирован: Вт сен 01, 2009 16:08:42
- Сообщения: 8
- Зарегистрирован: Вт сен 01, 2009 16:08:42
- Сообщения: 8
- Зарегистрирован: Вт сен 01, 2009 16:08:42



