ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
347624 Топик полностью
rezident (16.08.2012 20:14, просмотров: 107) ответил rezident на MSP430F5438A. Измерение отношения SMCLK vs ACLK с помощью TimerB0 для контроля и подстройки DCO. Тормозят что-то лыжи. Может кто идею подкинет?
Сам дурак. К концу дня мозги уже в ступоре. +- один отсчет это же как раз и есть +-32768! В время контроля частоты сделал усреднение по 16 отсчетам, ошибка естественно уменьшилась. #pragma inline=forced static uint16_t h_TimerB_SMCk (uint16_t val) //Аргумент: кол-во периодов для усреднения //Функция измерения SMCLK относительно одного периода ACLK //Возвращает: uint16_t - значение SMCLK/ACLK { uint16_t stp1, stp2; if (val == 0) val = 1; TB0CCTL6 &= ~CCIFG; while ((TB0CCTL6 & CCIFG) == 0);//ждем первого фронта stp1 = TB0CCR6; do { TB0CCTL6 &= ~CCIFG; while ((TB0CCTL6 & CCIFG) == 0);//ждем следующего фронта } while (--val != 0); stp2 = TB0CCR6; return (stp2-stp1); }