Isaev_ivan 0 2 октября, 2016 Опубликовано 2 октября, 2016 · Жалоба Всем добрый день! Никак не получается организовать передачу данных из МК в ПК. Над проблемой бьюсь уже не один день. Ниже приведен код: NAME #include <msp430f247.h> ;------------------------------------------ RSEG CSTACK DS 0 RSEG CODE ;------------------------------------------ RESET mov #SFE(CSTACK),SP mov.w #WDTPW+WDTHOLD,&WDTCTL mov.b #SELM_0,&BCSCTL2; DCO mov.b #XT2OFF+RSEL3,&BCSCTL1; stop XT2 bis #OSCOFF,SR ; stop XT1 bis.b #XT2S_2,&BCSCTL3;4MHz bic.b #XT2OFF,&BCSCTL1 ;bis.b #SELM_2,&BCSCTL2 SetupOsc mov.w #1000,R15 bic.b #OFIFG,&IFG1 SetupOsc1 dec.w R15 jnz SetupOsc1 bit.b #OFIFG,&IFG1 jnz SetupOsc bis.b #SELM_2+SELS,&BCSCTL2 bis.b #1b,P5DIR bic.b #1b,P1OUT ;--------------------------------------------- bis.b #UCSWRST,&UCA1CTL1 clr.b &UCA1CTL0 bis.b #UCSSEL_1,&UCA1CTL1;ACLK mov.b #0000,&UCA1MCTL mov.b #11010000b,&UCA1BR0; 4MHz/19200 = 208.3 = 100000100b;; mov.b #000b,&UCA1BR1 clr.b &UCA1STAT clr.b &UCA1IRTCTL clr.b &UCA1IRRCTL clr.b &UCA1ABCTL bis.b #0C0h,&P3SEL; P3.6,7 - USART bic.b #UCSWRST,&UCA1CTL1 ;bis.b #UCA1RXIE,&UC1IE ;bis.b #GIE,SR; ;nop Check bit.b #UCBUSY,&UCA1STAT jnz Check Rep_Check0 bit.b #UCA1RXIFG,&UC1IFG jz Rep_Check0 mov.b &UCA1RXBUF,R6 Rep_Check01 bit.b #UCA1RXIFG,&UC1IFG jz Rep_Check01 mov.b &UCA1RXBUF,R7 Rep_Check02 bit.b #UCA1RXIFG,&UC1IFG jz Rep_Check02 mov.b &UCA1RXBUF,R8 Rep_Check10 bit.b #UCA1TXIFG,&UC1IFG jz Rep_Check10 mov.b R6,&UCA1TXBUF Rep_Check20 bit.b #UCA1TXIFG,&UC1IFG jz Rep_Check20 mov.b R7,&UCA1TXBUF Rep_Check30 bit.b #UCA1TXIFG,&UC1IFG jz Rep_Check30 mov.b R8,&UCA1TXBUF jmp Check COMMON INTVEC ORG RESET_VECTOR DW RESET END. Уже в самом начале, когда необходимо принять данные из ПК, не происходит ровным счетом ничего. Пробовал коды с Code_examples , ничего не работает. Если кто может, подскажите, пожалуйста, в чем проблема:) За ранее благодарю!) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 2 октября, 2016 Опубликовано 2 октября, 2016 · Жалоба Попробуйте добавить в регистр UCA1MCTL, в биты UCBRSx число 3 - как это приведено в таблице 15-4 мануала для USCI. Может этого достаточно будет. Ещё проверьте - не перепутаны ли TX RX сигналы на плате. Кроме того, есть ли физический контакт в линии (бывают обрывы). Прямо тестером прозвоните цепь от ножки МК до ножки на схеме ПК, откуда идут данные. И ещё посмотрите замыкание линии RX контроллера: на землю, питание, или какую-то соседнюю ножку. Вообще гляньте вольтметром, какое напряжение на этой ножке в отсутствие данных, и во время приёма. Вот ещё. Скорость передачи на стороне ПК именно 19200? Параметр настроек "Управление потоком" в состоянии Off? И остальное (бит четности, стоп бит) - как положено? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 2 октября, 2016 Опубликовано 2 октября, 2016 (изменено) · Жалоба Each bit in each PxDIR register selects the direction of the corresponding I/O pin, regardless of the selected function for the pin. PxDIR bits for I/O pins that are selected for other functions must be set as required by the other function. Подчёркнуто цитирующим P3SEL программируется - вижу, а P3DIR - не вижу. Ну и "за ранее" пишется без пробела (; Изменено 2 октября, 2016 пользователем Obam Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Isaev_ivan 0 2 октября, 2016 Опубликовано 2 октября, 2016 · Жалоба Спасибо большое за советы, но увы, ничего не заработало( буду искать проблему дальше, может быть она не в программной части вовсе) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 3 октября, 2016 Опубликовано 3 октября, 2016 (изменено) · Жалоба В дополнение к вышесказанному. Всем добрый день! Никак не получается организовать передачу данных из МК в ПК. . . . . Уже в самом начале, когда необходимо принять данные из ПК, не происходит ровным счетом ничего. Пробовал коды с Code_examples , ничего не работает. . . . . Так передача в сторону ПК таки работает, али нет ? Смотреть это надо не терминалкой, а осцилографом. Если ОНО (передача) есть, а приема нет - проверяем скорость на которой идет передача. Если скорость нестандартная или нетачтонадо - папилац не взлетит. Если в процессоре этого типа есть возможность вывести контрольные частоты MCLK SMCLK ACLK - проверяем (осцилографом) их наличие и частоты, далее - коэффиценты деления для USART с привязкой на XXCLK. Как упрощенный вариант без осцилографа - соединяем Tx - Rx и в отладчике смтрим есть ли обмен по "кольцу". PS Исходя из этой команды, Вы собираетесть использовать XT2 bic.b #XT2OFF,&BCSCTL1 До этого, проверьте, возможно надо настроить порты, которые выведены на XT2. Как в Вашем процессоре не знаю - см. даташит. Изменено 3 октября, 2016 пользователем k155la3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться