Цитата(jorikdima @ Jan 15 2007, 11:26)

Цитата
только с кварцем 32768Гц (который использовался только для калибровки DCO)
А расскажите в двух словах, это как?
Чтобы беспричинно "не умножать сущностей"

предлагаю почитать какой-нибудь application note на эту тему. Например,
slaa074-Controlling the DCO Frequency of the MSP430x11x.
Если вкратце, то DCO (встроенный в MSP430 генератор RC-типа) можно откалибровать, используя внешний осциллятор, путем подсчета (с помощью TimerA) числа импульсов от DCO в створе временнЫх ворот, формируемых от внешнего осциллятора. Естественно, чем больше разница в частотах DCO и осциллятора, тем точнее можно определить эту разницу. Поэтому при частоте DCO 1МГц и более используется часовой кварц 32768Гц. Нужно только не забывать, что
- генератор на часовом кварце стартует весьма медленно (start-up до 1 секунды м.б.);
- DCO (для MSP430x1xx) на унутренних R и C не дает частоты выше (примерно) 6.5МГц. Но при использовании внешнего резистора (Rosc) его можно гнать аж до сотни МГц. Однако при этом ядро MSP430 на такой частоте работать не сможет.
Процедура калибровки (для MSP430x1xx) примерно такова (XT1 в режиме LFXT с кварцем 32768Гц).
1) ждем >1сек после подачи питания.
2) программируем TimerA. Источником его тактирования выбираем SMCLK=DCO. CCR2 таймера TimerA используем в режиме захвата (capture) с источником сигнала от CCI2B (это сигнал ACLK для всех этих кристаллов) и фиксацией по одному из фронтов.
3) по факту срабатывания защелки берем разницу между двумя "соседними" (последовательными) значениями CCR2. Это число (разница) и будет отношением двух частот SMCLK(DCO) и ACLK(32768Гц).
4) если нужно не просто знать значение частоты DCO, но и подогнать его частоту в некоторый диапазон чатот, то манипулируем с битами DCOx, MODx и RSELx регистров DCOCTL и BCSCTL1, а затем переходим снова на шаг 3.