Страница 1 из 1
Как получить 1 сек. задержку?
Добавлено: Вт сен 01, 2009 16:16:53
Terr0r!sT
Как расчитать число котрое нужно записать в регистр совпадения чтобы получить задержку 1сек, 1/10сек, 1/100сек???
Добавлено: Вт сен 01, 2009 17:04:36
Pooher
Зависит от частоты. Считаете, сколько времени затрачивается на один такт, и сколько тактов в секуде. Чистая математика.
Добавлено: Вт сен 01, 2009 17:34:36
Terr0r!sT
частота 1мГц, а как всё это сосчитать, можно формулу?
Добавлено: Вт сен 01, 2009 17:41:04
GP1
1 МГц = 1000000 имп в сек
Добавлено: Вт сен 01, 2009 17:55:17
Meteor
Terr0r!sT писал(а):как всё это сосчитать, можно формулу?
N=T/dt; dt=1/f;
где N - число (искомое); T- временной отрезок (1 сек или др); dt-длительность такта; f- тактовая частота в Гц(резонатора или источника импульсов).
Кратные величины стандартные кГц-1000 Гц, МГц-1000000 Гц;
Добавлено: Вт сен 01, 2009 17:55:38
WandererSc
И предделитель частоты надо учитывать.
Добавлено: Вт сен 01, 2009 17:55:39
Antol.St
тактовую частоту делишь на верх таймера получаешь кол-во переполнений в секунду.
делишь секунду на кол-во этих переполнений получаешь длительность одного переполнения
длительность одного переполнения делишь на верх таймера - получаешь длительность одного такта
дальше нужное время интервала делишь на длительность одного такта получаешь кол-во тактов его и записываешь в регистр совпадения
Пример для 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 - это число нужно записать в регистр
Добавлено: Вт сен 01, 2009 18:07:50
Terr0r!sT
sps за ответы, но почему то секунда даже на глаз слишком длинная получается

, может прошивку глянете???
Добавлено: Вт сен 01, 2009 18:19:00
__Alexander
Хороший у тя глаз.

Секунда твоя конечно длинее, но как на глаз, то после минут двух только видно.
---------------------------------
Добавлено: Вт сен 01, 2009 18:24:41
Terr0r!sT
а чё может быть не так???, прога просто выводит на индикатор 4 числа а по прерыванию уменьшает их
Добавлено: Вт сен 01, 2009 19:18:14
__Alexander
Terr0r!sT писал(а):а чё может быть не так???, прога просто выводит на индикатор 4 числа а по прерыванию уменьшает их
Да ниче, все нормально. Может я вопрос не правильно понял, у тя где глючит, в протеусе или в железе. Т.к. в протеусе на глаз очень плохо видно, точнее совсем не видно.
Выхода два: 1. В AVRStudio пошагово (F10) пройдись, или создай COFF (ELF) файл, и тоже по Ф10 пройдись в протеусе.
Вотс, прокрутил твой отсчет до 30 секунд. Вполне нормально работает.
Добавлено: Вт сен 01, 2009 19:29:11
Terr0r!sT
в железе и в протеусе работает 1:1, а за минуту он отстаёт на 11сек, легко проверить если рядом поствить часы, может в прошивке где ненужная задержка???
хотя найти её будет сложновато, т.к код немного запутан
Добавлено: Вт сен 01, 2009 19:35:41
__Alexander
Я код не смотрел и не буду.
Вы картинку видели? Я спецом прогнал от 9.59 до 00.30 и на все это потрачено протеусом 9.30 минут. Т.е. за девять минут все тютелька в тютельку. Может это у вас эталонные часы глючат?
------------------------------
Добавлено: Вт сен 01, 2009 19:52:09
Terr0r!sT
а протеус может тормозить?, часы виндовские открываю вроде правильно идут, да какая у вас версия протеуса?
Добавлено: Вт сен 01, 2009 20:04:24
__Alexander
Не понимаю, зачем протеус, если есть готовое железо? Возьмите нормальный секундомер и замеряйте время работы на железе.
-------------------------
Добавлено: Вт сен 01, 2009 20:11:37
Terr0r!sT
блин по ходу виндовские часы гнали, я щас также замерил и всё реально точно идёт, ещё раз спасибо за ответы
