LINUX.ORG.RU

История изменений

Исправление Zubok, (текущая версия) :

timer_count = Timer_A_getCounterValue(TIMER_A1_BASE);

Я бы вообще лучше напрямую с регистрами работал. Глянул API. Вот эта функция как бы натаскана на чтение таймера без его остановки и использует мажоритарный принцип, чтобы отсечь неправильное чтение. То есть он читает подряд, скажем, три раза и если два раза одно и то же значение, а третье запорото, то возвращает значение, которое выпало два раза. Близость «голосов» управляется переменной TIMER_A_THRESHOLD. В случае, когда таймер остановлен, три раза будет прочитано одно и то же значение. Не так страшно, в общем-то - это тоже все микросекунды. Кстати, это вот тут описано тоже MSP430 и timestamps (комментарий) . У тебя именно ситуация, когда ACLK и MCLK асинхронно идут - разные генераторы.

Но если ты останавливаешь таймер, то тебе, в общем-то не надо читать несколько раз подряд и выбирать значение по мажоритарному принципу. Если остановил таймер, то достаточно прочесть один раз регистр TA1R, и все. Об этом в user guide и говорится. Потом сбросить и запустить снова.

Но это опять придирки, в общем-то. Такая функция хороша, когда нельзя останавливать таймер.

Исправление Zubok, :

timer_count = Timer_A_getCounterValue(TIMER_A1_BASE);

Я бы вообще лучше напрямую с регистрами работал. Глянул API. Вот эта функция как бы натаскана на чтение таймера без его остановки и использует мажоритарный принцип, чтобы отсечь неправильное чтение. То есть он читает подряд, скажем, три раза и если два раза одно и то же значение, а третье запорото, то возвращает значение, которое выпало два раза. Близость «голосов» управляется переменной TIMER_A_THRESHOLD. В случае, когда таймер остановлен, три раза будет прочитано одно и то же значение. Не так страшно, в общем-то - это тоже все микросекунды. Кстати, это вот тут описано тоже MSP430 и timestamps (комментарий) . У тебя именно ситуация, когда ACLK и MCLK асинхронно идут - разные генераторы.

Но если ты останавливаешь таймер, то тебе, в общем-то не надо читать и выбирать значение по мажоритарному принципу. Если остановил таймер, то достаточно прочесть один раз регистр TA1R, и все. Об этом в user guide и говорится. Потом сбросить и запустить снова.

Но это опять придирки, в общем-то. Такая функция хороша, когда нельзя останавливать таймер.

Исправление Zubok, :

timer_count = Timer_A_getCounterValue(TIMER_A1_BASE);

Я бы вообще лучше напрямую с регистрами работал. Глянул API. Вот эта функция как бы натаскана на чтение таймера без его остановки и использует мажоритарный принцип, чтобы отсечь неправильное чтение. То есть он читает подрял, скажем, три раза и если два раза одно и то же значение, а третье запорото, то возвращает значение, которое выпало два раза. Близость «голосов» управляется переменной TIMER_A_THRESHOLD. В случае, когда таймер остановлен, три раза будет прочитано одно и то же значение. Кстати, это вот тут описано тоже MSP430 и timestamps (комментарий) . У тебя именно ситуация, когда ACLK и MCLK асинхронно идут - разные генераторы.

Но если ты останавливаешь таймер, то тебе, в общем-то не надо читать и выбирать значение по мажоритарному принципу. Если остановил таймер, то достаточно прочесть один раз регистр TA1R, и все. Об этом в user guide и говорится. Потом сбросить и запустить снова.

Но это опять придирки, в общем-то. Такая функция хороша, когда нельзя останавливать таймер.

Исправление Zubok, :

timer_count = Timer_A_getCounterValue(TIMER_A1_BASE);

Я бы вообще лучше напрямую с регистрами работал. Глянул API. Вот эта функция как бы натаскана на чтение таймера без его остановки и использует мажоритарный принцип, чтобы отсечь неправильное чтение. То есть он читает подрял, скажем, три раза и если два раза одно и то же значение, а третье запорото, то возвращает значение, которое выпало два раза. Близость «голосов» управляется переменной TIMER_A_THRESHOLD. В случае, когда таймер остановлен, три раза будет прочитано одно и то же значение. Кстати, это вот тут описано тоже MSP430 и timestamps (комментарий) . У тебя именно ситуация, когда ACLK и MCLK асинхронно идут - разные генераторы.

Но если ты останавливаешь таймер, то тебе, в общем-то не надо читать и выбирать значение по мажоритарному принципу. Если остановил таймер, то достаточно прочесть один раз регистр TA1R, и все. Об этом в user guide и говорится.

Но это опять придирки, в общем-то. Такая функция хороша, когда нельзя останавливать таймер.

Исправление Zubok, :

timer_count = Timer_A_getCounterValue(TIMER_A1_BASE);

Я бы вообще лучше напрямую с регистрами работал. Глянул API. Вот эта функция как бы натаскана на чтение таймера без его остановки и использует мажоритарный принцип, чтобы отсечь неправильное чтение. То есть он читает подрял, скажем, три раза и если два раза одно и то же значение, а третье запорото, то возвращает значение, которое выпало два раза. Близость «голосов» управляется переменной TIMER_A_THRESHOLD. В случае, когда таймер остановлен, три раза будет прочитано одно и то же значение. Кстати, это вот тут описано тоже MSP430 и timestamps (комментарий) . У тебя именно ситуация, когда ACLK и MCLK асинхронно идут - разные генераторы.

Но если ты останавливаешь таймер, то тебе, в общем-то не надо читать и выбирать значение по мажоритарному принципу. У тебя все очень быстро, тебе не нужна такая точность, пропадут микросекунды от остановки. Если остановил таймер, то достаточно прочесть один раз регистр TA1R, и все. Об этом в user guide и говорится.

Но это опять придирки, в общем-то. Такая функция хороша, когда нельзя останавливать таймер.

Исправление Zubok, :

timer_count = Timer_A_getCounterValue(TIMER_A1_BASE);

Я бы вообще лучше напрямую с регистрами работал. Глянул API. Вот эта функция как бы натаскана на чтение таймера без его остановки и использует мажоритарный принцип, чтобы отсечь неправильное чтение. То есть он читает подрял, скажем, три раза и если два раза одно и то же значение, а третье запорото, то возвращает значение, которое выпало два раза. Количество «голосов» управляется переменной TIMER_A_THRESHOLD. В случае, когда таймер остановлен, три раза будет прочитано одно и то же значение. Кстати, это вот тут описано тоже MSP430 и timestamps (комментарий) . У тебя именно ситуация, когда ACLK и MCLK асинхронно идут - разные генераторы.

Но если ты останавливаешь таймер, то тебе, в общем-то не надо читать и выбирать значение по мажоритарному принципу. У тебя все очень быстро, тебе не нужна такая точность, пропадут микросекунды от остановки. Если остановил таймер, то достаточно прочесть один раз регистр TA1R, и все. Об этом в user guide и говорится.

Но это опять придирки, в общем-то. Такая функция хороша, когда нельзя останавливать таймер.

Исходная версия Zubok, :

timer_count = Timer_A_getCounterValue(TIMER_A1_BASE);

Я бы вообще лучше напрямую с регистрами рботал. Глянул API. Вот эта функция как бы натаскана на чтение таймера без его остановки и использует мажоритарный принцип, чтобы отсечь неправильное чтение. То есть он читает подрял, скажем, три раза и если два раза одно и то же значение, а третье запорото, то возвращает значение, которое выпало два раза. Количество «голосов» управляется переменной TIMER_A_THRESHOLD. В случае, когда таймер остановлен, три раза будет прочитано одно и то же значение. Кстати, это вот тут описано тоже MSP430 и timestamps (комментарий) . У тебя именно ситуация, когда ACLK и MCLK асинхронно идут - разные генераторы.

Но если ты останавливаешь таймер, то тебе, в общем-то не надо читать и выбирать значение по мажоритарному принципу. У тебя все очень быстро, тебе не нужна такая точность, пропадут микросекунды от остановки. Если остановил таймер, то достаточно прочесть один раз регистр TA1R, и все. Об этом в user guide и говорится.

Но это опять придирки, в общем-то. Такая функция хороша, когда нельзя останавливать таймер.