Страница 1 из 1
ATMega16 - инициализация UART
Добавлено: Пн дек 19, 2011 15:03:09
Slavast
Help!!! Не получается настроить UART на Atmega16 для выдачи на COM порт значений.
Вроде использую стандартную инициализацию, но на выходе Меги ничего нет ((
Может что-то не так делаю?(.
help!?
Re: ATMega16 - инициализация UART
Добавлено: Пн дек 19, 2011 15:11:39
Jack_A
В начале программы д.быть векторы прерываний. Если они не используются, все равно должны быть забиты RETI. Дальше не стал смотреть.
Даташиты нужно читать с начала, а не только главу, относящуюся к проверяемой функции.
Правильно написать программу и для начала прогнать в симуляторе Студии. Минимум 50% вопросов отсеются.
Re: ATMega16 - инициализация UART
Добавлено: Пн дек 19, 2011 15:14:49
Rimsky
Код: Выделить всё
USART_Init:
; инициализации аппаратного UART, Baud rate 9600 F_CPU 16МГц
ldi r17, 0
ldi r16, 103
; Set baud rate
out UBRRH, r17
out UBRRL, r16
; Enable receiver and transmitter
ldi r16, (1<<RXEN)|(1<<TXEN)
out UCSRB, r16
; Set frame format: 8data, 1stop bit
ldi r16, (1<<URSEL)|(3<<UCSZ0)
out UCSRC, r16
ret
;--------------------------------------------------------------
USART_Transmit:
; Wait for empty transmit buffer
sbis UCSRA, UDRE
rjmp USART_Transmit
; Put data (r16) into buffer, sends the data
out UDR, r16
ret
;--------------------------------------------------------------
USART_Receive:
; Wait for data to be received
sbis UCSRA, RXC
rjmp USART_Receive
; Get and return received data from buffer
in r16, UDR
ret
;-------------------------------------------------------------
USART_Flush:
sbis UCSRA, RXC
ret
in r16, UDR
rjmp USART_Flush
Re: ATMega16 - инициализация UART
Добавлено: Вт дек 20, 2011 10:55:12
s_black
В даташите есть уже ГОТОВЫЙ код - и на асме и на Си. Внимательней читайте.