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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Простейшее ЭХО, Применение прерывания на кристале MSP430F449
Zaber
сообщение Dec 20 2008, 15:59
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 20-12-08
Пользователь №: 42 625



Всем привет
Начал только знакомиться с этим видом процессора, пытаюсь написать первую программу на основе кода с производителя:

//******************************************************************************
// MSP-FET430P440 Demo - USART0, 9600 UART Echo ISR, DCO SMCLK
//
// Description: Echo a received character, RX ISR used. Normal mode is LPM0.
// USART0 RX interrupt triggers TX Echo.
// Baud rate divider with 1048576hz = 1048576Hz/9600 = ~109.23 (06Dh|03h)
// ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz
// //* An external watch crystal between XIN & XOUT is required for ACLK *//
//
// MSP430F449
// -----------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P2.4|----------->
// | | 9600 - 8N1
// | P2.5|<-----------
//
//
// M. Buccini
// Texas Instruments Inc.
// Feb 2005
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.21A
//*****************************************************************************
#include <msp430x44x.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP18PF; // Configure load caps
P2SEL |= 0x30; // P2.4,5 = USART0 TXD/RXD
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
UCTL0 |= CHAR; // 8-bit character
UTCTL0 |= SSEL1; // UCLK = SMCLK
UBR00 = 0x6D; // 1MHz 9600
UBR10 = 0x00; // 1MHz 9600
UMCTL0 = 0x03; // modulation
UCTL0 &= ~SWRST; // Initialize USART state machine
IE1 |= URXIE0; // Enable USART0 RX interrupt
P2DIR |= 0x10; // P2.4 output direction

_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt


}


#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{
while (!(IFG1 & UTXIFG0)); // USART0 TX buffer ready?
TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0
}

Пытаюсь общаться через TeraTerm через COM порт частота 2400 ( 9600 вообще не пашет ).
В результате не получаю ни одного реально нажатого символа - идёт только мусор.
В чём загвоздка ?? Как исправить - тыкните носом.

Спасибо БОЛЬШОЕ.
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 20 2008, 18:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Нужно начать с чтения User's Guide. Хотя бы те разделы его, которые относятся к тем периферийным модулям, что вы используете.
При просмотре "по диагонали".
1. не сконфигурирован полностью модуль тактирования
2. неправильный порядок инициализации регистров USART
3. а где у вас в main-е "вечный цикл"? Функция main выполняется только один раз.

Используйте для вставки исходника соответствующие тегаи. В редакторе сообщения это кнопочка
Go to the top of the page
 
+Quote Post
Zaber
сообщение Dec 20 2008, 21:41
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 20-12-08
Пользователь №: 42 625



Цитата(rezident @ Dec 20 2008, 21:00) *
Нужно начать с чтения User's Guide. Хотя бы те разделы его, которые относятся к тем периферийным модулям, что вы используете.
При просмотре "по диагонали".
1. не сконфигурирован полностью модуль тактирования
2. неправильный порядок инициализации регистров USART
3. а где у вас в main-е "вечный цикл"? Функция main выполняется только один раз.

Используйте для вставки исходника соответствующие тегаи. В редакторе сообщения это кнопочка

Большое спасибо за ответ
Значит пример программы с сайта разработчика неверен, я правильно понял ?
Я просто взял его как аксиому, что это полностью рабочий вариант
Буду пробовать решать эти проблемы
кстати User Guide (RUS) найден тут
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 20 2008, 21:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Zaber @ Dec 21 2008, 00:41) *
Значит пример программы с сайта разработчика неверен, я правильно понял ?

Это значит, что править примеры нужно зная, что делаешь.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 20 2008, 22:07
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Zaber @ Dec 21 2008, 02:41) *
кстати User Guide (RUS) найден тут
Можете скачать копию книги Семейство микроконтроллеров MSP430x4xx: руководство пользователя из библиотеки Компэла и читать ее в офф-лайне.
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Dec 21 2008, 00:25
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 11-08-07
Пользователь №: 29 713



Цитата(rezident @ Dec 20 2008, 21:00) *
Нужно начать с чтения User's Guide. Хотя бы те разделы его, которые относятся к тем периферийным модулям, что вы используете.
При просмотре "по диагонали".
1. не сконфигурирован полностью модуль тактирования
2. неправильный порядок инициализации регистров USART
3. а где у вас в main-е "вечный цикл"? Функция main выполняется только один раз.

Используйте для вставки исходника соответствующие тегаи. В редакторе сообщения это кнопочка


по поводу 3его пункта... там вечный цикл не нужен! мк уходит в режим LMP0.
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 21 2008, 02:16
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(CAHTA_1939 @ Dec 21 2008, 05:25) *
там вечный цикл не нужен! мк уходит в режим LMP0.
Да, согласен. Я обратил внимание на бит GIE, а LPM0 "проспал". sad.gif Ну дык сразу и сделал оговорку, что "по диагонали" смотрел исходник laughing.gif
Go to the top of the page
 
+Quote Post
CAHTA_1939
сообщение Dec 21 2008, 09:28
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 11-08-07
Пользователь №: 29 713



у человека, возможно, ошибка где ни будь в схеме. перепутал tx и rx, хз... какой драйвер поставил...

у меня почти все исходники от ТИ шли нормально. проблема возникла с P8 у 2618. туда вместе с IO выведен вход для XT2. и как получилось, оно по умолчанию действует, так что пришлось через SEL вводить порт в режим IO...
Go to the top of the page
 
+Quote Post
Sergey Reva
сообщение Dec 22 2008, 06:54
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 22-04-07
Из: Poltava/Kharkov
Пользователь №: 27 243



Цитата(Zaber @ Dec 20 2008, 17:59) *
// Baud rate divider with 1048576hz = 1048576Hz/9600 = ~109.23 (06Dh|03h)
// ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz

FLL_CTL0 |= XCAP18PF; // Configure load caps

В результате не получаю ни одного реально нажатого символа - идёт только мусор.


Раз идёт мусор то больше всего что УАРТ и порты настроены правильно. В описании примера видно что весь расчёт сделан на частоту около 1мгц, но в вашем исходнике настройки генератора нету (поидее осталась только одна строчка smile.gif )
Go to the top of the page
 
+Quote Post
Zaber
сообщение Jan 4 2009, 19:53
Сообщение #10





Группа: Новичок
Сообщений: 5
Регистрация: 20-12-08
Пользователь №: 42 625



Добрый вечер
Плата на которой всё это бежит значится как MSP-TS430PZ100 REv 1.2 with M430F449 Rev G
Просидел последние 2 дня всухую и пришёл к выводу
1. У моей платы нет скорее всего нет кварца и поэтому частота которая выставлена в коде неверна
2. Проверил ещё раз все соединения они вроде бы правильные
пытался работать на частоте 9600 с приведенным выше исходником результат таков:
Принимаются только определёные символы , а отражаются всякий мусор
Мысли такие :
Sergey Reva скорее всего прав о том , что не верна частота
Вопрос :
1. Как узнать правильную частоту ? ( формулу расчёта )
2. Как быть увереным что нет кварца на плате ну и следовательно что с этим делать
3. MCLK , SMCLK , DCO = 32 x ACLK = 1048576Hz
что с ними делать ?
4. Как сдвинуться с этой мёртвой точки ? Мануал прочёл ,но даже запустить первую программу пример -мигание лампочек не получилось. В результате код бежит , но лампочки не мигают . А почему ? не хватает знаний.
5. Беспокоют вот эти строки
| XIN|--------
| 32kHz
|RST XOUT|--

я понимаю что тут должен быть кварц ???
где найти эти XIN , XOUT

Постараюсь скоро сделать снимок платы
БОЛЬШОЕ Спасибо



Сообщение отредактировал Zaber - Jan 4 2009, 20:28
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 4 2009, 20:54
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Zaber @ Jan 5 2009, 00:53) *
Плата на которой всё это бежит значится как MSP-TS430PZ100 REv 1.2 with M430F449 Rev G

Схема ее имеется в MSP-FET430 Flash Emulation Tool (FET) (for Use With IAR v3+) User's Guide на странице 58.
Цитата(Zaber @ Jan 5 2009, 00:53) *
1. Как узнать правильную частоту ? ( формулу расчёта )
Частоту чего именно? Какого сигнала? Сигналы ACLK, SMCLK и MCLK, можно вывести наружу, использовав альтернативные функции соответствующих пинов MSP430. Все формулы расписаны в Users's Guide. Читайте его еще раз.
Цитата(Zaber @ Jan 5 2009, 00:53) *
2. Как быть увереным что нет кварца на плате
Посмотреть глазами. Кварцевый осциллятор обычно выглядит так

или так

или так
.
Кстати, на типовой схеме MSP-FET430P440 по ссылке на FET, указанной выше, оба кварца обозначены как not assembled, то бишь "не установлен".
Цитата(Zaber @ Jan 5 2009, 00:53) *
ну и следовательно что с этим делать
Купить и впаять, если вы считаете, что без него (них) никак не обойдетесь. Только не забудьте об паре конденсаторов в обвязке каждого кварца.
Цитата(Zaber @ Jan 5 2009, 00:53) *
3. MCLK , SMCLK , DCO = 32 x ACLK = 1048576Hz
что с ними делать ?
Использовать по вашему усмотрению. Или не использовать, опять же по вашему усмотрению biggrin.gif Хотя без MCLK программа вообще-то выполняться не будет, т.к. от него процессорное ядро тактируется.
Цитата(Zaber @ Jan 5 2009, 00:53) *
я понимаю что тут должен быть кварц ???
где найти эти XIN , XOUT
Как где? 07.gif На самой плате, на выводах ZIF-сокета или непосредственно на кристалле. Цоколевку смотрите на схеме MSP-TS430PZ100 Target Socket Module опять же в документе по самой первой ссылке или в datasheet используемого в нем кристалла MSP430.

Update. Ага. Пока я набивал сообщение, появилась фото. На нем видно, что часовой кварц 32768Гц на модуле все-таки установлен. Тогда см. раздел Chapter 5. FLL+ Clock Module в User's Guide, чтобы понять как правильно нужно инициализировать систему тактирования.
Go to the top of the page
 
+Quote Post
psL
сообщение Jan 4 2009, 21:01
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



А контакт между C1 и C2 и ножками кварца Q1 имеется? Частота на выходе генератора 32768?
Go to the top of the page
 
+Quote Post
korobov_michael
сообщение Jan 4 2009, 21:48
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059



Цитата(rezident @ Jan 4 2009, 22:54) *
Только не забудьте об паре конденсаторов в обвязке каждого кварца.


Конденсаторы не нужны. Они являются частью генератора. Их емкость настраивается парой битов XCAPxPF
00 ~1 pF
01 ~6 pF
10 ~8 pF
11 ~10 pF
Так что можно несколько упростить схему

Сообщение отредактировал korobov_michael - Jan 4 2009, 21:49
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 4 2009, 22:24
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(korobov_michael @ Jan 5 2009, 02:48) *
Конденсаторы не нужны.
Вы ошибаетесь. Встроенных подключаемых конденсаторов недостаточно для нормальной работы и точной установки частоты генератора при использовании широкораспространенных часовых кварцев с нагрузочной емкостью 12,5пФ. Фрагмент из MSP430 LFXT1 Oscillator Accuracy - slaa225
Go to the top of the page
 
+Quote Post
korobov_michael
сообщение Jan 5 2009, 05:43
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059



Цитата(rezident @ Jan 5 2009, 00:24) *
Вы ошибаетесь.

Признаюсь, этот репорт до этого не читал. Но даже в нем говорится скорее о точности системы генерирования, нежели о принципиальной возможности запуска генератора. Причем допуск имеет величины от 0,8ppm до 2,5ppm, что для первого ознакомления с чипом более чем достаточно (а ведь это и требуется автору).
Go to the top of the page
 
+Quote Post

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

 


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


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