Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Очистить буфер UART после приема

Сообщений 1 страница 5 из 5

1

Добрый вечер всем форумчанам! Возникла небольшая проблема, которую никак не могу понять. После приема надо очистить буфер приемника. "Для освобождения буфера необходимо читать содержимое регистра UDR , пока флаг RXC не окажется равным нулю"(Белов Микроконтроллеры AVR стр .481) Там же приводится небольшой код для этого в ассемблере:

Код:
   Буфер_занят:
   !Sbis   Ucsra, rxc
   !ret
   !in     r16, udr
   !rjmp   Буфер_занят:

Но Баском все ругается  и выдает ошибки 1,222 , 387 на строку 

Код:
!Sbis   Ucsra, rxc.

Как будто такого регистра и бита у Atmega328 вообще нет

Отредактировано Niya (2020-10-13 21:21:40)

0

2

Ну да, нет: http://ww1.microchip.com/downloads/en/D … 02061B.pdf
UCSRnA, UCSRnB, UCSRnC

0

3

RDW написал(а):

Ну да, нет: http://ww1.microchip.com/downloads/en/D … 02061B.pdf
UCSRnA, UCSRnB, UCSRnC

Спасибо, RDW! В принципе, тот же код только чуть по другому написан. Но не думал, что надо написать(с индексами)

Код:
!SBIS  UCSR0A, RXC0

, а не

Код:
!SBIS   UCSRA, RXC

если в МК всего 1 USART.

0

4

Niya написал(а):

В принципе, тот же код только чуть по другому написан. Но не думал, что надо написать(с индексами)

Это асм, тут всё жестко, если есть вопросы по регистрам, портам..., то лучше сразу читать датащит, обычно всегда есть нумерация (от нуля) и неважно, что uart один (семейство-то одно, только режут на разные камни).
Нумерации может не быть, если какая нибудь экзотика типа тини (точно уже не помню), в общем: документация - наше всё.

0

5

RDW написал(а):

Это асм, тут всё жестко, если есть вопросы по регистрам, портам.

Bascom ругался и на запись UCSRA.7=1 без асм вставок. Сейчас все стало все на свои места. Индексы всегда надо писать, буду иметь ввиду. Еще раз спасибо.

0