Страница 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
В даташите есть уже ГОТОВЫЙ код - и на асме и на Си. Внимательней читайте.