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

 
 
 
Reply to this topicStart new topic
> 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
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
Guest_=AVR=_*
сообщение Aug 2 2007, 18:30
Сообщение #3





Guests






Возможно, фузы не переключены на кварц, и МК работает от неточного внутреннего RC-генератора
Go to the top of the page
 
+Quote Post
SS85
сообщение Aug 3 2007, 14:57
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 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
GDI
сообщение Aug 3 2007, 15:28
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



http://atmel.com/dyn/resources/prod_documents/doc4299.pdf тут читали?


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
SS85
сообщение Aug 3 2007, 15:59
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 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
ahulap
сообщение Aug 3 2007, 16:23
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 22-06-06
Из: Kharkiv, UA
Пользователь №: 18 284



Похоже у вас неверно вычисляется BAUD.
У вас используется фомула для получения частоты из значения UBRR-регисра F_CPU/(16 * (BR + 1)) ,
а нужно по обратной: #define BAUD (F_CPU/16/BR - 1)
Go to the top of the page
 
+Quote Post
SS85
сообщение Aug 3 2007, 17:33
Сообщение #9


Участник
*

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



ahulap,
спасибо за то что обратили внимание на формулу, исправил, но такая ошибка не сильно повлияет, но на всякий случа попробывал. Результат не изменился.
Go to the top of the page
 
+Quote Post
_artem_
сообщение Aug 3 2007, 18:06
Сообщение #10


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



A header file меняете для attiny2313 ?

может на 90ат2313 собрать схемку и по инпут капче измерить длительность импулься для передачи байта 0х00 без парити и выдавать значение в 8 битный порт а оттуда тестером или ледами увидеть длину сигнала?

Меняли тини2313 на другой?


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
rx3apf
сообщение Aug 3 2007, 18:17
Сообщение #11


Гуру
******

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



Цитата(SS85 @ Aug 3 2007, 21:33) *
ahulap,
спасибо за то что обратили внимание на формулу, исправил, но такая ошибка не сильно повлияет, но на всякий случа попробывал. Результат не изменился.

Вообще хорошо бы попробовать явно указать значения делителей (или хоть посмотреть, что именно записывается, и для какой тактовой частоты), хотя мерцание именно младшего бита (при условии, что остальные проходят корректно) наводит на мысль, что скорости тут совсем не при чем (но и разумного объяснения таким чудесам тоже на ум не приходит). Все ж надо скопом смотреть, в конце концов, сходив туда, где он есть. Чудес (по крайней мере таких) - не бывает...
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 3 2007, 22:26
Сообщение #12


кекс
******

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



Цитата(SS85 @ Aug 3 2007, 20:33) *
но такая ошибка не сильно повлияет, но на всякий случа попробывал. Результат не изменился.

Неправду говорите, молодой человек ;>

Fosc = 11.0592?

сравним 11059200 / 16 / 115201 = 6
и
11059200 / 16 / 115200 - 1 = 5

115200 * 5/6 = 96000baud

Ошибка эта очень сильно повлияет. Ведь разница частот получается ~20%! Это значит гарантированно каждый кадр будет битым, т.к. ошибка на кадр составит 20%*10бит = 200%
Go to the top of the page
 
+Quote Post
SS85
сообщение Aug 4 2007, 10:24
Сообщение #13


Участник
*

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



Цитата(defunct @ Aug 4 2007, 01:26) *
Неправду говорите, молодой человек ;>
... ошибка на кадр составит 20%*10бит = 200%

Я всё проверил после того как исправил ошибку.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 10:26
Рейтинг@Mail.ru


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