roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 01:28 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2005, 12:03
Сообщения: 3340
Откуда: Литва
прог. языки: asm
Вот что-то не нашел нигде принцип построения программы для больших промежутков времени (от 24ч. и до и т.д. например на неделю). Объясните, желательно "на пальцах" (словами). Видел на сях - ничего не понял. Примеров на асм не нашёл ваще... Мне б чисто принцип, или ссыль (или книгу) в которой сие рассказывается. (МК любой, AVR).

_________________
_________
Sincerely,
Vovan


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 01:59 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Ну, Вовааан! Вложенными циклами - очевидно же.

Повторить сто раз задержку на одну секунду - это сто секунд.
Повторить сто раз задержку на сто секунд - это десять тысяч секунд.

Или вы чего-то не договариваете? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 02:04 
Не в сети
Аватара пользователя

Зарегистрирован: 23 апр 2009, 17:03
Сообщения: 2639
Откуда: Москва, Самара
прог. языки: C#
Вы чего.. какие циклы???
Делаешь прерывание по таймеру, внутри счетчик.
Все равно есть main цикл для разноообразных задач,
там этот счетчик (который инкрементруется в прерывании) и проверяешь.
Остается настроить параметры прерывания.
Для пика это было бы примерно так:

#int_TIMER1 // Timer interrupt
void TIMER1_isr(void) {
// Счетчик тут
}

void main() {
// Переполнение будет v- 2/4/8
// FORMAT(1 / (48000000 / 4) * 4 * 65536, "0.0000")
setup_timer_1(T1_INTERNAL | T1_DIV_BY_4);
enable_interrupts(INT_TIMER1);
}

Ну на авр наверное тоже самое есть :)
Таймер зависит от частоты кварца и делителей (по сути это хардверные циклы).
По сути это не точный таймер, было бы неплохо синхронизировать с внешней RTC...
типа такой https://www.sparkfun.com/products/99


Последний раз редактировалось AndreiSk 12 мар 2013, 02:09, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 02:07 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
AndreiSk писал(а):
Все равно есть main цикл для разноообразных задач

Ну, это какие-то домыслы, инсинуации и интриги... :)

Я не говорил, что задержки обязательно нужно делать только в мэйне.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 08:22 
Не в сети
Аватара пользователя

Зарегистрирован: 15 сен 2007, 13:03
Сообщения: 6338
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович
если с хмега готов справиться, то там RTC с With a resolution of 1s, the
maximum timeout period is more than 18 hours (65536 seconds). ну а там уже посчитать пару раз такой период )

да и потребляет этот таймер ни о чем в ней.

_________________
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 12:21 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2005, 12:03
Сообщения: 3340
Откуда: Литва
прог. языки: asm
Думаю задержки любого вида приведут к накоплению погрешности (Michael_K).
RTC - походу выход (Duhas, AndreiSk).
А может всё же таймер, асинхронный режим с часовым кварцем попробовать?
Тут ведь вот какое дело: создать таймер любого вида для меня не проблема, проблема в наладке - мождь он за сутки и не далеко уйдёт (буду наблюдать целые сутки и не замечу). А потом начнет накапливать погрешность и врать и снова трать на него гору времени. Для эксперимента я построил на тиньке суточный цикл. Всё намано вроде, а сегодня (на 3-тьи сутки) заметил около 1 мин отставание (кварц 4мГц)... В гневе растоптал ногами! Спецом гонял его от нового и надежного аккумулятора (не от БП). Вот поэтому и возник вопрос: можно ли на АВР построить взрослый таймер?

_________________
_________
Sincerely,
Vovan


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 14:19 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
даже используя RTC внешние надо помучатся с калибровкой чтоб за неделю не убегало/отставало.
а уж на обычном кварце нереально. есть конечно в интернете трюки про супердлинные таймеры но это именно трюки.

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 14:26 
Не в сети
Аватара пользователя

Зарегистрирован: 05 фев 2008, 15:33
Сообщения: 2687
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович
У меня часы на RTC за год ушли вперед на 6 минут.
Все это время они лежали на полке выключенные.

_________________
Никто кроме нас!!!
4Robots.ru - Все для роботов!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 16:05 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Vovan писал(а):
Думаю задержки любого вида приведут к накоплению погрешности (Michael_K)

Я не понимаю этой фразы.
С фига ли? Не хочешь накапливать погрешность - не делай так, чтобы она накапливалась.
Запусти таймер пусть отсчитывает свои тактики. А ты их считай.

В цикле, счетчиком, в мэйне, в прерывании - это все равно.
Таймер только не останавливай - погрешность и не будет накапливаться.

Добавлено спустя 16 минут 52 секунды:
Грубо говоря, ставишь кварц на 8 Мгц, предделитель 1024, делаешь таймер с переполнением например на 31250.
Получаешь встающий флажок раз в четыре секунды. Аппаратно.
Хочешь прерывание вешай, хочешь в цикле жди, пока он встанет - главное не пропускай.
Это ведь не очень сложно - не пропускать события, происходящие раз в 4 секунды?
Не обязательно реагировать немедленно, ну проверил - отпработал, сбросил - главное в 4 секунды уложиться.
По-моему не такая уж сложная задача... Или как?
Можно и прерывание повесить - без проблем же.


Последний раз редактировалось Michael_K 12 мар 2013, 16:11, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 16:11 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
а кварц на самом деле на сколько? на 8000000.00 или примерно 8 ?:)

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 16:13 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2005, 12:03
Сообщения: 3340
Откуда: Литва
прог. языки: asm
Michael_K спасибо! Пока ничего не могу ответить. Понятно всё. Надо пробовать.

_________________
_________
Sincerely,
Vovan


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 16:17 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Это совсем другой вопрос. Вован говорил "задержки любого вида приведут к накоплению погрешности"
Если все упирается в стабильность кварца, то есть генераторы очень стабильные, например DS32KHZ. Единицы ppm - точно не помню
Да и нормальный кварц гейеровский включить честно с рекомендованными емкостями - он в свои даташитовские 20ppm будет укладываться.

Добавлено спустя 1 минуту 43 секунды:
http://www.maximintegrated.com/datashee ... vp/id/2940


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 16:18 
Не в сети
Аватара пользователя

Зарегистрирован: 05 окт 2005, 12:03
Сообщения: 3340
Откуда: Литва
прог. языки: asm
Я кстати и начал было тут про кварц домыслы разводить, но стёр. Ну вот наверное и причина: у меня в хозяйстве тока такие - 4мГц, 8мГц, 12мГц, 16мГц... Их и ставлю :oops:

_________________
_________
Sincerely,
Vovan


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 18:04 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
купи RTC со встроенным кварцем и температурной компенсацией. Конфетка!

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Циклический таймер с большими длительностями на AVR
СообщениеДобавлено: 12 мар 2013, 18:10 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
бонусом ещё и с календариком не придётся возиться.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 11


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

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