roboforum.ru

Технический форум по робототехнике.
Текущее время: 20 май 2025, 19:26

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Часы (глупый вопрос)
СообщениеДобавлено: 16 май 2006, 23:51 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Захотелось мне впихнуть в робота часы реального времени. Сделал таймер со срабатыванием раз в секунду. А теперь чешу репу:

Есть прерывание. Обнуление таймера надо проводить до выполнения кода или это обязательно делать в конце функции-обработчика? Но ведь если от прерывания до обнуления будет выполняться действие - часы будут отставать?  :roll:

Код:

void timer1_ovf_isr(void)
{

sec++;
if(sec==60){sec=0;min++;}
if(min==60){min=0;sec=0;hr++;}
if(hr==24){hr=0;min=0;sec=0;}

//Вот эти вот строчки можно в начало?
TCNT1H = 0xC2; //reload counter high value
TCNT1L = 0xF7; //reload counter low value
}



Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 май 2006, 00:09 
Не в сети

Зарегистрирован: 23 июл 2005, 00:39
Сообщения: 63
Откуда: Казань
Часы и тому подобные вещи делают с использованием режима Clear Timer on Compare. Как раз для того, чтобы не перегружать счётчик самому.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 май 2006, 00:24 
Не в сети

Зарегистрирован: 17 янв 2006, 10:16
Сообщения: 56
Откуда: Москва
А ещё лучше DS1307 взять .. Пускай себе считает а проц своими делами занимается а когда ему время понадобится спросит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 17 май 2006, 00:59 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Не, внешний не катит, плата старая... В новом будет, а в этом вот приходится извращаться...  :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 24 июн 2006, 18:55 
Не в сети

Зарегистрирован: 01 май 2006, 23:00
Сообщения: 71
Откуда: Ukrain
Я тебе советую, считать только секунды от 0 до 86399. А вычислять часы, минуты, секунды уже в обработчике отображения данных. Таким образом, будет уменьшена задержка, а соответственно и погрешность.
Код получиться такой:
Код:
long int sec

void timer1_ovf_isr(void)
{
if (sec < 86399)
 sec++;
else
 sec=0;
 
//Вот эти вот строчки можно в начало?
TCNT1H = 0xC2; //reload counter high value
TCNT1L = 0xF7; //reload counter low value
}


Последний раз редактировалось SS 26 июн 2006, 13:57, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 24 июн 2006, 19:34 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
и НУЖНО в начало, чтоб счет был точным.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 июн 2006, 00:02 
Не в сети

Зарегистрирован: 23 июл 2005, 00:39
Сообщения: 63
Откуда: Казань
Не нужно в начало. Нужно CTC использовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 июн 2006, 14:00 
Не в сети

Зарегистрирован: 01 май 2006, 23:00
Сообщения: 71
Откуда: Ukrain
Кстати нашел готовую библиотеку, поищи там:
http://electronix.ru/forum/index.php?showtopic=10934


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 26 июн 2006, 23:31 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Вопрос в общем-то давно снят... Но все равно пасибо, погляжу как умные люди делают...  :roll:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO