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

 
 
> Проверка бита четности UART
Andrnow
сообщение Dec 28 2008, 01:15
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 10-02-07
Пользователь №: 25 228



Пытаюсь изучить микроконтроллеры AVR. Эмулирую в VMLABе.

Проблема такая - не работает проверка по четности при получении байта через UART.
На сколько я понял, при ошибке контроля четности 2 бит регистра ucsrA должен стать в единицу, но этого не происходит. crying.gif Мучаюсь уже пол ночи. В чем может быть ошибка?

Приемо-передатчик конфигурирую так:

ldi temp, 0x00
out ubrr0h, temp
ldi temp, 0x05
out ubrr0l, temp
ldi temp, 0x94
out ucsr0b, temp
ldi temp, 0xa6
out ucsr0c, temp
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andrnow
сообщение Dec 28 2008, 14:52
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 10-02-07
Пользователь №: 25 228



Цитата
А откуда при эмуляции взяться ошибке чётности? Помехи в линии связи вроде-бы не эмулируются

Зато в передатчике можно включить контроль по четности\нечетности, следовательно если этот переключатель поставить неправильно должна появиться ошибка.


Цитата
Ну и чисто практический совет: не следует придавать такого большого значения контролю по чётности.
Редко когда от него есть польза. В большинстве случаев либо можно совсем никак не контролировать правильность передачи

Объясняю. Я сейчас пишу дипломную работу. Ну надо же при защите вставить фразу типа "При передаче данных от компьютера к устройству происходит проверка переданных данных" smile.gif
off: А вообще во всем виноват препод. Я хорошо знаю 51-е, на них бы написал за один вечер... а ему видите ли "микроконтроллер поновее" захотелось. Пришлось AVRки изучать.


Цитата
А зачем вы настроили 9-ти битный символ? может быть в этом проблема? Т. е. у вас сейчас просисходит такая передача(побитно )
старт-бит, 0-бит, 1-бит, ... 7-бит, 8-бит, бит четности, стоп бит, может быть надо 8 битный сивол?

Указывал 8 бит - все равно не работает(



Цитата
Вообще не плохо-бы контроллер указать, для которого пишете.

А это важно? Ну ATMega162




Цитата
И еще, приучайтесь писать так
ldi temp, (1<<RXIE)|(1<<RXEN)| (1<<UCSZ2)
out ucsr0b, temp

Но понимаю, что обозначают такие записи и зачем они нужны.
Go to the top of the page
 
+Quote Post



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

 


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


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