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

Что за кристалл?
Соответственно в заголовочном файле отсутствует подключение файла описания кристалла
nnnnnnndef.inc (nnnnnn - имя соответствующего МК).
Далее - совершенно отсутствует обслуживание прерываний в смысле привязки подпрограмм к векторам обработки прерываний, а "эхо" предусматривает отзыв по факту получения/обработки данных... Да и вообще "механика" последовательного обмена строится либо на прерываниях либо на программном ожидании факта завершения приема(или передачи) байта данных.
- Сообщения: 15
- Зарегистрирован: Пн мар 01, 2021 09:01:13
[uquote="akl",url="/forum/viewtopic.php?p=3989527#p3989527"]Может из-за этого
[/uquote]
Может, вечером попробую.
Код: Выделить всё
LDS r19, UDR0
; ldi r19, UDR0 ; загрузка Адреса UDR0?????????Может, вечером попробую.
- Сообщения: 15
- Зарегистрирован: Пн мар 01, 2021 09:01:13
ldi r19, udr0 заменил на lds r19, udr0.
Добавил вызов ожидания завершения передачи. Получилось, но при каждом нажатии на клавишу терминал печатает символ, то тот какой должен быть, то совсем другой.
Решил что компьютер с микроконтроллером не синхронезированы. Пересчитал UBRR0L/H, проверил режим четности и количество стоповых битов. Все правильно, кадр формата 115200 8N2.
На компьютере использую putty. Формат кадра соответствует. Попробовал поменять стоповый бит с 2 на 1. Режим эхо начал работать без ошибок.
В данный момент на мк формат 8N2, на компьютере 8N1. При вводе ошибок нет. Из-за чего такое может быть?
Добавлено after 1 minute 12 seconds:
Используется atmega328p
Добавил вызов ожидания завершения передачи. Получилось, но при каждом нажатии на клавишу терминал печатает символ, то тот какой должен быть, то совсем другой.
Решил что компьютер с микроконтроллером не синхронезированы. Пересчитал UBRR0L/H, проверил режим четности и количество стоповых битов. Все правильно, кадр формата 115200 8N2.
На компьютере использую putty. Формат кадра соответствует. Попробовал поменять стоповый бит с 2 на 1. Режим эхо начал работать без ошибок.
В данный момент на мк формат 8N2, на компьютере 8N1. При вводе ошибок нет. Из-за чего такое может быть?
Добавлено after 1 minute 12 seconds:
Используется atmega328p
- Реклама
[uquote="trojninalex",url="/forum/viewtopic.php?p=3990092#p3990092"]...В данный момент на мк формат 8N2, на компьютере 8N1. При вводе ошибок нет. Из-за чего такое может быть?[/uquote]МК транслирует 8N2 приемнику путти и последний стоп-бит роли не играет.
А вот когда МК принимает от путти в 8N1 возникает ошибка, т.к. МК ждет 2-й стоп-бит.
А вот когда МК принимает от путти в 8N1 возникает ошибка, т.к. МК ждет 2-й стоп-бит.
- Сообщения: 15
- Зарегистрирован: Пн мар 01, 2021 09:01:13
[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
А вот когда МК принимает от путти в 8N1 возникает ошибка, т.к. МК ждет 2-й стоп-бит.[/uquote]
Как раз наоборот, в этом случае ошибка не возникает, контроллер принимает, потом отправляет символы без ошибок.
Добавлено after 1 minute 48 seconds:
Как будто на контроллере стоповый бит настроен 1 вместо 2
Возможно расхождение скорости в ПК и МК.
Нужно подбирать скорость с минимальными процентами ошибок (смотрим даташит) для данного источника тактирования.
Да и у компа могут быть проценты отклонений...
Проведите тест на "минимальной начальной" - 9600.

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


