Нужен оптимальный алгоритм RTC

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Нужен оптимальный алгоритм RTC

Сообщение МитяРа »

ploop писал(а):т.к. нет начала и нет конца на данном промежутке времени.
Философ лохматый..
ploop писал(а):вместе!
Уж тогда-то у мя будет время объяснить те про фронт и спад.. :)))
ploop писал(а):сделать без привязки к протоколу!
Тогда ищи описание на все протоколы, анализируй и выяви основную закономерность..
А там и будем конкретно думать..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Нужен оптимальный алгоритм RTC

Сообщение Мастер Ломастер »

ploop писал(а):Кто еще хочет размяться? :)

Алгоритм лучше словами. Свой тоже опишу.
Есть простой алгоритм декодирования команд пульта ДУ. Любой протокол кодирования передаёт биты только одним способом - длительностями импульсов. И отличаются длинный и короткий импульсы всегда в два раза.
Нам достаточно просто отличить длинный импульс от короткого и сохранить в виде битов. Запомнив результат, можно "обучить" своё устройство практически любому пульту ДУ подходящей несущей частоты.
что-то очень уж похоже на труды ARV : http://arv.radioliga.com/content/view/219/43/ :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Нужен оптимальный алгоритм RTC

Сообщение ploop »

Не знаю, я бегло смотрел его труды, т.к. был поглощён своей идеей. Почитаю повнимательней. Но тут моё изобретение, как говорится, пусть велосипед, но свой. :)
Родился из этой темы http://radiokot.ru/forum/viewtopic.php?t=53875&f=20 и успешно был применён. Теперь хочется расширить функциональность алгоритма.

Идея такая: после поднятия флага захвата (он поднимается после считывания N бит, по которым точно идентифицируется кнопка), запустить отсчет времени. Например полсекунды. Если прерывание с опять сработало - очищаем счетчик времени, и ставим флаг, что кнопка повторяется, но биты не считываем. И так до тех пор, пока не прекратится сигнал.

Короче - после первого считывания тупо смотрим на любой сигнал. Маловероятно, что в момент отпускания кнопки кто-то нажмёт кнопку другого пульта.
FlySnake
Мучитель микросхем
Сообщения: 429
Зарегистрирован: Пт ноя 20, 2009 20:38:12
Откуда: Калининград (Koenigsberg)
Контактная информация:

Re: Нужен оптимальный алгоритм RTC

Сообщение FlySnake »

По поводу RTC ещё актуально? По-моему проще считать секунды (unix-time) и потом когда нужно время использовать posix функции работы со временем: strftime, ctime, gmtime и т.д. Если их нет стандартной либе для вашего проца, то всегда можно взять из glibc. Так в прерывании считаются только секунды, а когда нужно человеческое время - вызываем функцию, парсящую кол-во секунд в нужный формат где-то в основном цикле.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Нужен оптимальный алгоритм RTC

Сообщение ploop »

Актуально, всё пока отлажено в виде подпрограмм но не слеплено в кучу, так что можно много вариантов опробовать.
По-моему проще считать секунды (unix-time) и потом когда нужно время использовать posix функции работы со временем: strftime, ctime, gmtime и т.д. Если их нет стандартной либе для вашего проца, то всегда можно взять из glibc.
Это первая мысль была.
Но во-первых, я пишу на чистом ассемблере, и готовые сишные либы использовать не могу (только алгоритм), во-вторых - я нашел реализацию этих функций и ужаснулся сложности алгоритмов для такой, казалось бы, тривиальной задачи.
Они отлично подходят для "большого" программирования или для жирных МК, но тут критична скорость выполнения и малый объём. Так что пришлось отказаться.
Реклама
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Нужен оптимальный алгоритм RTC

Сообщение МитяРа »

FlySnake писал(а):По-моему проще считать секунды
Интересный вариант.. Как нить на досуге - можно будет поразмяться.. :wink:
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Нужен оптимальный алгоритм RTC

Сообщение ploop »

МитяРа, там будет полно самых тяжёлых вещей для МК - делений. Если только не вывернуться какими-нибудь хитростями, типа сдвигов и масок. Но я не знаю, как тут быть с количеством дней в месяце и всякими високосностями...
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Нужен оптимальный алгоритм RTC

Сообщение МитяРа »

ploop писал(а):там будет полно самых тяжёлых вещей для МК - делений.
А чё в AVR разъве нет операции деления? :)) :roll:

По любому это сначала думать надо.. Это-же сколько байт под хранение текущих секунды надо отводить, что-б скажем "оттикать" десяток годков.. :roll:
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Нужен оптимальный алгоритм RTC

Сообщение МитяРа »

МитяРа писал(а):
ploop писал(а):там будет полно самых тяжёлых вещей для МК - делений.
А чё в AVR разъве нет операции деления? :)) :roll:

По любому это сначала думать надо.. Это-же сколько байт под хранение текущих секунды надо отводить, что-б скажем "оттикать" десяток годков.. :roll:
P.S. Хмм.. посчитал, всего 4 байта получилось.. :)))
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Нужен оптимальный алгоритм RTC

Сообщение Engineer_Keen »

Там и умножение-то только в мегах есть :(
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Нужен оптимальный алгоритм RTC

Сообщение ploop »

32-битный формат используется. Да, 4 байта.
19 января 2038 года в 03:14:08 по всемирному времени значение переменной типа time_t, отсчитывающей число секунд, прошедших с 1 января 1970 года, достигнет 2³¹, что может привести к ошибочной интерпретации этого числа как отрицательного. Возможное решение данной проблемы состоит в использовании не 32-битной, а 64-битной переменной для хранения времени (что и делается во всех современных 64-битных операционных системах), чего хватит ещё на 292 миллиарда лет.
© Вики
А чё в AVR разъве нет операции деления?
И умножения во многих нет.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Нужен оптимальный алгоритм RTC

Сообщение Аlex »

ploop писал(а):Но я не знаю, как тут быть с количеством дней в месяце и всякими високосностями...
Кол-во дней вычислять по таблице. А вискокосный год вычислить проще простого. Вычел 2000 и смотришь 2 младших бита в результате (лог. операция И). Если они оба = 0, то год високосный.
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Нужен оптимальный алгоритм RTC

Сообщение МитяРа »

Аlex писал(а):Вычел 2000 и смотришь 2 младших бита в результате (лог. операция И)
Тогда и вычитать ничего не надо - замаскировал и оставил эти-же два бита.. :))

P.S. Аlex, с назначением тя.. :beer:
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Нужен оптимальный алгоритм RTC

Сообщение Аlex »

МитяРа писал(а):замаскировал и оставил эти-же два бита.. :))
Да, кстати, можно и не вычитать. Просто проверил 2 бита и всё. Как-то не подумал об этом :))
МитяРа писал(а):P.S. Аlex, с назначением тя.. :beer:
Пасиб :roll: :beer:
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Нужен оптимальный алгоритм RTC

Сообщение ploop »

В самом первом посте код - так и проверяется на високосность.
Кол-во дней вычислять по таблице.
Опять делить, чтобы получить месяц. Короче везде делить...
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Нужен оптимальный алгоритм RTC

Сообщение МитяРа »

ploop писал(а):Короче везде делить...
Можно не делить, а умножить на 1/Х.. :)))
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Нужен оптимальный алгоритм RTC

Сообщение ploop »

Дык пишу: LDI R16, 1.547E-3.822 а он зараза ругается :(
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Нужен оптимальный алгоритм RTC

Сообщение Engineer_Keen »

ploop писал(а):Дык пишу: LDI R16, 1.547E-3.822 а он зараза ругается :(
Лучше все-таки вычитать и двигать :)))
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Нужен оптимальный алгоритм RTC

Сообщение МитяРа »

ploop писал(а):а он зараза ругается
А разве можно в такой записи дробную степень писать?
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Нужен оптимальный алгоритм RTC

Сообщение ploop »

Ладно, если серьёзно - ни кто не видел реализации unix-time на тощих МК (желательно на асме)?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»