реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
mantech
сообщение Apr 30 2015, 17:24
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Собственно, мозги уже замылились, если кто знает, подскажите.

Есть "часы" в мх6, в них есть счетчик, который инкрементируется каждую 1\32768 сек, счетчик в виде 2х регистров, которые еще надо как-то читать синхронно, но это другая тема, а вот, чтоб получить секунды, нужно поделить эти 2 регистра на 32768...

Как лучше делать? Есть ли в компиляторе какой-либо тип инт 64 бита, чтоб закинуть в него все это и сдвинуть на 15 вправо?
Go to the top of the page
 
+Quote Post
ataradov
сообщение Apr 30 2015, 18:48
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



#include <stdint.h>

uint64_t value = ((uint64_t)hi << 32) | lo;
value >>= 15;
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Apr 30 2015, 20:04
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



считываются они тоже элементарно

читаете старший регистр
младший
старший

если первое значение старшего НЕ совпадает с последним
читаете еще раз младший.

последние считанное старшее значение, и младшее (первый раз считанное или обновленное) - это ваше точное значение текущего момента %)


А для деления вам в принципе можно 64 битное число и не собирать,

uint32_t Sec = (((uint32_t)high_val << 17) | ((uint32_t)low_val >> 15)) - получите диапазон времени от 0 до 4 294 967 296 секунд, то есть 136 лет...
Go to the top of the page
 
+Quote Post
mantech
сообщение May 1 2015, 12:35
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Golikov A. @ Apr 30 2015, 23:04) *
читаете старший регистр
младший
старший

если первое значение старшего НЕ совпадает с последним
читаете еще раз младший.



Всем спасибо, попробую разные варианты.

А на счет считывания, почему и написал слово часы в кавычках, потому, что это изврат, а не часы реального времени, даже в аврках и то можно поделить аппаратно на 32768 и получать секундные прерывания и считывание счетчика сделано куда лучше - считывешь старший, затем младший и число одновременно переносится в регистр, про потребление в 50мка даже говорить нет слов... Просто не хочется ставить внешние часы, вот и маюсь с ними crying.gif
Жаль, не знаю лично этого разработчика, а то высказал бы все, что думаю о нем и его "творении" smile3009.gif

Сообщение отредактировал mantech - May 1 2015, 12:37
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016