реклама на сайте
подробности

 
 
> Передача по USART
d7d1cd
сообщение Aug 5 2012, 14:53
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Привет всем! Подскажите, могу ли я организовать передачу по USART (в режиме UART) без использования вектора прерывания для передачи? Сразу извиняюсь, если вопрос глуп...
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 20)
d7d1cd
сообщение Sep 28 2012, 15:57
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(_Артём_ @ Sep 28 2012, 19:35) *
Чтобы прерывание не происходило постоянно нужно или послать что-нибудь в uart или запретить прерывание, если передавать нечего.



Так если отправить что-то в UART, то после того как он выдаст байт наружу, так сказать, то прерывание снова возникнет. Значит управлять процессом передачи нужно через разрешение\запрещение прерывания. Правильно?

Go to the top of the page
 
+Quote Post
_Артём_
сообщение Sep 28 2012, 16:11
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(d7d1cd @ Sep 28 2012, 18:57) *
Так если отправить что-то в UART, то после того как он выдаст байт наружу, так сказать, то прерывание снова возникнет. Значит управлять процессом передачи нужно через разрешение\запрещение прерывания. Правильно?

Да, разрешаете прерывание если нужно послать несколько байт.
В прерывании шлёте данные, если есть или запрещаете прерывания, если данных нет.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Sep 28 2012, 16:55
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Ясно. А еще такой вопрос: запуск механизма передачи осуществляется автоматически при записи в регистр передачи байта? А после того, как байт полностью передан, в регистре будет 0x00 или там будет тот же байт, который был передан?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Sep 28 2012, 17:06
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(d7d1cd @ Sep 28 2012, 19:55) *
А еще такой вопрос: запуск механизма передачи осуществляется автоматически при записи в регистр передачи байта?

Ну да.
Цитата(d7d1cd @ Sep 28 2012, 19:55) *
А после того, как байт полностью передан, в регистре будет 0x00 или там будет тот же байт, который был передан?

А зачем из него читать?
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Sep 28 2012, 17:14
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(_Артём_ @ Sep 28 2012, 21:06) *
А зачем из него читать?

Мне читать оттуда не надо. Просто интересно что остается в регистре передачи после передачи.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Sep 29 2012, 06:58
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Спасибо всем за помощь. Сегодня провел испытания программы, которая отправляет данные по UART0. Вот такой код на ассемблере получился:
Код
Адрес начала блока отправляемых байт 0x066A
Адрес переменной, хранящей число отправляемых байт 0x0913


PUSH    R4               Освобождаем регистр для счетчика
MOV.B   #0,R4            Обнуляем счетчик для передачи
BIT.B   #0080,&0002      Если передатчик USART0 не готов к передаче, то...
JZ      0F5BE            ...ждем готовности передатчика
MOV.B   066A(R4),&0077   Помещаем очередной байт в регистр для передачи
ADD.B   #1,R4            Увеличиваем счетчик переданных байт
SUB.B   #1,&0913         Уменьшаем число не отправленных байт
JNZ     0F5BE            Если не все байты переданы, то переходим проверке готовности передатчика
POP     R4               Восстанавливаем регистр из стека
RET                      Выходим из функции
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 06:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016