Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Микроконтроллеры других производителей

Микроконтроллеры других производителей Все, что касается микроконтроллеров и НЕ подошло в раздел Microchip.

Ответ
 
Опции темы Опции просмотра
Старый 25.04.2011, 20:21   #1
KeMik
Senior Member
 
Аватар для KeMik
 
Регистрация: 05.04.2009
Сообщений: 170
Вес репутации: 126/34
KeMik will become famous soon enoughKeMik will become famous soon enough
По умолчанию Передача данных по STDIO

Здравствуйте!
Использую библиотеку stdio и среду Keil. Передаю данные от процессора на комп по следующей схеме:
LPC2368 (UART0)->FT232(COM2)->Терминальная программа (Flash Magic, AT200, PuTTY)
На всех выше перечисленных терминалах приходят какие-то крякозяблики вместо текста. Эксперементировал с разными кодировками, но это не помогло.
Проц работает на внутреннем генераторе, пробовал Baud Rate 2400 и 9600
Код:
#include <stdio.h>
#include <LPC23xx.H>                    /* LPC23xx definitions                */

int main (void) {

 PINSEL0 |= 0x00000050;  /* Enable TxD0 and RxD0              */
 U0FDR   = 0;                    /* Fractional divider not used       */
 U0LCR   = 0x83;                /* 8 bits, no Parity, 1 Stop bit     */
 U0DLL    = 104;               /* 2400 Baud Rate @ 4.0 MHZ Internal RC    */
 U0DLM    = 0;
 U0LCR   = 0x03;                   /* DLAB = 0                          */

  while (1) 
  {              /*Посылаю:            В терменале появляется:     */
         printf ("Hello\r\n");        //TеллоOнOР
      printf ("Привет\r\n");  //ПьбеБOнOР
      printf ("123\r\n");         //qrs_нOР
  }
  
}
На эмуляторе Keil-овском у меня все красиво приходит
__________________
"Если при первом рассмотрении идея не кажется абсурдной, толку из нее не будет" Альберт Эйнштейн

Последний раз редактировалось KeMik; 25.04.2011 в 20:35.
KeMik вне форума   Ответить с цитированием
Старый 26.04.2011, 08:18   #2
Bill
Senior Member
 
Аватар для Bill
 
Регистрация: 26.02.2007
Адрес: Челябинск
Возраст: 67
Сообщений: 2,215
Вес репутации: 1898/80
Bill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant futureBill has a brilliant future
По умолчанию Да нет у вас никаких кракозябликов.

Цитата:
Сообщение от KeMik Посмотреть сообщение
Здравствуйте!
Использую библиотеку stdio и среду Keil. Передаю данные от процессора на комп по следующей схеме:
LPC2368 (UART0)->FT232(COM2)->Терминальная программа (Flash Magic, AT200, PuTTY)
На всех выше перечисленных терминалах приходят какие-то крякозяблики вместо текста. Эксперементировал с разными кодировками, но это не помогло.
Проц работает на внутреннем генераторе, пробовал Baud Rate 2400 и 9600
Код:
#include <stdio.h>
#include <LPC23xx.H>                    /* LPC23xx definitions                */

int main (void) {

 PINSEL0 |= 0x00000050;  /* Enable TxD0 and RxD0              */
 U0FDR   = 0;                    /* Fractional divider not used       */
 U0LCR   = 0x83;                /* 8 bits, no Parity, 1 Stop bit     */
 U0DLL    = 104;               /* 2400 Baud Rate @ 4.0 MHZ Internal RC    */
 U0DLM    = 0;
 U0LCR   = 0x03;                   /* DLAB = 0                          */

  while (1) 
  {              /*Посылаю:            В терменале появляется:     */
         printf ("Hello\r\n");        //TеллоOнOР
      printf ("Привет\r\n");  //ПьбеБOнOР
      printf ("123\r\n");         //qrs_нOР
  }
  
}
На эмуляторе Keil-овском у меня все красиво приходит
Есть четкое соответствие между тем, что вы передаете и что принимаете. Сравните коды передаваемых и принимаемых данных, например 123 и qrs. для первой тройки коды будут 0x31, 0x32, 0x33, для второй - 0x71, 0x72, 0x73. Вся разница состоит в 6-м разряде. Аналогично можно посмотреть и другие коды. Или нет?
Bill вне форума   Ответить с цитированием
Старый 26.04.2011, 20:59   #3
KeMik
Senior Member
 
Аватар для KeMik
 
Регистрация: 05.04.2009
Сообщений: 170
Вес репутации: 126/34
KeMik will become famous soon enoughKeMik will become famous soon enough
По умолчанию Re: Да нет у вас никаких кракозябликов.

Цитата:
Сообщение от Bill Посмотреть сообщение
Есть четкое соответствие между тем, что вы передаете и что принимаете. Сравните коды передаваемых и принимаемых данных, например 123 и qrs. для первой тройки коды будут 0x31, 0x32, 0x33, для второй - 0x71, 0x72, 0x73. Вся разница состоит в 6-м разряде. Аналогично можно посмотреть и другие коды. Или нет?
хм... Ну про шестой бит я понял, а что мне с ним делать? Написать свой терминал который будет этот бит игнорировать? Или я не правильно сконфигурировал UART? Или мне надо переписать STDIO?
__________________
"Если при первом рассмотрении идея не кажется абсурдной, толку из нее не будет" Альберт Эйнштейн
KeMik вне форума   Ответить с цитированием
Старый 26.04.2011, 21:09   #4
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,660
Вес репутации: 5212/158
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Да нет у вас никаких кракозябликов.

Цитата:
Сообщение от KeMik Посмотреть сообщение
хм... Ну про шестой бит я понял, а что мне с ним делать? Написать свой терминал который будет этот бит игнорировать? Или я не правильно сконфигурировал UART? Или мне надо переписать STDIO?
у вас слишком много неизвестных, как говорится, заблудились в трёх соснах.
писать свой терминал не надо, надо просто подключиться _до_ фтди, напрямую на ноги контроллера.
в стдио (вам) переписывать нечего.
рекомендую применять не printf, а sprintf, полУчите полный контроль над выводом.
скорее всего, неправильно сконфигурён уарт.
Greg вне форума   Ответить с цитированием
Старый 28.04.2011, 21:26   #5
KeMik
Senior Member
 
Аватар для KeMik
 
Регистрация: 05.04.2009
Сообщений: 170
Вес репутации: 126/34
KeMik will become famous soon enoughKeMik will become famous soon enough
По умолчанию Re: Да нет у вас никаких кракозябликов.

Цитата:
Сообщение от Greg Посмотреть сообщение
у вас слишком много неизвестных, как говорится, заблудились в трёх соснах.
писать свой терминал не надо, надо просто подключиться _до_ фтди, напрямую на ноги контроллера.
в стдио (вам) переписывать нечего.
рекомендую применять не printf, а sprintf, полУчите полный контроль над выводом.
скорее всего, неправильно сконфигурён уарт.
Подключался я на прямую на ноги UART-а логическим анализатором, но на нем увидел все ту же ерунду что и на терминале. Однако проблему я решил но по програмерски)) Покавырявшись в настройках я пришел к выводу что единственное в чем я мог ошибится - это выбор делителя для скорости. Набросав на скорую руку функцию которая в цикле инкрементирует этот делитель от 1 до бесконечности, я запустил пошаговую отладку где на каждом шаге смотрел значение в делителе и смотрел что появляется в терминале. В общем что-либо начало появлятся где-то со значения делителя окого 24-х, но это были всякие крякозаблики сменяющие один другой по мере учеличения делителя. Правильные цифры и буквы появились со значения делителя примерно 92, это при том что расчетное значение у меня 104. Дальше начиная со значения 100 и выше опять начали появлятся крякозяблики.
Свой делитель я расчитывал по даташиту, после чего проверял на калькуляторе скачаном с официального сайта Keil-а, и значение всегда было 104.
В следствии чего я могу сделать вывод что заявленное компанией NXP строчка User Manual-а "The nominal IRC frequency is 4MHz." скорее всего не соответствует действительности так как, я проводил расчет какраз для данной частоты. При этом не каких экстремальных температурных условия у меня не было.

Ну и ещё вопрос знатокам, латинские буквы и цифры STDIO у меня выводит, а может ли она выводить и русские буквы? В моем случае вместо русского Привет я получил "оПХБЕР", либо опять в настройки UART-а лезть надо?
__________________
"Если при первом рассмотрении идея не кажется абсурдной, толку из нее не будет" Альберт Эйнштейн
KeMik вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача звука по ТСР smart_pic Продукция MICROCHIP 9 03.04.2011 17:58
При получении данных по USART сбрасывается пик pic629 Продукция MICROCHIP 22 19.06.2008 12:27
Передача по радиоканалу с помощью USART Валерий Продукция MICROCHIP 14 29.03.2007 19:13
Передача данных по радиоканалу Валерий Общетехнические вопросы 2 04.03.2007 15:27
Передача данных между тел. модемами Kostyan Общетехнические вопросы 6 01.03.2007 08:26


Часовой пояс GMT +3, время: 21:48.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot