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

 
 
> Проверка бита четности 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
Ответов
smac
сообщение Dec 28 2008, 10:40
Сообщение #2


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

Группа: Участник
Сообщений: 149
Регистрация: 2-06-08
Из: Москва
Пользователь №: 38 003



Цитата(Andrnow @ Dec 28 2008, 04:15) *
Пытаюсь изучить микроконтроллеры AVR. Эмулирую в VMLABе.
....
Приемо-передатчик конфигурирую так:

...
ldi temp, 0x94
out ucsr0b, temp
ldi temp, 0xa6
out ucsr0c, temp

А зачем вы настроили 9-ти битный символ? может быть в этом проблема? Т. е. у вас сейчас просисходит такая передача(побитно )
старт-бит, 0-бит, 1-бит, ... 7-бит, 8-бит, бит четности, стоп бит, может быть надо 8 битный сивол?
Вообще не плохо-бы контроллер указать, для которого пишете.
И еще, приучайтесь писать так
Код
    ldi temp, (1<<RXIE)|(1<<RXEN)| (1<<UCSZ2)
    out ucsr0b, temp


Сообщение отредактировал smac - Dec 28 2008, 10:41
Go to the top of the page
 
+Quote Post



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

 


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


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