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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Проблема с приемом данных USART в ATtiny2313
Прораб счастья
сообщение Oct 29 2008, 13:30
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 28-10-08
Из: Москва
Пользователь №: 41 264



Сегодня вечером заменю кварц на 7.3728МГц, проверю что вызывает ошибку (по совету defunct), ну и с этим паритетом покопаюсь...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Oct 29 2008, 15:22
Сообщение #17


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(SysRq @ Oct 29 2008, 12:52) *
Цитирую datasheet: "If Parity Check is not enabled the UPE bit will always be read zero."

Бит чётности читается 0, всё правильно, но если он физически передаётся другой стороной, то МК принимает его за стоп-бит, поскольку его инициализировали не принимать бит чётности.

На последовательности бит отлично видно, бит чётности передаётся, START-B0-B1-B2-B3-B4-B5-B6-B7-P-STOP1-STOP2, а МК думает, что уже идёт первый бит STOP1.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
SysRq
сообщение Oct 29 2008, 15:40
Сообщение #18


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(=GM= @ Oct 29 2008, 18:22) *
Бит чётности читается 0, всё правильно, но если он физически передаётся другой стороной, то МК принимает его за стоп-бит, поскольку его инициализировали не принимать бит чётности.

Вы правы, я прочитал начало фразы, а основную вашу мысль почему-то не воспринял. Решил, что автор все же занает что и как он передает. И написал о своем :)
Go to the top of the page
 
+Quote Post
Прораб счастья
сообщение Oct 30 2008, 07:30
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 28-10-08
Из: Москва
Пользователь №: 41 264



Я, в общем-то, знаю что я передаю smile.gif
Посылка у меня без паритета. После проверки оказалось, что ошибка - FRAMING_ERROR. Пробывал менять местами А и В, но результат тот же...
Go to the top of the page
 
+Quote Post
SysRq
сообщение Oct 30 2008, 08:46
Сообщение #20


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Попробуйте отправить неразрывно два байта: [0xFF][любой_байт_данных]. Если стартовый бит не всегда ловится, то здесь должен пойматься у второго байта четко.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Oct 30 2008, 10:01
Сообщение #21


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Прораб счастья @ Oct 30 2008, 07:30) *
Посылка у меня без паритета. После проверки оказалось, что ошибка - FRAMING_ERROR

Если посылка без паритета, зачем тогда вы этот паритет проверяете?

Вы уверены, что правильно определяете ошибку приёма? ПМСМ, лучше вместо красного фрагмента в вашей программе, который даёт солидную задержку в прерывании,
Цитата(Прораб счастья @ Oct 29 2008, 10:11) *
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
PORTB.7=1;
delay_ms(100);
PORTB.7=0;

rx_buffer[rx_wr_index]=data;
};

поставить одну инструкцию PINB.7=1;, которая просто инвертирует пин Б7 при приёме текущего байта.

Если же у вас всё же появляется ошибка FE, то проверяйте скорости передачи приёма прямым измереним. Для начала можно соединить выход передатчика с входом приёмника.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
IVANS
сообщение Oct 30 2008, 10:13
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 2-12-04
Пользователь №: 1 296



GM
может так?
PORTB.7=~PINB.7

Попробуй включить передатчик тиньки (и драйвер 485 на передачу), постоянно что-нибудь передавать и смотреть компутером. Т.о. будет ясно правильно ли выставлена скорость.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Nov 1 2008, 18:28
Сообщение #23


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(IVANS @ Oct 30 2008, 13:13) *
GM
может так?
PORTB.7=~PINB.7

Восстанавливаю (исчезла из-за падения форума) весьма полезную информацию от =GM= касательно особенностей упоминаемого в теме МК:
"Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn."

Сообщение отредактировал SysRq - Nov 1 2008, 18:30
Go to the top of the page
 
+Quote Post
=GM=
сообщение Nov 1 2008, 20:50
Сообщение #24


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(SysRq @ Nov 1 2008, 18:28) *
Восстанавливаю (исчезла из-за падения форума) весьма полезную информацию от =GM= касательно особенностей упоминаемого в теме МК:"Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn"

Вы знаете, эта особенность в настоящее время распространилась почти на все атмеловские МК, не только на этот. Для уточнения смотрите на описание портов конкретного МК, ну и ещё можно почитать про описание функции Read-Modify-Write.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

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

 


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


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