UART terminal в atmel studio 6.1

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
kot9pko
Открыл глаза
Сообщения: 79
Зарегистрирован: Пт янв 22, 2010 12:57:54
Откуда: Харьков
Контактная информация:

UART terminal в atmel studio 6.1

Сообщение kot9pko »

Написал программку на ассемблере, которая принимает значение по юарт и в зависимости от принятых данных переводит в 1 ножку порта (концепт управления освещением). И вот, пришло время отладки, а отправить в симулируемый чип данные не могу. Если можно открыть виртуальный терминал, то скажите, как :)

в оффтоп:
раз так отладить программу не получилось, я прошил контроллер и... оно не работает.
Код:
Спойлер

Код: Выделить всё

 .DEVICE Atmega16

.def temp = R16
.def rx = R17

				ldi R16, low(RAMEND)	;инициализация стека
				out SPL, R16

				ldi R16, high(RAMEND)
				out SPH, R16

				LDI temp, 0xFF
				OUT DDRC, temp
				LDI temp, 0x00
				OUT DDRC, temp

rcall uart_init
main:			
loop:			rcall receive
				
				ldi temp, 49
				cp rx, temp
				brne one	
				sbis PORTC, 0
				sbi PORTC, 0
				sbic PORTC, 0
				cbi PORTC, 0
one:			ldi temp, 50
				cp rx,temp
				brne two
				sbis PORTC, 1
				sbi PORTC, 1
				sbic PORTC, 1
				cbi PORTC, 1
two:			ldi temp, 51
				cp rx,temp
				brne three
				sbis PORTC, 2
				sbi PORTC, 2
				sbic PORTC, 2
				cbi PORTC, 2
three:			ldi temp, 52
				cp rx,temp
				brne four
				sbis PORTC, 3
				sbi PORTC, 3
				sbic PORTC, 3
				cbi PORTC, 3
four:			ldi temp, 53
				cp rx,temp
				brne five
				sbis PORTC, 4
				sbi PORTC, 4
				sbic PORTC, 4
				cbi PORTC, 4
five:			ldi temp, 54
				cp rx,temp
				brne six
				sbis PORTC, 5
				sbi PORTC, 5
				sbic PORTC, 5
				cbi PORTC, 5
six:			ldi temp, 55
				cp rx,temp
				brne seven
				sbis PORTC, 6
				sbi PORTC, 6
				sbic PORTC, 6
				cbi PORTC, 6
seven:			ldi temp, 56
				cp rx,temp
				brne loop
				sbis PORTC, 7
				sbi PORTC, 7
				sbic PORTC, 7
				cbi PORTC, 7
rjmp loop


; Internal Hardware Init  ====================
;                .equ    XTAL = 8000000
;                .equ    baudrate = 10000
;                .equ    bauddivider = XTAL/(16*baudrate)-1

uart_init:      LDI     temp, 0 ;low(bauddivider) ; для тактовой частоты 8 МГц
                OUT     UBRRL,temp
                LDI     temp, 0b00110001 ;high(bauddivider) ;(49dec, 31h) и бодрейта 10000
                OUT     UBRRH,temp

                LDI     temp, 0 ; очищаем флаги
                OUT     UCSRA,temp

; Прерывания запрещены, прием-передача разрешен.
                LDI     temp, (1<<RXEN)|(1<<TXEN) ;|(0<<RXCIE)|(0<<TXCIE)|(0<<UDRIE)
                OUT     UCSRB,temp

; Формат кадра - 8 бит, пишем в регистр UCSRC, за это отвечает бит селектор
                LDI     temp, (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)
                OUT     UCSRC,temp
				ret

receive:		in temp, UCSRA
				sbrs temp, RXC
				rjmp receive

				in rx, UDR
				ret
когда включаю, то наблюдаю такую картину:
Изображение
Лучший девайс тот, который сделал сам :-)
Реклама
Ответить

Вернуться в «AVR»