реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Проблемы с инициализацией или еще с чем-то, MSP430F149
addi
сообщение Oct 16 2013, 12:09
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Цитата(MrYuran @ Oct 15 2013, 16:20) *
Думаете, кому-то интересно лазить по справочникам, искать назначение битов?

У меня, к примеру, так сделано: (для 149)

Код
DCOCTL=DCO0|DCO1|DCO2;                  //DCO около 5МГц
BCSCTL1 = (RSEL0 | RSEL1 | RSEL2);
BCSCTL2 = (DIVS)|(DIVM_0)|(SELM_0)|(SELS);    // SMCLK=XT2CLK, DIVS=1, DIVM=1, MCLK=DCOCLC


Лучше все-таки применять мнемонические обозначения вместо магических цифр. И себе, и другим проще.

Спасибо большое за поддержку
Сегодня небольшой прогресс, теперь время бита не 50мс а 15мс!), хотя должно быть 104 мкс, согласно настройкам
Вот настройка:
Код
  WDTCTL = WDTPW + WDTHOLD;
  
  
  DCOCTL=DCO0|DCO1|DCO2; //DCO = 7, MOD = 0
  BCSCTL1 = (RSEL0 | RSEL1 | RSEL2 | XTS | XT2OFF); // RSEL = 7, The high-freq oscillator, XT2 not used
  BCSCTL2 = (DIVS_0 )|(DIVM_0)|(SELM_0);    // SMCLK (DIVS.1 .. DIVS.0)=0, DIVS=1, DIVM=1, SELS = 0: DCOCLK, MCLK = DCOCLK  


ЮАРТ:
  P3SEL = BIT4 | BIT5; // UART pins enable
  
  UCTL0 = SWRST|CHAR; //  software reset,8 bit data
  UTCTL0 = TXWAKE|SSEL1; // SMCLOK, TXWAKE
  UBR00 = 0x6D; // 9600
  UMCTL0 = 0x03;
  ME1 = UTXE0; // UART0 enable
  UCTL0 &= ~SWRST;
  U0IE = 0x10; // interrupt enable


Пытаюсь добится работы при максимальной внутренней частоте(...., т.е тактироватся от DCO
Питание от отладчика.

Сообщение отредактировал addi - Oct 16 2013, 12:12
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Oct 17 2013, 06:18
Сообщение #17


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(addi @ Oct 16 2013, 15:09) *
UBR00 = 0x6D; // 9600

А UBR01?
Делитель-то двухбайтный.

К тому же, если максимальный DCO ~ 4750000 поделить на 9600, то у меня получилось 0x1EE.
Ровно в 4 раза больше, чем у вас.

Чтобы убедиться, какая на самом деле частота, можно вывести наружу MCLK (P5.4, pin48) и SMCLK (P1.4, pin 16 или P5.5 pin49)

DCO использовать для UARTa не совсем правильно, разброс может быть слишком большой. 5% уже критично.
Другое дело, если калибровать частоту по кварцу.

Кстати, а какой байт передаете, чтобы определить битовый интервал?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
addi
сообщение Oct 17 2013, 07:36
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Сапсибо огромное, с UBR00 = 0xEE;UBR10 = 0x01; скорость стала 9600!!!
Очень странно, потому как я значения бодрейцта брал из даташита(
Теперь последний момент в моем знакомстве с msp, клоки таймера при следующей настройке(настройка осцилятора прежняя, DCO, максимальная частота)


Код
void bit_set()
{
  TACTL = TASSEL1;
  TACCTL0 = 0;
  TACCR0 = 1;
  TAR = 0;
}
void bit_time()
{
  TACTL |= MC0; //  Timer A mode control 0,  Up to CCR0, start timer
  while(!(TACCTL0&CCIFG));
  TACCTL0&=~CCIFG;
  TACTL &= ~MC0;
  TAR = 0;
}


В итоге я вижу на осцилографе время бита 22 мкс, когда как считаю без делителей до 1. Если частота в районе 5 МГц, то у меня время бита должно быть не более 1 мкс.
Прошу помочь в последний раз, далее уменя будет как минимум референс в настройках)
Заранее благодарен!

Сообщение отредактировал Herz - Oct 17 2013, 18:09
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 14:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01398 секунд с 7
ELECTRONIX ©2004-2016