Перейти к содержанию
    

Как поделить 2 32х битных числа на 32768?

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

 

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

 

Как лучше делать? Есть ли в компиляторе какой-либо тип инт 64 бита, чтоб закинуть в него все это и сдвинуть на 15 вправо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

читаете старший регистр

младший

старший

 

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

читаете еще раз младший.

 

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

 

 

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

 

uint32_t Sec = (((uint32_t)high_val << 17) | ((uint32_t)low_val >> 15)) - получите диапазон времени от 0 до 4 294 967 296 секунд, то есть 136 лет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

читаете старший регистр

младший

старший

 

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

читаете еще раз младший.

 

 

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

 

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

Жаль, не знаю лично этого разработчика, а то высказал бы все, что думаю о нем и его "творении" :smile3009:

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...