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

 
 
> UART в 9-ти битном режиме, ATmega64
Д_М
сообщение Jan 13 2014, 08:29
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



Здравствуйте!
Я AVR работаю давно и успешно. Про 9-ти битный режим знал давно, но на AVR ранее никогда не использовал.
В программе в инициализации одни раз делаю следующее:
UCSZ2_1 = 1;
UCSZ1_1 = 1;
UCSZ0_1 = 1;
MPCM_1 = 1;
TXB8_1 = 0;

Процессор является ведомым устройством. При ответе он выдаёт только 8 бит, а не 9, как хотелось бы. К такому заключению я прищёл после того, как установил 2 стоп-бита, и ведущее устройство стало воспринемать запросы от ведомого устройства. Ведущее устройство не анализирует состояние 9-го бита при ответах от ведомого устройства. Лишь бы был. Для него не важно - только бы было всего 11 бит.
Получается, что 9-ти битный режим не включился. Что делаю не так? Объясните, пожалуйста, почему по умолчанию, если не инициализировать UCSZ получается 8-ми битный формат, а не 5-ти?
Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
alag57
сообщение Jan 13 2014, 08:53
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 130
Регистрация: 26-06-06
Из: Березовский
Пользователь №: 18 355



TXB8n is the ninth data bit in the character to be transmitted when operating with serial frames with nine data bits.
Must be written before writing the low bits to UDRn.
Go to the top of the page
 
+Quote Post
Д_М
сообщение Jan 13 2014, 12:07
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



Цитата(alag57 @ Jan 13 2014, 12:53) *
TXB8n is the ninth data bit in the character to be transmitted when operating with serial frames with nine data bits.
Must be written before writing the low bits to UDRn.


Если в этот бит ничего не записать, то передаваться он будет всёравно, но с нулевым значением. У меня же не передаётся 9-й бит совсем. Правильно ли я понимаю, что для того чтобы передавалось 9 бит достаточно включить UCSZ2 в единицу? UCSZ1 и UCSZ0 уже установлены после сброса процессора.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 13 2014, 13:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Д_М @ Jan 13 2014, 16:07) *
Правильно ли я понимаю, что для того чтобы передавалось 9 бит достаточно включить UCSZ2 в единицу? UCSZ1 и UCSZ0 уже установлены после сброса процессора.

Для того, чтобы передавались 9 информационных бит достаточно установить в единицу UCSZ2, UCSZ1 и UCSZ0. Всё равно каким способом.
У Вас зачем-то ещё включен режим мультипроцессорной связи (MPCM), однако на работу передатчика он не влияет - только на работу приёмника.
Go to the top of the page
 
+Quote Post



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

 


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


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