d7d1cd 0 28 сентября, 2012 Опубликовано 28 сентября, 2012 · Жалоба Чтобы прерывание не происходило постоянно нужно или послать что-нибудь в uart или запретить прерывание, если передавать нечего. Так если отправить что-то в UART, то после того как он выдаст байт наружу, так сказать, то прерывание снова возникнет. Значит управлять процессом передачи нужно через разрешение\запрещение прерывания. Правильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 28 сентября, 2012 Опубликовано 28 сентября, 2012 · Жалоба Так если отправить что-то в UART, то после того как он выдаст байт наружу, так сказать, то прерывание снова возникнет. Значит управлять процессом передачи нужно через разрешение\запрещение прерывания. Правильно? Да, разрешаете прерывание если нужно послать несколько байт. В прерывании шлёте данные, если есть или запрещаете прерывания, если данных нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
d7d1cd 0 28 сентября, 2012 Опубликовано 28 сентября, 2012 · Жалоба Ясно. А еще такой вопрос: запуск механизма передачи осуществляется автоматически при записи в регистр передачи байта? А после того, как байт полностью передан, в регистре будет 0x00 или там будет тот же байт, который был передан? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 28 сентября, 2012 Опубликовано 28 сентября, 2012 · Жалоба А еще такой вопрос: запуск механизма передачи осуществляется автоматически при записи в регистр передачи байта? Ну да. А после того, как байт полностью передан, в регистре будет 0x00 или там будет тот же байт, который был передан? А зачем из него читать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
d7d1cd 0 28 сентября, 2012 Опубликовано 28 сентября, 2012 · Жалоба А зачем из него читать? Мне читать оттуда не надо. Просто интересно что остается в регистре передачи после передачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
d7d1cd 0 29 сентября, 2012 Опубликовано 29 сентября, 2012 · Жалоба Спасибо всем за помощь. Сегодня провел испытания программы, которая отправляет данные по 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 Выходим из функции Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться