Atmega assembler, на терминал сыпится мусор

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 15
Зарегистрирован: Пн мар 01, 2021 09:01:13

Сообщение trojninalex »

Всем привет.
Учусь работать с usart на avr. Написал функцию приема и передачи. Пробовал передать латинский алфавит на терминал, проблем не возникло. Решил попробовать сделать эхо, тут возникает проблема, на терминал сыпится мусор и ни про какое эхо говорить не происходится.
Вложения
main.asm
(348 байт) 225 скачиваний
usart.asm
(1.1 КБ) 229 скачиваний
Реклама
akl
Друг Кота
Сообщения: 4447
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Может из-за этого

Код: Выделить всё

	LDS		r19,	UDR0
;	ldi		r19,	UDR0	; загрузка Адреса UDR0?????????
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15590
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Если это "чистый ассемблер", то для начала....
Что за кристалл?
Соответственно в заголовочном файле отсутствует подключение файла описания кристалла
nnnnnnndef.inc (nnnnnn - имя соответствующего МК).
Далее - совершенно отсутствует обслуживание прерываний в смысле привязки подпрограмм к векторам обработки прерываний, а "эхо" предусматривает отзыв по факту получения/обработки данных... Да и вообще "механика" последовательного обмена строится либо на прерываниях либо на программном ожидании факта завершения приема(или передачи) байта данных.
:roll:
Родился
Сообщения: 15
Зарегистрирован: Пн мар 01, 2021 09:01:13

Сообщение trojninalex »

[uquote="akl",url="/forum/viewtopic.php?p=3989527#p3989527"]Может из-за этого

Код: Выделить всё

	LDS		r19,	UDR0
;	ldi		r19,	UDR0	; загрузка Адреса UDR0?????????
[/uquote]
Может, вечером попробую.
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 15
Зарегистрирован: Пн мар 01, 2021 09:01:13

Сообщение trojninalex »

ldi r19, udr0 заменил на lds r19, udr0.
Добавил вызов ожидания завершения передачи. Получилось, но при каждом нажатии на клавишу терминал печатает символ, то тот какой должен быть, то совсем другой.
Решил что компьютер с микроконтроллером не синхронезированы. Пересчитал UBRR0L/H, проверил режим четности и количество стоповых битов. Все правильно, кадр формата 115200 8N2.
На компьютере использую putty. Формат кадра соответствует. Попробовал поменять стоповый бит с 2 на 1. Режим эхо начал работать без ошибок.
В данный момент на мк формат 8N2, на компьютере 8N1. При вводе ошибок нет. Из-за чего такое может быть?

Добавлено after 1 minute 12 seconds:
Используется atmega328p
Реклама
akl
Друг Кота
Сообщения: 4447
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

[uquote="trojninalex",url="/forum/viewtopic.php?p=3990092#p3990092"]...В данный момент на мк формат 8N2, на компьютере 8N1. При вводе ошибок нет. Из-за чего такое может быть?[/uquote]МК транслирует 8N2 приемнику путти и последний стоп-бит роли не играет.
А вот когда МК принимает от путти в 8N1 возникает ошибка, т.к. МК ждет 2-й стоп-бит.
Реклама
Родился
Сообщения: 15
Зарегистрирован: Пн мар 01, 2021 09:01:13

Сообщение trojninalex »

[uquote="akl",url="/forum/viewtopic.php?p=3990104#p3990104"][uquote="trojninalex",url="/forum/viewtopic.php?p=3990092#p3990092"]...В данный момент на мк формат 8N2, на компьютере 8N1. При вводе ошибок нет. Из-за чего такое может быть?[/uquote]МК транслирует 8N2 приемнику путти и последний стоп-бит роли не играет.
А вот когда МК принимает от путти в 8N1 возникает ошибка, т.к. МК ждет 2-й стоп-бит.[/uquote]
Как раз наоборот, в этом случае ошибка не возникает, контроллер принимает, потом отправляет символы без ошибок.

Добавлено after 1 minute 48 seconds:
Как будто на контроллере стоповый бит настроен 1 вместо 2
Друг Кота
Аватара пользователя
Сообщения: 15590
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Возможно расхождение скорости в ПК и МК.
Нужно подбирать скорость с минимальными процентами ошибок (смотрим даташит) для данного источника тактирования.
Да и у компа могут быть проценты отклонений...
Проведите тест на "минимальной начальной" - 9600.
:roll:
Ответить

Вернуться в «AVR»