|
MSP430F2121 танцы продолжаются, SMCLK = 2 МГц и выше |
|
|
|
Jan 24 2008, 11:55
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 10-03-07
Пользователь №: 26 038

|
Возникла очередная проблема.
В MSP430F2121 вывод P1.4 можно настроить на вывод частоты SMCLK. Если я правильно понимаю то после:
P1DIR = 0x10; P1SEL = 0x10;
на P1.4 получим прямоугольные импульсы с частотой, равной SMCLK.
Вопрос в том, как настроить SMCLK, чтобы частота импульсов, снимаема с P1.4 была порядка 2 МГц? А еще лучше поясните кто-нибудь как работать с DCOCTL, BCSCTL1, BCSCTL2, BCSCTL3, а по мозг упорно отказывается понимать User's Guide.
|
|
|
|
|
 |
Ответов
|
Jan 24 2008, 12:30
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045

|
Цитата(Grigorij @ Jan 24 2008, 13:55)  Вопрос в том, как настроить SMCLK, чтобы частота импульсов, снимаема с P1.4 была порядка 2 МГц? Очевидно надо что бы частота SMCLK была 2 МГц  Для этого можно поставить внешний кварц на 2,4,8,16 МГц, а потом делить частоту на 1,2,4,8 соответственно. Либо настроить частоту DCO на 2,4,8,16 МГц (откалибровавшись по низкочастотному кварцу), подлеить на 1,2,4,8 соответствено, и установить его как источник сигнала для SMCLK. Для частот 8 и 16 МГц, в инфо сегменте А распологаются значения RSELx и DCOx, которыйе надо просто записать куда надо например Код ; Set DCO to 16 MHz: MOV.B &CALBC1_16MHZ,&BCSCTL1; Set range MOV.B &CALDCO_16MHZ,&DCOCTL; Set DCO step + modulation Еще один вариант - настроить таймер на прерывание с частотой 4 МГц и в процедуре обработки прерывания - переключать состояние P1.4 програмно Цитата(Grigorij @ Jan 24 2008, 13:55)  А еще лучше поясните кто-нибудь как работать с DCOCTL, BCSCTL1, BCSCTL2, BCSCTL3, а по мозг упорно отказывается понимать User's Guide. Работать с решистрами так же как и слюбыми другими решистрами устройств  А что именно не понятно?
Сообщение отредактировал gotty - Jan 24 2008, 12:40
|
|
|
|
|
Jan 24 2008, 12:42
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 10-03-07
Пользователь №: 26 038

|
Цитата(gotty @ Jan 24 2008, 15:30)  Очевидно надо что бы частота SMCLK была 2 МГц  Для этого можно поставить внешний кварц на 2,4,8,16 МГц, а потом делить частоту на 1,2,4,8 соответственно. Этот вариант не походит. В плате уже стоит часовой кварц на 32 кГц и менять его нельзя. Цитата(gotty @ Jan 24 2008, 15:30)  Либо настроить частоту DCO на 2 МГц (откалибровавшись по низкочастотному кварцу), и установить его как источник сигнала для SMCLK Это был бы идеальный вариант. Если я правильно понимаю, то DCO, в качестве источника сигнала для SMCLK выбирается в регистре BCSCTL2. А вот как правильно настроить DCO = 2 МГц я не знаю. Чутье подсказывает, что как-то попользовать регистр DCOCTL. И как я вычитал уже частота его работы будет D*(N+1)*32 кГЦ, но как задать D и N?
|
|
|
|
|
Jan 24 2008, 12:46
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045

|
Цитата(Grigorij @ Jan 24 2008, 14:42)  Этот вариант не походит. В плате уже стоит часовой кварц на 32 кГц и менять его нельзя. Это был бы идеальный вариант. Если я правильно понимаю, то DCO, в качестве источника сигнала для SMCLK выбирается в регистре BCSCTL2. А вот как правильно настроить DCO = 2 МГц я не знаю. Проще всего так Код ; Set DCO to 16 MHz: MOV.B &CALBC1_16MHZ,&BCSCTL1; Set range MOV.B &CALDCO_16MHZ,&DCOCTL; Set DCO step + modulation BIC.B #SELS,&BCSCTL2; DCO источник для SMCLK по умолчанию BIS.B #DIVS0|DIV1,&BCSCTL2; делить SMCLK на 8 Но следует помнить что частота DCO не так стабильна, как частота кварца - поэтому лучше отклалибровать частоту DCO по часовому кварцу Можно ещё почитать Controlling the DCO Frequency of the MSP430x11x
Сообщение отредактировал gotty - Jan 24 2008, 12:53
|
|
|
|
|
Jan 24 2008, 13:28
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 10-03-07
Пользователь №: 26 038

|
Цитата(gotty @ Jan 24 2008, 15:46)  Проще всего так Код ; Set DCO to 16 MHz: MOV.B &CALBC1_16MHZ,&BCSCTL1; Set range MOV.B &CALDCO_16MHZ,&DCOCTL; Set DCO step + modulation BIC.B #SELS,&BCSCTL2; DCO источник для SMCLK по умолчанию BIS.B #DIVS0|DIV1,&BCSCTL2; делить SMCLK на 8 Но следует помнить что частота DCO не так стабильна, как частота кварца - поэтому лучше отклалибровать частоту DCO по часовому кварцу Можно ещё почитать Controlling the DCO Frequency of the MSP430x11xПро нестабильность DCO по сравнению с кварцем - это я помню и slaa074 уже открыта и читается  . А что из себя представляет CALBC1_16MHZ? Пишу в IAR на СИ. Если посмотреть заголовочный файл msp430x21x1.h, то там CALDCO_16MHZ_ и CALDCO_16MHZ определено как: Код /************************************************************ * Calibration Data in Info Mem ************************************************************/
#ifndef __DisableCalData
#define CALDCO_16MHZ_ (0x10F8) /* DCOCTL Calibration Data for 16MHz */ READ_ONLY DEFC( CALDCO_16MHZ , CALDCO_16MHZ_) #define CALBC1_16MHZ_ (0x10F9) /* BCSCTL1 Calibration Data for 16MHz */ READ_ONLY DEFC( CALBC1_16MHZ , CALBC1_16MHZ_) Я так понимаю 0x10F8 и 0x10F9 - это адрес ячейки Inf Memory, где находятся требуемые настройки. Т.е. на СИ это будет примерно так: Код BCSCTL1 = *((int *)CALBC1_16MHZ_); // ???????? DCOCTL = *((int *)CALDCO_16MHZ_); // ????????
BCSCTL2 = SELS + DIVS_2; //здесь вопросов нет Похоже вредно работать без обеда  . Мозги уже вообще не соображают.
|
|
|
|
Сообщений в этой теме
Grigorij MSP430F2121 танцы продолжаются Jan 24 2008, 11:55    gotty Цитата(Grigorij @ Jan 24 2008, 15:28) Т.е... Jan 24 2008, 13:47     Grigorij Цитата(gotty @ Jan 24 2008, 16:47) Можно ... Jan 24 2008, 14:51      gotty Цитата(Grigorij @ Jan 24 2008, 16:51) Одн... Jan 24 2008, 15:03       Grigorij Цитата(gotty @ Jan 24 2008, 18:03) Изходя... Jan 24 2008, 15:12    gotty Цитата(Grigorij @ Jan 24 2008, 15:28) Код... Jan 25 2008, 06:43     Grigorij Цитата(gotty @ Jan 25 2008, 09:43) Прошу ... Jan 25 2008, 12:16
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|