Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Помогите с UART AVR


Автор: klin2006 15.5.2009, 13:59
Всем привет! Помогите пожалуйста! Нужна любая информация по теме: «Ввод-вывод информации через последовательный порт UART AVR по прерываниям». Если есть у кого какие-либо кусочки программы и т.д поделитесь пожалуйста. Если есть возможность, своими словами опишите принцип приема и передачи данных через UART по прерываниям. Заранее спасибо.

Автор: UniBomb 15.5.2009, 17:02
klin2006, во-первых не в том разделе тема, во-вторых недостаточно информации в вопросе. На каком языке? На си например это будет выглядеть так:

Код

/*...*/
 char data;
/*...*/
int main()
 {
  //настраиваем модуль USART
  UDRn = data; //передаём данные
 }
/*...*/
ISR(SIG_UARTn_TRANS) //Обработчик прерывания по передачи данных
 {
  //тут уже все данные пеерданы, можно делать что угодно
 }
/*...*/
ISR(SIG_UARTn_RECV) //обработчик прерывания по приёму данных
 {
  data = UDRn; //принимаем данные
 }
/*...*/


где n - это номер модуля USART

Автор: UniBomb 16.5.2009, 18:34
ммм... тут же ветка про асм))) Сорри. На асме это выглядет примерно так:


Код

rjmp main
;...
;...
;...
rjmp TxVect ;определяем вектор прерывания по приёму данных
rjmp RxVect ;определяем вектор прерыванию данных
;...
;...

main:

;инициализируем модуль USART

ldi r16, 0xFF
out UDRn, r16 ;передаём какие-нибудь данные

;...

TxVect:
;...
; делаем какие-либо действия
;...
reti

;...

RxVect:
;...
in r16, UDRn ;считываем принятые данные
; делаем ещё чего-нибудь (или не делаем больше ничего)
reti

Автор: klin2006 17.5.2009, 09:25
UniBomb, большое спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)