Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: формирование импульса, время отличается от расчетного
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
andrey videoplus
Проблема в следующем: формирую импульс длительностью 2 сек. с кварцем 16МГц. Программно ганяю на AVR studio все в порядке
В реальном режиме смотрю осцилографом - около 250мс, ставлю кварц на 8 МГц - около 500 мс.
Использую mega8515, фьюзы выставил так: млад. 11111111 старш. 11001001.

Кто-то может подсказать в где и в чем искать проблему?? Или дайте ссылку где обсуждалось.
Заранее спасибо.
Cyber_RAT
хотя бы код выложите, а то не все телепаты в в этом мире...

p.s. (а может при оптимизации ваши паузы выкидываются? , но это гадание на кофейной гуще без кода)
ILYAUL
CKDIV8 ??
arttab
если CKDIV8, то длительность вырастит в 8 раз, а не уменьшиться.

проверьте настройки симуляции - системную частоту
Xenia
Но, тем не менее, 2 сек / 250мс = ровно 8.
smile.gif
arttab
Цитата
формирую импульс длительностью 2 сек. с кварцем 16МГц


Цитата
смотрю осцилографом - около 250мс, ставлю кварц на 8 МГц - около 500 мс


то есть, при включенном делители длительность импульса должна увеличиться в 8 раз. а чтобы она уменьшилась надо поднять частоту тактирования в 8 раз.

утро. надо попить кофе smile.gif и все встанет на свои места
andrey videoplus
Спасибо всем кто откликнулся.
Вот эта сволочЪ!!! что самое интересное есть точно такая же, но формирует милисек, (загружает другое число и коэф.деления). Эти места отметил. Но она работает нормально. Осцилографом смотрю - длительность соответствует расчетным.
А эта.............. наверно что-то не доучил. Посмотрите, пожалуйста:
-----------------------------------------------------------------------------------------
в work загружаю кол.секунд для задержки, потом вызываю эту процедуру:
delay_s:
del_t_s1:
;------- установка таймера -------
ldi work3,$80
out TIMSK,work3
ldi work3,low(t_s) ----------- отличие вот здесь!!!!!!!!!!
out TCNT1L,work3
ldi work3,high(t_s) ----------- вот здесь!!!!!!!!!!
out TCNT1H,work3
;------- запуск ----------
ldi work3,$05 ----------- и вот здесь!!!!!!!!!!
out TCCR1B,work3
del_t_s2:
sbrs flag,fl_tim ---- жду флаг таймера
rjmp del_t_s2
cbr flag,fl_tim+1
dec work
brne del_t_s1
;------ остановка таймера
ldi work3,0
out TCCR1B,work3
ret
------------------------------------------------------------
Есть мысли?????
ILYAUL
Цитата(andrey videoplus @ Nov 16 2010, 13:15) *
Есть мысли?????

ЕСть, в счётные регистры 16- битных таймеров первым всегда загружается старший байт (high) И ТОЛЬКО ПОТОМ МЛАДШИЙ
andrey videoplus
Цитата(ILYAUL @ Nov 16 2010, 13:37) *
ЕСть, в счётные регистры 16- битных таймеров первым всегда загружается старший байт (high) И ТОЛЬКО ПОТОМ МЛАДШИЙ


Да, "прошляпил", действительно есть такое в описании. Спасибо)))
ILYAUL
Цитата(andrey videoplus @ Nov 16 2010, 16:11) *
Да, "прошляпил", действительно есть такое в описании. Спасибо)))

Работает?
andrey videoplus
Да, пошло. Вроде не первый год программирую, но....... читать мануал надо всегда!!!!!

Только вот что интересно: почему в процедуре по формированию млсек, не было этого явления. Ведь там тоже 16-разрядная константа загружалась...........
ILYAUL
Цитата(andrey videoplus @ Nov 16 2010, 17:31) *
Да, пошло. Вроде не первый год программирую, но....... читать мануал надо всегда!!!!!

Только вот что интересно: почему в процедуре по формированию млсек, не было этого явления. Ведь там тоже 16-разрядная константа загружалась...........

А код?
andrey videoplus
точно такой же как выставленный выше, только загружались другие константы.
Хотя, может на осциллографе недоглядел и поставил мксек вместо млсек и подумал что все нормально.
Уже не важно, главное помогли найти причину, спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.