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

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

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

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

ploop писал(а):Опрос в главном цикле,
Мя обычно делаю такое в "фоновом" режиме по прерыванию от внутреннего таймера..

P.S. На правах офф-топа:
Обработка идёт побитно, т.е. когда обработаются все биты, за N-ое количество прерываний, то матрица значений переворачивается на 90 градусов и значения записываются в выходные регистры..
[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 писал(а):Ну так и у меня - по секундному таймеру.
ты не понял, мя по прерыванию не считываю весь датчик целиком, а считываю его побитно, если "длина температуры" 12 бит, то считывается за 12 прерываний от таймера и плюс ещё запуск преобразования..
Мя так и написал:
МитяРа писал(а):за N-ое количество прерываний,
[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 »

ааа, теперь ясно. Не, у меня и так нормально должно быть, прерывания разрешены всегда, кроме приёма/передачи одного бита (сам знаешь, временнЫе задержки должны быть чёткими). А всё остальное (приём байта, расчет CRC) может быть прерван прерываниями, но тут не страшно.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
МитяРа
Модератор
Сообщения: 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 »

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

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

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

ploop писал(а):Так что выкладывай статью!
Сделаю - обязательно выложу..

Кстати, обработку RTC мя когда-то точно так-же сделал - без переходов, простым линейным алгоритмом..
[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

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

Принцип - помню, а по поводу реализации надо сосредоточится и расписать, что да как..
Это не быстро, может сегодня вечером время будет, а может позже..

P.S. Только у мя всё под МК51 заточено, но думаю его можно на AVR-ки "натянуть"... :))
[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 писал(а):Словами сможешь алгоритм описать?
могу описать на Си - по-моему, читается легко :)

Код: Выделить всё

if(++second >= 60){
   second = 0;
   if(++minut >= 60){
      minut = 0;
      if(++hour >= 24){
         hour = 0;
         if(++day >= day_of_mon[mon]){
            day = 1;
            if(++mon >= 12){
               mon = 0;
               year++;
            }
         }
      }
   }
}
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

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

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

Мастер Ломастер писал(а):могу описать на Си
Не смог - переходы всё-таки в Си-шной программе присутствуют.. :))
[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
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

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

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

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

Мастер Ломастер писал(а):не понял... какие переходы, куда?
Мя писал:
МитяРа писал(а):обработку RTC мя когда-то точно так-же сделал - без переходов, простым линейным алгоритмом..
Будет время, сосредоточусь и вспомню, как сделал..
[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 писал(а):Вот мне и интересно, как МитяРа без них умудрился?
Всё достаточно просто..
Делаем инкремент секунд и если полученное значение равно 60-ти, то устанавливаем бит инкремента минут, а секунды обнуляем маской..
То-же самое делаем для минут с выставлением бита инкремента часов, только часы сравниваем с 24-мя..

Преобразование бит->байт маски делается двумя командами:
1. обнуляем аккумулятор.
2. складываем, аккумулятор+0FFh+бит переноса CY..
[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 »

Хм... Хорошая тренировка для мозга!
В принципе я понял как это сделать: сравниваем, дальше складываем с переносом. Если при сравнении выскочит флаг переполнения, сложение сработает.

Ща разделаюсь с работой - попробую реализовать :)
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

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

МитяРа писал(а):
ploop писал(а):Вот мне и интересно, как МитяРа без них умудрился?
Всё достаточно просто..
Делаем инкремент секунд и если полученное значение равно 60-ти, то устанавливаем бит инкремента минут, а секунды обнуляем маской..
То-же самое делаем для минут с выставлением бита инкремента часов, только часы сравниваем с 24-мя..

Преобразование бит->байт маски делается двумя командами:
1. обнуляем аккумулятор.
2. складываем, аккумулятор+0FFh+бит переноса CY..
если вы сумеете мне объяснить, каким способом БЕЗ ПЕРЕХОДОВ, т.е. ПРОСТО ЛИНЕЙНО вы реализуете вот этот кусочек вашего алгоритма:"и если полученное значение равно 60-ти, то устанавливаем бит инкремента минут, а секунды обнуляем маской..", я буду вам очень признателен :))) но у меня есть предположение, что в вашем алгоритме присутствуют все-таки JNB, JB или DJNZ (в применении к 51-ому семейству)...
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

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

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

Мастер Ломастер писал(а):у меня есть предположение, что в вашем алгоритме присутствуют все-таки JNB, JB или DJNZ (в применении к 51-ому семейству)
Не присутствуют.. :))
Вся суть в том, что в программе, какой-бы она не была, присутствует всего одна команда перехода - LJMP, которая закольцовывает основной цикл..
А всё остальное делается арифметикой и логикой..

Если интересно, то могу для 51-го написать обработку часов таким образом..
[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 писал(а):сравниваем, дальше складываем с переносом.
Читай внимательно - сначала инкремент, а только потом - сравниваем с концом допустимого диапазона..
[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 »

Читай внимательно - сначала инкремент, а только потом - сравниваем с концом допустимого диапазона..
Смысла не понял... смотри ниже

Код: Выделить всё

lds r16,seconds ; грузим секунды 
cpi r16,60 ; сравниваем
adc r16,null ; Если не перевалило - r16 увеличится на 1
; null - регистр с нулём
Думаю, как обнулить, не потеряв флаг переноса... блин, поработал называется :)))
то устанавливаем бит инкремента минут
Этот бит где?
Закрыто

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