|
Простейшее ЭХО, Применение прерывания на кристале MSP430F449 |
|
|
|
Dec 20 2008, 15:59
|
Группа: Новичок
Сообщений: 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 вообще не пашет ). В результате не получаю ни одного реально нажатого символа - идёт только мусор. В чём загвоздка ?? Как исправить - тыкните носом.
Спасибо БОЛЬШОЕ.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 25)
|
Dec 20 2008, 18:00
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Нужно начать с чтения User's Guide. Хотя бы те разделы его, которые относятся к тем периферийным модулям, что вы используете. При просмотре "по диагонали". 1. не сконфигурирован полностью модуль тактирования 2. неправильный порядок инициализации регистров USART 3. а где у вас в main-е "вечный цикл"? Функция main выполняется только один раз. Используйте для вставки исходника соответствующие тегаи. В редакторе сообщения это кнопочка
|
|
|
|
|
Dec 20 2008, 21:41
|
Группа: Новичок
Сообщений: 5
Регистрация: 20-12-08
Пользователь №: 42 625

|
Цитата(rezident @ Dec 20 2008, 21:00)  Нужно начать с чтения User's Guide. Хотя бы те разделы его, которые относятся к тем периферийным модулям, что вы используете. При просмотре "по диагонали". 1. не сконфигурирован полностью модуль тактирования 2. неправильный порядок инициализации регистров USART 3. а где у вас в main-е "вечный цикл"? Функция main выполняется только один раз. Используйте для вставки исходника соответствующие тегаи. В редакторе сообщения это кнопочка  Большое спасибо за ответ Значит пример программы с сайта разработчика неверен, я правильно понял ? Я просто взял его как аксиому, что это полностью рабочий вариант Буду пробовать решать эти проблемы кстати User Guide (RUS) найден тут
|
|
|
|
|
Dec 20 2008, 22:07
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Zaber @ Dec 21 2008, 02:41)  кстати User Guide (RUS) найден тут Можете скачать копию книги Семейство микроконтроллеров MSP430x4xx: руководство пользователя из библиотеки Компэла и читать ее в офф-лайне.
|
|
|
|
|
Dec 21 2008, 00:25
|

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

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

Группа: Участник
Сообщений: 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мгц, но в вашем исходнике настройки генератора нету (поидее осталась только одна строчка  )
|
|
|
|
|
Jan 4 2009, 19:53
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
Jan 4 2009, 20:54
|
Гуру
     
Группа: Свой
Сообщений: 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 что с ними делать ? Использовать по вашему усмотрению. Или не использовать, опять же по вашему усмотрению  Хотя без MCLK программа вообще-то выполняться не будет, т.к. от него процессорное ядро тактируется. Цитата(Zaber @ Jan 5 2009, 00:53)  я понимаю что тут должен быть кварц ??? где найти эти XIN , XOUT Как где?  На самой плате, на выводах ZIF-сокета или непосредственно на кристалле. Цоколевку смотрите на схеме MSP-TS430PZ100 Target Socket Module опять же в документе по самой первой ссылке или в datasheet используемого в нем кристалла MSP430. Update. Ага. Пока я набивал сообщение, появилась фото. На нем видно, что часовой кварц 32768Гц на модуле все-таки установлен. Тогда см. раздел Chapter 5. FLL+ Clock Module в User's Guide, чтобы понять как правильно нужно инициализировать систему тактирования.
|
|
|
|
|
Jan 4 2009, 21:48
|
Частый гость
 
Группа: Свой
Сообщений: 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
Эскизы прикрепленных изображений
|
|
|
|
|
Jan 5 2009, 05:43
|
Частый гость
 
Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059

|
Цитата(rezident @ Jan 5 2009, 00:24)  Вы ошибаетесь. Признаюсь, этот репорт до этого не читал. Но даже в нем говорится скорее о точности системы генерирования, нежели о принципиальной возможности запуска генератора. Причем допуск имеет величины от 0,8ppm до 2,5ppm, что для первого ознакомления с чипом более чем достаточно (а ведь это и требуется автору).
|
|
|
|
|
Jan 5 2009, 16:49
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(korobov_michael @ Jan 5 2009, 10:43)  Но даже в нем говорится скорее о точности системы генерирования, нежели о принципиальной возможности запуска генератора. Причем допуск имеет величины от 0,8ppm до 2,5ppm, что для первого ознакомления с чипом более чем достаточно (а ведь это и требуется автору). Да, для запуска кварцевого генератора и встроенных конденсаоторов в принципе хватит. Но в MSP430F449 часовой кварц используется в модуле FLL, как опорная частота для модулятора. А если опорная частота имеет отвратную точность, то ознакомится-то конечно можно, но будет ли это работать так, как хотелось бы? - это под большим вопросом.
|
|
|
|
|
Jan 5 2009, 18:05
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(korobov_michael @ Jan 5 2009, 22:27)  в данный момент работаю с 148, 248, их точность вполне устраивает, отсюда и такое далекоидущее утверждение. А функцию RTC вы на них видимо еще не реализовывали?  Иначе гораздо серьезнее относились бы к выбору типа и номинала внешних конденсаторов в обвязке кварцевого генератора. Вы видимо вообще внешние не ставите, уповая на внутренние 12,5пФ? А ведь если бы посчитали по формулам, приведенным в вышеупомянутом документе, то поняли, что при использовании часового кварца с CL=12,5пФ, встроенных в MSP430 конденсаторов 12,5пФ явно недостаточно, И номинал внешних должен составлять почти такую же величину - около 12пФ каждый.
|
|
|
|
|
Jan 5 2009, 19:20
|
Группа: Новичок
Сообщений: 5
Регистрация: 20-12-08
Пользователь №: 42 625

|
Снова Большое спасибо за ответы Плата которую я привел на фото является основой учебного проекта и её "впринцыпе" паять нельзя По этому поводу вопрос 1. Можно ли всё таки заставить работать эту платы только изменив программно какие то настройки к примеру перечитав ещё раз и поняв о настроике FLL+ Спасибо
Сообщение отредактировал Zaber - Jan 5 2009, 19:22
|
|
|
|
|
Jan 5 2009, 19:59
|
Группа: Новичок
Сообщений: 5
Регистрация: 20-12-08
Пользователь №: 42 625

|
Цитата(rezident @ Jan 5 2009, 23:34)  И можно и нужно. Иначе теряется смысл обсуждения. Зачем мы тут копья ломаем?  Пойду вникать СПасибо
|
|
|
|
|
Jan 5 2009, 20:14
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Zaber @ Jan 6 2009, 00:59)  Пойду вникать Советую вам при модификации кода программы проинициализировать каждый регистр модулей тактирования и UART явными значениями. Читая при этом User's Guide и осознанно формируя каждое из этих значений.
|
|
|
|
|
Jan 6 2009, 07:53
|
Частый гость
 
Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059

|
Цитата(rezident @ Jan 5 2009, 22:14)  Советую вам при модификации кода программы проинициализировать каждый регистр модулей тактирования и UART явными значениями. Читая при этом User's Guide и осознанно формируя каждое из этих значений. У меня в электронном виде есть книга "Embedded Systems Design using the TI MSP430 Series by Chris Nagy" Я хотел бы ее выложить. Куда кидать вопрос не знаю. Подскажете? pdf-ник весит около 12МБ.
|
|
|
|
|
Jan 6 2009, 15:32
|
Частый гость
 
Группа: Свой
Сообщений: 118
Регистрация: 11-03-07
Из: Украина, Харьков
Пользователь №: 26 059

|
Цитата(rezident @ Jan 6 2009, 16:50)  У меня тоже она есть. Года три уже как. И на фтп есть. И наГуглить ее можно. Для кого выкладывать-то ее вы собрались? на фтп я не могу зайти, ибо не свой, по поводу гуглить - надо знать что гуглить. ко мне эта книга попала абсолютно случайно, но именно из нее я понял, что low-power - это иная парадигма проектирования. Ну и подумал, а вдруг еще кто-то про нее не знает  где-то так
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|