andrey videoplus
Nov 15 2010, 13:17
Проблема в следующем: формирую импульс длительностью 2 сек. с кварцем 16МГц. Программно ганяю на AVR studio все в порядке
В реальном режиме смотрю осцилографом - около 250мс, ставлю кварц на 8 МГц - около 500 мс.
Использую mega8515, фьюзы выставил так: млад. 11111111 старш. 11001001.
Кто-то может подсказать в где и в чем искать проблему?? Или дайте ссылку где обсуждалось.
Заранее спасибо.
Cyber_RAT
Nov 15 2010, 14:41
хотя бы код выложите, а то не все телепаты в в этом мире...
p.s. (а может при оптимизации ваши паузы выкидываются? , но это гадание на кофейной гуще без кода)
ILYAUL
Nov 15 2010, 17:33
CKDIV8 ??
arttab
Nov 16 2010, 03:08
если CKDIV8, то длительность вырастит в 8 раз, а не уменьшиться.
проверьте настройки симуляции - системную частоту
Но, тем не менее, 2 сек / 250мс = ровно 8.
arttab
Nov 16 2010, 03:28
Цитата
формирую импульс длительностью 2 сек. с кварцем 16МГц
Цитата
смотрю осцилографом - около 250мс, ставлю кварц на 8 МГц - около 500 мс
то есть, при включенном делители длительность импульса должна увеличиться в 8 раз. а чтобы она уменьшилась надо поднять частоту тактирования в 8 раз.
утро. надо попить кофе

и все встанет на свои места
andrey videoplus
Nov 16 2010, 10:15
Спасибо всем кто откликнулся.
Вот эта сволочЪ!!! что самое интересное есть точно такая же, но формирует милисек, (загружает другое число и коэф.деления). Эти места отметил. Но она работает нормально. Осцилографом смотрю - длительность соответствует расчетным.
А эта.............. наверно что-то не доучил. Посмотрите, пожалуйста:
-----------------------------------------------------------------------------------------
в 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
Nov 16 2010, 10:37
Цитата(andrey videoplus @ Nov 16 2010, 13:15)

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

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

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

Да, пошло. Вроде не первый год программирую, но....... читать мануал надо всегда!!!!!
Только вот что интересно: почему в процедуре по формированию млсек, не было этого явления. Ведь там тоже 16-разрядная константа загружалась...........
А код?
andrey videoplus
Nov 17 2010, 08:38
точно такой же как выставленный выше, только загружались другие константы.
Хотя, может на осциллографе недоглядел и поставил мксек вместо млсек и подумал что все нормально.
Уже не важно, главное помогли найти причину, спасибо.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.