|
UART не принимает больше одного байта. Контроллер MSP430F4152 |
|
|
|
Jul 14 2015, 09:45
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 30-11-10
Пользователь №: 61 275

|
Проблема в теме. Обсуждение здесь: http://caxapa.ru/609239.html Помогите
|
|
|
|
|
 |
Ответов
|
Jul 16 2015, 13:29
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663

|
Если настройки USCI соответствуют приведённым в http://caxapa.ru/609239.html, то для 9600 б/с на 32768Гц коэффициент в модуляторе неправильный: N=32768/9600=3.41 (слишком большая ошибка для целочисленного коэффициента) => UCBRx=INT(N)=3, а UCBRSx=round((N-INT(N))*8)=3, т.е. UCA0MCTL не может иметь младший ниббл AH.
Сообщение отредактировал Obam - Jul 16 2015, 13:35
--------------------
Пролетарий умственного труда.
|
|
|
|
|
Jul 17 2015, 07:43
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 30-11-10
Пользователь №: 61 275

|
Цитата(Obam @ Jul 16 2015, 17:29)  Если настройки USCI соответствуют приведённым в http://caxapa.ru/609239.html, то для 9600 б/с на 32768Гц коэффициент в модуляторе неправильный: N=32768/9600=3.41 (слишком большая ошибка для целочисленного коэффициента) => UCBRx=INT(N)=3, а UCBRSx=round((N-INT(N))*8)=3, т.е. UCA0MCTL не может иметь младший ниббл AH. Скорость 1200 не помогла. При создании тестового проекта, как советовали выше, вообще ничего не получается - не принимает и не передаёт. Вот код с сайта ti. У них же преддедлитель 3: CODE /* --COPYRIGHT--,BSD_EX * Copyright © 2012, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * * Neither the name of Texas Instruments Incorporated nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ******************************************************************************* * * MSP430 CODE EXAMPLE DISCLAIMER * * MSP430 code examples are self-contained low-level programs that typically * demonstrate a single peripheral function or device feature in a highly * concise manner. For this the code may rely on the device's power-on default * register values and settings such as the clock configuration and care must * be taken when combining code from several examples to avoid potential side * effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware * for an API functional library-approach to peripheral configuration. * * --/COPYRIGHT--*/ //****************************************************************************** // MSP430F41x2 Demo - USCI_A0, Ultra-Low Pwr UART 9600 Echo ISR, 32kHz ACLK // // Description: Echo a received character, RX ISR used. Normal mode is LPM3, // USCI_A0 RX interrupt triggers TX Echo. // ACLK = BRCLK = LFXT1 = 32768, MCLK = SMCLK = DCO~1048k // Baud rate divider with 32768hz XTAL @9600 = 32768Hz/9600 = 3.41 (0003h 03h) // //* An external watch crystal is required on XIN XOUT for ACLK *// // // // MSP430F41x2 // ----------------- // /|\| XIN|- // | | | 32kHz // --|RST XOUT|- // | | // | P6.5/UCA0RXD|------------> // | | 9600 - 8N1 // | P6.6/UCA0TXD|<------------ // // P. Thanigai // Texas Instruments Inc. // January 2009 // Built with CCE Version: 3.1 and IAR Embedded Workbench Version: 4.11 //******************************************************************************
#include <msp430.h>
int main(void) { volatile unsigned int i;
WDTCTL = WDTPW+WDTHOLD; // Stop WDT FLL_CTL0 |= XCAP11PF; // Configure load caps
do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0x47FF; i > 0; i--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set?
P6SEL |= BIT5+BIT6; // P6.5,6 = USCI_A0 RXD/TXD UCA0CTL1 |= UCSSEL_1; // CLK = ACLK UCA0BR0 = 0x03; // 32k/9600 - 3.41 UCA0BR1 = 0x00; // UCA0MCTL = 0x06; // Modulation UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
_BIS_SR(LPM3_bits + GIE); // Enter LPM0, interrupts enabled }
// Echo back RXed character, confirm TX buffer is ready first #pragma vector=USCIAB0RX_VECTOR __interrupt void USCIA0RX_ISR (void) { while(!(IFG2&UCA0TXIFG)); UCA0TXBUF = UCA0RXBUF; // TX -> RXed character }
Сообщение отредактировал OlegALL - Jul 17 2015, 09:49
|
|
|
|
|
Jul 17 2015, 08:05
|

профессиональный дилетант
   
Группа: Участник
Сообщений: 866
Регистрация: 16-03-06
Из: Шебекино - Лысьва - Тюмень
Пользователь №: 15 292

|
Цитата(OlegALL @ Jul 17 2015, 10:43)  Скорость 1200 не помогла. На стороне передатчика, надеюсь, тоже выставили скорость 1200 ? И столько же стоп-битов, сколько и в Вашем коде (кстати, неплохо бы его в тег убрать, пока от модератора нагоняй не получили)? Что касается примера TI - если пойдет непрерывный поток из нескольких байт (кадр), при таком делении неизбежно сорвется синхронизация, что и получилось  Цитата // | P6.5/UCA0RXD|------------> // | | 9600 - 8N1 // | P6.6/UCA0TXD|<------------ Это всего лишь пример, работает на заглушку, что передает - то и принимает. С другим устройством будет "подглючивать"
Сообщение отредактировал Abell - Jul 17 2015, 08:10
--------------------
Скоро дело сказывается, да не скоро сказка делается, или тише будешь - дальше уедешь...  
|
|
|
|
Сообщений в этой теме
OlegALL UART не принимает больше одного байта. Контроллер MSP430F4152 Jul 14 2015, 09:45 mcheb Сначала надо установить сброс УАРТа потом его вклю... Jul 14 2015, 11:35 OlegALL Что за сброс? Jul 14 2015, 11:53 mcheb Цитата(OlegALL @ Jul 14 2015, 15:53) Что ... Jul 14 2015, 13:20  OlegALL Цитата(mcheb @ Jul 14 2015, 17:20) КодUCA... Jul 15 2015, 06:06 yuri_t Заработал ли UART ? Jul 16 2015, 04:44 Abell Обсуждение читать там, а ответы давать здесь?
В... Jul 16 2015, 06:02 OlegALL Цитата(Abell @ Jul 16 2015, 10:02) Обсужд... Jul 16 2015, 06:52  yuri_t Цитата(OlegALL @ Jul 16 2015, 09:52) Да, ... Jul 16 2015, 08:32   OlegALL Цитата(yuri_t @ Jul 16 2015, 12:32) Ну то... Jul 16 2015, 09:53    Abell Цитата(OlegALL @ Jul 16 2015, 12:53) По п... Jul 16 2015, 10:21     OlegALL Цитата(Abell @ Jul 16 2015, 14:21) 32768 ... Jul 16 2015, 10:48      Abell Цитата(OlegALL @ Jul 16 2015, 13:48) Да 3... Jul 16 2015, 10:58 agregat Скорее всего процессор был частично испорчен в про... Jul 16 2015, 11:40 OlegALL Цитата(agregat @ Jul 16 2015, 15:40) Скор... Jul 16 2015, 12:06  Abell Цитата(OlegALL @ Jul 16 2015, 15:06) Тако... Jul 16 2015, 12:42  agregat Цитата(OlegALL @ Jul 16 2015, 15:06) Тако... Jul 17 2015, 10:51   OlegALL Цитата(Abell @ Jul 17 2015, 12:05) На сто... Jul 17 2015, 09:46 Obam При настройке УАПП, мне в своё время, очень понрав... Jul 17 2015, 09:59 Abell И что не получилось, какие симптомы, можно подробн... Jul 17 2015, 10:06 OlegALL Всё работает, неправильно сделал инициализацию. Сп... Jul 27 2015, 06:01
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|