roboforum.ru

Технический форум по робототехнике.

AVR Studio и usart

AVR Studio и usart

Cosworth » 02 июн 2010, 20:06

Всем доброго времени суток. Дело в том, что я решил разобраться с уарт на АВР, накидал простой код, который по принятии на RxD 1 байта выбрасывает его на пару семисегментных индикаторов и отправляет обратно. Так вот, проблема в отладке - что только не тыкал в этой студии, в прерывание не выкидывает. Пробовал собрать схему в протеусе - прерывание происходит, но вместо осмысленных данных, которые я посылаю (через virtual terminal), возвращается какая-то ерунда.

Re: AVR Studio и usart

Duhas » 02 июн 2010, 20:56

работа уарта несколько глючна в студии, но при установке флага преревания оно обычно происходило.. а вот читать выставленный руками байт данных - увы...

Re: AVR Studio и usart

Cosworth » 02 июн 2010, 21:51

Duhas писал(а):работа уарта несколько глючна в студии, но при установке флага преревания оно обычно происходило.. а вот читать выставленный руками байт данных - увы...

Это печально. Тогда такой вопрос - пытаюсь моделировать в протеусе вот этот код. Должен просто отправлять символ на терминал:
Код: Выделить всёРазвернуть
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m164Pdef.inc"
.def tmp   =R16
.equ B_HI   =0   ;UBRRn=Fosc/(16*BAUD)
.equ B_LO   =51   ;Fosc=8MHz, BAUD=9600bps, UBRRn=51
.cseg
.org    0x0000
   rjmp Init
Init:
   ldi   tmp,0b00000010   ;PD0=RxD, PD1=TxD
   out   DDRD,tmp
   ldi   tmp,0b00000001
   out   PORTD,tmp
            ;USART
   ldi   tmp,B_LO
   sts   UBRR0L,tmp
   ldi   tmp,B_HI
   sts   UBRR0H,tmp
   ldi   tmp,(1<<TXEN0)|(1<<RXEN0)
   sts   UCSR0B,tmp
   ldi   tmp,0x61
   sts   UDR0,tmp
Loop:
   rjmp Loop

Но вот что приходит:
Изображение
Вроде все правильно настроил, но почему не работает?

Re: AVR Studio и usart

avr123.nm.ru » 02 июн 2010, 22:50

наверно не все правильно настроил.

Re: AVR Studio и usart

Cosworth » 02 июн 2010, 23:33

Вроде разобрался. Может кому понадобится: надо поиграться с параметром Baud Rate настроек терминала, эта величина, почему-то, никак не связана со скоростью, устанавливаемой в контроллере.

Re: AVR Studio и usart

Radist » 03 июн 2010, 06:48

Такие простые вопросы. Читаем многостраничный даташит (у атмелов они очень подробные), раздел усарт. Там прямо приведены примеры кода, на асме и на си. Когда мне нужно было обмен с ком портом по быстрому сделать - копипастил оттуда и все работало сразу же. Единственное, на что надо обратить внимание - какое число писать в регистр скорости.

ЗЫ. Точно не помню, но даже настраивать порты ввода вывода не надо - разрешение аппаратного усарта все сделает само (если склероз не врет).

Re: AVR Studio и usart

avr123.nm.ru » 03 июн 2010, 08:55

Не из той оперы вы пропели похоже. Вникните в предыдущий пост.

Re: AVR Studio и usart

Zerops » 16 дек 2011, 13:04

Cosworth писал(а):Вроде разобрался. Может кому понадобится: надо поиграться с параметром Baud Rate настроек терминала, эта величина, почему-то, никак не связана со скоростью, устанавливаемой в контроллере.

А какие именно параметры вы поставили? У меня в протеусе такая же проблема, я что только не ставил, но на виртуальном терминале либо каракули, либо вообще ничего. Один раз даже смайлик пришёл :). Ещё я заметил что если в терминале скорость такая же или выше чем я задал в контроллере, то ничего не приходит, а если ниже, то каракули.


Rambler\'s Top100 Mail.ru counter