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

|
Пытаюсь изучить микроконтроллеры AVR. Эмулирую в VMLABе. Проблема такая - не работает проверка по четности при получении байта через UART. На сколько я понял, при ошибке контроля четности 2 бит регистра ucsrA должен стать в единицу, но этого не происходит.  Мучаюсь уже пол ночи. В чем может быть ошибка? Приемо-передатчик конфигурирую так: ldi temp, 0x00 out ubrr0h, temp ldi temp, 0x05 out ubrr0l, temp ldi temp, 0x94 out ucsr0b, temp ldi temp, 0xa6 out ucsr0c, temp
|
|
|
|
|
Dec 28 2008, 10:40
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Dec 28 2008, 10:40
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Цитата(Andrnow @ Dec 28 2008, 04:15)  Пытаюсь изучить микроконтроллеры AVR. Эмулирую в VMLABе. ... Мучаюсь уже пол ночи. "ночью надо спать!"  (с) Жириновский >> благодаря контролю четности, позволяет упростить подсчет CRC до банального суммирования.  это как это?
|
|
|
|
|
Dec 28 2008, 14:52
|
Группа: Новичок
Сообщений: 5
Регистрация: 10-02-07
Пользователь №: 25 228

|
Цитата А откуда при эмуляции взяться ошибке чётности? Помехи в линии связи вроде-бы не эмулируются Зато в передатчике можно включить контроль по четности\нечетности, следовательно если этот переключатель поставить неправильно должна появиться ошибка. Цитата Ну и чисто практический совет: не следует придавать такого большого значения контролю по чётности. Редко когда от него есть польза. В большинстве случаев либо можно совсем никак не контролировать правильность передачи Объясняю. Я сейчас пишу дипломную работу. Ну надо же при защите вставить фразу типа "При передаче данных от компьютера к устройству происходит проверка переданных данных"  off: А вообще во всем виноват препод. Я хорошо знаю 51-е, на них бы написал за один вечер... а ему видите ли "микроконтроллер поновее" захотелось. Пришлось AVRки изучать. Цитата А зачем вы настроили 9-ти битный символ? может быть в этом проблема? Т. е. у вас сейчас просисходит такая передача(побитно ) старт-бит, 0-бит, 1-бит, ... 7-бит, 8-бит, бит четности, стоп бит, может быть надо 8 битный сивол? Указывал 8 бит - все равно не работает( Цитата Вообще не плохо-бы контроллер указать, для которого пишете. А это важно? Ну ATMega162 Цитата И еще, приучайтесь писать так ldi temp, (1<<RXIE)|(1<<RXEN)| (1<<UCSZ2) out ucsr0b, temp Но понимаю, что обозначают такие записи и зачем они нужны.
|
|
|
|
|
Dec 28 2008, 15:26
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Andrnow @ Dec 28 2008, 18:52)  Указывал 8 бит - все равно не работает( Смотрите на железяке, а не на отстойном очке "в иной мир" . Vmlab, емнип, такая же горбуха в плане эмуляции, как и AVRstudio. ...ммм в Протеусе можно глянуть. Цитата что обозначают такие записи и зачем они нужны Ню-ню  А потом, когда надо посмотреть, чего там записано в регистр, надо в 10^N раз открывать волшебную даташиту и смотреть, где какие биты сидят.
|
|
|
|
|
Dec 28 2008, 22:20
|
Группа: Новичок
Сообщений: 5
Регистрация: 10-02-07
Пользователь №: 25 228

|
В общем, как я и думал, это глюк VMLABа. В реальном микроконтроллере все работает)
|
|
|
|
|
Dec 28 2008, 23:54
|
Группа: Новичок
Сообщений: 5
Регистрация: 10-02-07
Пользователь №: 25 228

|
Закрывай) А нужно?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|