Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как поделить 2 32х битных числа на 32768?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
mantech
Собственно, мозги уже замылились, если кто знает, подскажите.

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

Как лучше делать? Есть ли в компиляторе какой-либо тип инт 64 бита, чтоб закинуть в него все это и сдвинуть на 15 вправо?
ataradov
#include <stdint.h>

uint64_t value = ((uint64_t)hi << 32) | lo;
value >>= 15;
Golikov A.
считываются они тоже элементарно

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

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

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


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

uint32_t Sec = (((uint32_t)high_val << 17) | ((uint32_t)low_val >> 15)) - получите диапазон времени от 0 до 4 294 967 296 секунд, то есть 136 лет...
mantech
Цитата(Golikov A. @ Apr 30 2015, 23:04) *
читаете старший регистр
младший
старший

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



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

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