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

 
 
> ATTiny2313 - проблема с UART, На одной и тойже плате, UART AT90S2313 работает нормально, а вот с ATT
SS85
сообщение Aug 2 2007, 15:41
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-03-06
Пользователь №: 15 230



Доброго времени суток!
У меня возникла проблема с UART. Не то что бы он не работал вообще, он работает, но в младших битах переданной/принятой информации хаотически выставляются единички.

Обмен информацией с ПК осуществляется по средствам USB, и я поначалу подумал, что что-то в преобразователе интерфейса (FT232BM) - замкнул RxD и TxD, все предаётся без потерь и ошибок.

Подумал, что могут быть проблемы по питанию и возможно нехватает "подтяжки", предпринял меры:
1. Добавил дроссель по питанию и еще конденсаторов;
2. Добавил в схему подтягивающие резисторы;
3. Добавил стабилизатор напряжения 3,3В;
4. Отключил переферию....
Ничего не помогло...

Потом подумал, что возможно причина в кварце, переключил на внутренний. Тот же эффект!

Затем для чистоты эксперимента поставил AT90S2313, всё заработало с первого раза.

Вот сижу и ломаю голову, что может быть не так?

P.S.: У меня две тини, из одной и той же партии, работают одинаково плохо. Так же, пробовал правильно ли работает приемник UART, та же проблема!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение Aug 2 2007, 16:37
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Только с FTшкой такое или через MAX232 тоже биты бьются?
Go to the top of the page
 
+Quote Post
SS85
сообщение Aug 3 2007, 14:57
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-03-06
Пользователь №: 15 230



2 defunct:
С МАХ232 не пробывал, просто у меня нет СОМ порта на ноутбуке.

2 =AVR=:
С фьюзами всё супер.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 3 2007, 15:08
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(SS85 @ Aug 3 2007, 18:57) *
2 defunct:
С МАХ232 не пробывал, просто у меня нет СОМ порта на ноутбуке.

2 =AVR=:
С фьюзами всё супер.

Тогда - настройки UART в студию ! Мысль о несогласовании частот (BTW, а на какой скорости работаешь и какая тактовая ?) мы отвергнем как несвоевременную wink.gif Поскольку "бьются" младшие биты, которые как раз передаются первыми. Вообще какие-то чудеса, такого просто не может быть. Тем более что эффект наблюдается и при приеме, и при передаче. Раз есть при передаче - встаем скопом на TxD и внимательно смотрим, а что же у нас там такое ? Вообще-то у 90s2313 и tiny2313 есть существенные различия, но в данном случае я даже не представляю, как можно сделать ТАКОЕ... Я бы начал именно с передачи, зациклив чередование передачи какого-нибудь легко читаемого паттерна (5A, A5, 55, AA), разглядывая скопом и протоколируя на терминалке. И попробовав на разных скоростях.

Сообщение отредактировал rx3apf - Aug 3 2007, 15:09
Go to the top of the page
 
+Quote Post
SS85
сообщение Aug 3 2007, 15:59
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 14-03-06
Пользователь №: 15 230



Цитата
встаем скопом на TxD и внимательно смотрим, а что же у нас там такое ?

Проблема в том, что скопа у меня нетsad.gif.

Цитата
Вообще-то у 90s2313 и tiny2313 есть существенные различия, но в данном случае я даже не представляю, как можно сделать ТАКОЕ...

Насчет разницы МК я знаю и о том что настраиваются по разному тоже. Инициализация УАРТа:
Код
#define RxBuffLength  20            // Length of RX buffer
#define BR    115200                // Baudrate
#define BAUD  F_CPU/(16 * (BR + 1)) // MCU BAUD

void DeviceInit(void)
{

  //*** USART
#ifdef __IO2313_H
  UCR = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
  UBRR = (unsigned char)BAUD;
#else
  UBRRH = (unsigned char)(BAUD>>8);
  UBRRL = (unsigned char)BAUD;
  //Rx - en, Tx  - en, RxI - en
  UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
  //8n1
  UCSRC = 3<<UCSZ0;
#endif

}

Цитата
Я бы начал именно с передачи, зациклив чередование передачи какого-нибудь легко читаемого паттерна (5A, A5, 55, AA), разглядывая скопом и протоколируя на терминалке. И попробовав на разных скоростях.

Я подобным занимался, с единственным отличием, вначале делал эхо, т.е. просто терминалкой передавал символы и смотрел что мне приходит, затем сделал чуть иначе запустил таймер, и по прерыванию передавал байты от 0 до 255 в цикле. Приемник проверял таким образом: брал символы из эксперимента 1 (я имею ввиду те которые были возвращены искаженными) и по очереди подставлял в условие:
Код
#ifdef __IO2313_H
  #pragma vector=UART_RX_vect
#else
  #pragma vector=USART0_RX_vect
#endif
__interrupt void usart0_rx_isr(void)
{

if (UDR == ‘<очередной байт>’)
  LedON();
else
  LedOFF();

}


Я так понимаю, остается добавить в схему МАХ232 и проверить еще с ней.

Цитата(GDI @ Aug 3 2007, 18:28) *

Что я там могу для себя подчеркнуть? Это же описангие перехода от AT90S1200 к ATTiny2313.
Go to the top of the page
 
+Quote Post



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

 


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


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