Страница 1 из 1
Atmega assembler, на терминал сыпится мусор
Добавлено: Пн мар 01, 2021 09:05:30
trojninalex
Всем привет.
Учусь работать с usart на avr. Написал функцию приема и передачи. Пробовал передать латинский алфавит на терминал, проблем не возникло. Решил попробовать сделать эхо, тут возникает проблема, на терминал сыпится мусор и ни про какое эхо говорить не происходится.
Re: Atmega assembler, на терминал сыпится мусор
Добавлено: Пн мар 01, 2021 10:18:07
akl
Может из-за этого
Код: Выделить всё
LDS r19, UDR0
; ldi r19, UDR0 ; загрузка Адреса UDR0?????????
Re: Atmega assembler, на терминал сыпится мусор
Добавлено: Пн мар 01, 2021 10:27:56
BOB51
Если это "чистый ассемблер", то для начала....
Что за кристалл?
Соответственно в заголовочном файле отсутствует подключение файла описания кристалла
nnnnnnndef.inc (nnnnnn - имя соответствующего МК).
Далее - совершенно отсутствует обслуживание прерываний в смысле привязки подпрограмм к векторам обработки прерываний, а "эхо" предусматривает отзыв по факту получения/обработки данных... Да и вообще "механика" последовательного обмена строится либо на прерываниях либо на программном ожидании факта завершения приема(или передачи) байта данных.

Re: Atmega assembler, на терминал сыпится мусор
Добавлено: Пн мар 01, 2021 14:42:50
trojninalex
[uquote="akl",url="/forum/viewtopic.php?p=3989527#p3989527"]Может из-за этого
Код: Выделить всё
LDS r19, UDR0
; ldi r19, UDR0 ; загрузка Адреса UDR0?????????
[/uquote]
Может, вечером попробую.
Re: Atmega assembler, на терминал сыпится мусор
Добавлено: Вт мар 02, 2021 07:43:33
trojninalex
ldi r19, udr0 заменил на lds r19, udr0.
Добавил вызов ожидания завершения передачи. Получилось, но при каждом нажатии на клавишу терминал печатает символ, то тот какой должен быть, то совсем другой.
Решил что компьютер с микроконтроллером не синхронезированы. Пересчитал UBRR0L/H, проверил режим четности и количество стоповых битов. Все правильно, кадр формата 115200 8N2.
На компьютере использую putty. Формат кадра соответствует. Попробовал поменять стоповый бит с 2 на 1. Режим эхо начал работать без ошибок.
В данный момент на мк формат 8N2, на компьютере 8N1. При вводе ошибок нет. Из-за чего такое может быть?
Добавлено after 1 minute 12 seconds:
Используется atmega328p
Re: Atmega assembler, на терминал сыпится мусор
Добавлено: Вт мар 02, 2021 08:39:11
akl
[uquote="trojninalex",url="/forum/viewtopic.php?p=3990092#p3990092"]...В данный момент на мк формат 8N2, на компьютере 8N1. При вводе ошибок нет. Из-за чего такое может быть?[/uquote]МК транслирует 8N2 приемнику путти и последний стоп-бит роли не играет.
А вот когда МК принимает от путти в 8N1 возникает ошибка, т.к. МК ждет 2-й стоп-бит.
Re: Atmega assembler, на терминал сыпится мусор
Добавлено: Вт мар 02, 2021 17:03:30
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
Re: Atmega assembler, на терминал сыпится мусор
Добавлено: Вт мар 02, 2021 21:11:24
BOB51
Возможно расхождение скорости в ПК и МК.
Нужно подбирать скорость с минимальными процентами ошибок (смотрим даташит) для данного источника тактирования.
Да и у компа могут быть проценты отклонений...
Проведите тест на "минимальной начальной" - 9600.
