реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ucos pic (18f452) timer ?, как получить это магическое число?
Lagman
сообщение Nov 1 2005, 20:21
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



В ucos-ii для pic18fxxx (18f452) тики идут каждые 10 мс при частоте кварца в 4МГц таймер программируется на счетный режим числом 55456.
Подскажите пожалуйста откуда получается магическое чило TMR0H = 0xD8 TMR0L = 0xA0 ( 55456 или 65535 - 55456 = 10079) для кварца в 4 МГц, я понимаю что это прерывание будет каждые 10мс, но ведь получается что переполнение происходит при переполнении таймера (FFFF в 0000) я получаю число 10000 т.е. 400000(Мгц)/4(по даташиту Fosc/4)*0,01 (10мс)= 10000 (65535-10000=55535), откуда берутся дополнительные +79 (10079-10000). И как мне расчитать это число для кварца в 8МГц, и 8МГц+PLL т.е. 32МГц?
P.S. Смотрю на исходник PICOS18 (www.picos18) и вижу что простым увеличением на 2 или на 8 ничего не получится.
Go to the top of the page
 
+Quote Post
gmax
сообщение Nov 2 2005, 14:21
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 55
Регистрация: 25-08-05
Из: Украина, Харьков
Пользователь №: 7 954



Цитата(Lagman @ Nov 1 2005, 22:21)
откуда берутся дополнительные +79 (10079-10000). И как мне расчитать это число для кварца в 8МГц, и 8МГц+PLL т.е. 32МГц?

За время между моментом возникновения ПЕРЕПОЛНЕНИЯ(!) (ну и, само собой, прерывания) до загрузки числа в регистры таймера, последний успевает насчитать вышеуказанные +79.
Как расчитать:
для 8 МГц:
значение для загрузки = (0x10000 - (10e-2) / (Fosc / 4)) + 79
Для 32 МГц придется включать Prescaller. С ним рассчет будет сложнее.
А с какой точнотью нужно время-то мерять? Неужели +/- n*10 мкс так важны?
Go to the top of the page
 
+Quote Post
greg
сообщение Nov 2 2005, 15:34
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 44
Регистрация: 7-07-05
Из: МОСКВА
Пользователь №: 6 604



Цитата(Lagman @ Nov 2 2005, 00:21)
В ucos-ii для pic18fxxx (18f452) тики идут каждые 10 мс при частоте кварца в 4МГц таймер программируется на счетный режим числом 55456.
Подскажите пожалуйста откуда получается магическое чило TMR0H = 0xD8 TMR0L = 0xA0 ( 55456 или 65535 - 55456 = 10079) для кварца в 4 МГц, я понимаю что это прерывание будет каждые 10мс, но ведь получается что переполнение происходит при переполнении таймера (FFFF в 0000) я получаю число 10000 т.е. 400000(Мгц)/4(по даташиту Fosc/4)*0,01 (10мс)= 10000 (65535-10000=55535), откуда берутся дополнительные +79 (10079-10000). И как мне расчитать это число для кварца в 8МГц, и 8МГц+PLL т.е. 32МГц?
P.S. Смотрю на исходник PICOS18 (www.picos18) и вижу что простым увеличением на 2 или на 8 ничего не получится.
*


Для частоты 8 MHz, число загрузки определяется следующим образом:
10000us/(1/(8000000MHz/4)) = 10000us/0,5us = 20000 (0x4E20); Следовательно, число загрузки таймера 0xFFFF-0x4E20 = 0xB1DF (TMR0H=0xB1,TMR0L=0xDF); Для частоты 32 Mz необходимо подключить на вход таймера предделитель, например с коэффициентом деления 2, а расчёт как указано выше. Успехов !
Go to the top of the page
 
+Quote Post
Lagman
сообщение Nov 2 2005, 21:44
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Спасибо.
Про расчет таймера я как раз все понял, вот сижу прикидую где еще +79 (для 4МГц) берется, завтра по даташиту буду смотреть сколько тратится времени на загрузку таймера, прерывание и выход из него.

Конечно точности большой не надо, не ракету делаю smile.gif, но всеже хочется понять, планируется организовать зарядку аккумуляторов ( и не только) и выдерживать их определенное время (около 2часов) под зарядкой, вот и пытаюсь понять сколько составит ошибка на 2-х часах.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016