Страница 1 из 1
Таймер с дискретностью 0,1 с
Добавлено: Сб ноя 30, 2013 21:21:15
sanya123
Здраствуйте, интересует следующее реально ли подправить прошивку этого
http://bezkz.su/publ/300411-42-1-0-411.html таймера чтобы была дискретность 0,1с и максимальное время 99с. Хотя уже сам понял что нужно будет добавлять еще один разряд индикатора, может кто видел где нить подобную схему с исходником чтобы подправить можно было. Предполагаемый пик 628 или 84.
Уже задолбался искать подобное прошу помощи.
Re: Таймер с дискретностью 0,1 с
Добавлено: Вс дек 01, 2013 01:53:31
sanya123
Вот нашел по моему более подходящий вариант
http://microsxema.ru/archives/283
Re: Таймер с дискретностью 0,1 с
Добавлено: Вс дек 01, 2013 02:32:30
dr.doc
Так по второй ссылке таймер секундный, а вы вели речь о 0,1 секунде.
Re: Таймер с дискретностью 0,1 с
Добавлено: Вс дек 01, 2013 02:42:05
sanya123
Меня интересует можно ли в исходниках по первой либо второй ссылке подправить чтобы таймер имел дискретность 0,1с. По второй мне кжется будет проще т.к. там уже есть 3х разрядный индикатор, в котором третий разряд будет считать десятые части секунды, както так я себе это представляю, но вот че там править в исходнике незнаю.
Re: Таймер с дискретностью 0,1 с
Добавлено: Вс дек 01, 2013 02:51:37
dr.doc
Строки 259, 261 проекта. Но! это скорее всего, т.к. пишу я на ассемблере, а СИ знаю только очень поверхностно. Да и децимальную точку придется ведь зажигать, а если индикация динамическая, то это уже несколько сложней. Удачи вам.
Re: Таймер с дискретностью 0,1 с
Добавлено: Вс дек 01, 2013 02:58:22
sanya123
Будем пробовать чето длелать, но завтра,утро вечета мудреней. Я так понял нужно править здесь но никак не пойму зависимость этих циклов которые 65536 от частоты кварца в схеме который 8 МГц
Код: Выделить всё
if(TMR1IE&&TMR1IF)
{
// uses 1 variable; unsigned long bres
// gets here every TMR1 16bit int (every 65536 ticks)
TMR1IF = 0;
Bres += 65536; // add 65536 ticks to bresenham total
if(Bres >= 2000000) // if reached 1 second!
{
Bres -= 2000000; // subtract 1 second, retain error
if(Sec_i)
{
Sec_i--;
}
else
{
Re: Таймер с дискретностью 0,1 с
Добавлено: Вс дек 01, 2013 03:14:53
dr.doc
65536 - это разрядность таймера в МК, а 2 миллиона - это 8 МГц/4 - тактовая частота шины.
Re: Таймер с дискретностью 0,1 с
Добавлено: Вс дек 01, 2013 09:09:19
Soir
sanya123 писал(а):...дискретность 0,1с и максимальное время 99с...Уже задолбался искать подобное прошу помощи.
Здесь поищите.
Re: Таймер с дискретностью 0,1 с
Добавлено: Вс дек 01, 2013 17:43:20
Аlex
sanya123 писал(а):Будем пробовать чето длелать, но завтра,утро вечета мудреней. Я так понял нужно править здесь но никак не пойму зависимость этих циклов которые 65536 от частоты кварца в схеме который 8 МГц
Код: Выделить всё
if(TMR1IE&&TMR1IF)
{
// uses 1 variable; unsigned long bres
// gets here every TMR1 16bit int (every 65536 ticks)
TMR1IF = 0;
Bres += 65536; // add 65536 ticks to bresenham total
if(Bres >= 2000000) // if reached 1 second!
{
Bres -= 2000000; // subtract 1 second, retain error
if(Sec_i)
{
Sec_i--;
}
else
{
Этот кусок кода, есть ничто иное как создание секундных интервалов по алгоритму Брезенхема. К индикации никакого отношения не имеет.