Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/26: Рейтинг темы: голосов - 26, средняя оценка - 4.65
Mosoir
0 / 0 / 0
Регистрация: 24.02.2012
Сообщений: 73
1

USART для Atmega16

20.05.2014, 12:57. Просмотров 4788. Ответов 18
Метки нет (Все метки)

Здравствуйте, возникла проблема с инициализацией USORT для atmega16.
Собственно сама инициализация:
Код
;::::::::::::::::::( Установка порта D )::::::::::::::::::
ldi A,0b10100010 ;  TX на выход
out DDRD,A
;::::::::::::::::::( Инициализация USORT ):::::::::::::::::
ldi A,$02         ;
out UCSRA,A      ; Удвоение скорости передачи
ldi A,$18        ;
out UCSRB,A      ; Разрешение приема передачи
ldi A,$06        ;
out UCSRC,A      ; 8 бит данные + 1 стоп бит
ldi A,$00        ;
out UBRRH,A      ;
ldi A,$03       ;
out UBRRL,A      ;
Пользуюсь отладчиком AVR Studyo. Сначала в UCSRC заносится $06 как положено. Но затем на этой строчке (out UBRRH,A) UCSRC почему то опять сбрасывается в нули. Объясните пожалуйста в чем причина.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 12:57
Ответы с готовыми решениями:

ATmega16+USART+C нужны примеры
Собственно проблема в написании кода. Почитал в книжках про работу и настройку COM порта, но...

Atmega16 и симуляция USART в proteus
Отлаживаю программу в Proteus. Она должна вываливать в USORT строку с данными. Но вместо этого...

Не работает USART ATMega16 (asm)
Пытаюсь тут сделать прием данных по усарту. В дальнейшем планировалось сделать вывод строки...

Atmega16+USART. Разные вопросы
Ввиду того, что я чайник хочу здесь задать некоторые вопросы, на которые не нашел ответ. Первый...

Обработка сообщений через USART на Atmega16
Здравствуйте! Хочу сделать, чтобы контроллер обрабатывал команду полученную через USORT. Допустим...

18
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
20.05.2014, 13:25 2
Даташит, раздел «Accessing UBRRH/UCSRC Registers»

«The UBRRH Register shares the same I/O location as the UCSRC Register. Therefore some special consideration must be taken when accessing this I/O location. »

«When doing a write access of this I/O location, the high bit of the value written, the USORT Register Select (URSEL) bit, controls which one of the two rikystirs that will be written. If URSEL is zero during a write operation, the UBRRH value will be updated. If URSEL is one, the UCSRC setting will be updated. »
0
Sthuthu
0 / 0 / 0
Регистрация: 10.04.2014
Сообщений: 879
20.05.2014, 13:31 3
Всё по даташиту
Читай со страницы 162
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
20.05.2014, 13:36 4
Покажите, где Вы устанавливаете URSEL
0
20.05.2014, 13:36
Mosoir
0 / 0 / 0
Регистрация: 24.02.2012
Сообщений: 73
20.05.2014, 16:29 5
Изменил так:
Код
;::::::::::::::::::( Установка порта D )::::::::::::::::::
ldi A,0b10100010 ;  TX на выход
out DDRD,A
;::::::::::::::::::( Инициализация USORT ):::::::::::::::::
ldi A,$02         ;
out UCSRA,A      ; Удвоение скорости передачи
ldi A,$18        ;
out UCSRB,A      ; Разрешение приема передачи
ldi A,$86        ;
out UCSRC,A      ; 8 бит данные + 1 стоп бит
ldi A,$00        ;
out UBRRH,A      ;
ldi A,$03       ;
out UBRRL,A      ;
Но он все равно, при этой строчке(out UCSRC,A) записывает в оба регистра 86 записывает, и затем так же обнуляется.
0
Kymo
0 / 0 / 0
Регистрация: 01.04.2012
Сообщений: 319
20.05.2014, 16:39 6
а записать регистр Ц последним не судьба?
0
Mosoir
0 / 0 / 0
Регистрация: 24.02.2012
Сообщений: 73
20.05.2014, 17:00 7
Сразу пробовал, не помогает=)
0
Kymo
0 / 0 / 0
Регистрация: 01.04.2012
Сообщений: 319
20.05.2014, 17:43 8
что не помогает? покажите скриншот с записанным последним регистром C.
0
Mosoir
0 / 0 / 0
Регистрация: 24.02.2012
Сообщений: 73
20.05.2014, 18:02 9
Пожалуйста. Оба регистра постоянно изменяются вместе, независимо от того как установлен URSEL

0
Kymo
0 / 0 / 0
Регистрация: 01.04.2012
Сообщений: 319
20.05.2014, 19:10 10
но не сбрасывается же. так и должно быть.
0
Mosoir
0 / 0 / 0
Регистрация: 24.02.2012
Сообщений: 73
20.05.2014, 21:16 11
С таким же успехом я мог UBRRH изначально равным $06 поставить, у меня бы тоже не сбрасывалось. Какой тогда толк от URSEL, если независимо от его установки у меня оба регистра изменяются?)
0
Kymo
0 / 0 / 0
Регистрация: 01.04.2012
Сообщений: 319
20.05.2014, 21:47 12
это в симуляции. в реале записав в ubrrh вы тупо скорость измените, на самом деле там нули.
0
Mosoir
0 / 0 / 0
Регистрация: 24.02.2012
Сообщений: 73
20.05.2014, 22:15 13
Не совсем понял последнее...(
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
20.05.2014, 22:47 14
Пользуюсь отладчиком AVR Studyo. Сначала в UCSRC заносится $06 как положено. Но затем на этой строчке (out UBRRH,A) UCSRC почему то опять сбрасывается в нули. Объясните пожалуйста в чем причина.
Вот такой баг симмулятора , пишите разработчикам.
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
20.05.2014, 23:35 15
Цитата Сообщение от Mosoir
Пожалуйста. Оба регистра постоянно изменяются вместе, независимо от того как установлен URSEL
Вы в какой момент симуляцию останавливаете? После занесения данных в UCSRC необходимо, чтоб еще хоть одна команда выполнилась, двухуровневый конвейер, однако.
0
Mosoir
0 / 0 / 0
Регистрация: 24.02.2012
Сообщений: 73
21.05.2014, 07:54 16
tyzord66, Никакой разницы(
Могу ли я быть уверен, что аппаратно это будет работать? И в самом МК, у меня UBBRH не изменится вместе с UCSRA.
Просто к прошивке МК, с которым я собираюсь общаться по USORT, у меня доступа нет. Мне просто сказали скорость, на которую он настроен.
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
21.05.2014, 10:18 17
Цитата Сообщение от Mosoir
tyzord66, Никакой разницы(
Могу ли я быть уверен, что аппаратно это будет работать? И в самом МК, у меня UBBRH не изменится вместе с UCSRA.
Просто к прошивке МК, с которым я собираюсь общаться по USORT, у меня доступа нет. Мне просто сказали скорость, на которую он настроен.
Содержимое регистров, а так же соответствие желаемой скорости можно проверить в протеусе.
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,044
21.05.2014, 11:15 18
Цитата Сообщение от Mosoir
tyzord66, Никакой разницы(
Могу ли я быть уверен, что аппаратно это будет работать? И в самом МК, у меня UBBRH не изменится вместе с UCSRA.
Просто к прошивке МК, с которым я собираюсь общаться по USORT, у меня доступа нет. Мне просто сказали скорость, на которую он настроен.
Симуляторы не всегда корректно отображают информацию. Поэтому читаем внимательно даташиты и исходим от них, а не симуляторов. Для того, чтобы запустить железяку, вы должны знать и понимать, что происходит в МК. Как правильно загружать в регистры, считывать с них. В каком порядке записывать данные.
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
21.05.2014, 18:25 19
А так же читаем описание студии в разделе HELP и выясняем , что симулятор поддерживает для процессора , а что нет. Т.е что можно симмулировать
0
21.05.2014, 18:25
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2014, 18:25

xmega: usart - какой глубины буфер в USART?
Взялся тут "запилить" на xmego32a4 мультиплексор двух rs232 в один rs485. Все как бы получилось и...

Прога для atmega16
Нужна прога для отображения передвижения трех светодиодов подключенных к порту МК. Направление...

ПО для AVR МК Atmega16
помогите кто чем может


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.