roboforum.ru

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

AVR Studio и usart

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

AVR Studio и usart

Сообщение Cosworth » 02 июн 2010, 20:06

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

Re: AVR Studio и usart

Сообщение Duhas » 02 июн 2010, 20:56

работа уарта несколько глючна в студии, но при установке флага преревания оно обычно происходило.. а вот читать выставленный руками байт данных - увы...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

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

Но вот что приходит:
Изображение
Вроде все правильно настроил, но почему не работает?
Cosworth
 
Сообщения: 9
Зарегистрирован: 02 июн 2010, 19:55

Re: AVR Studio и usart

Сообщение avr123.nm.ru » 02 июн 2010, 22:50

наверно не все правильно настроил.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: AVR Studio и usart

Сообщение Cosworth » 02 июн 2010, 23:33

Вроде разобрался. Может кому понадобится: надо поиграться с параметром Baud Rate настроек терминала, эта величина, почему-то, никак не связана со скоростью, устанавливаемой в контроллере.
Cosworth
 
Сообщения: 9
Зарегистрирован: 02 июн 2010, 19:55

Re: AVR Studio и usart

Сообщение Radist » 03 июн 2010, 06:48

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

ЗЫ. Точно не помню, но даже настраивать порты ввода вывода не надо - разрешение аппаратного усарта все сделает само (если склероз не врет).
Аватара пользователя
Radist
 
Сообщения: 2241
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: AVR Studio и usart

Сообщение avr123.nm.ru » 03 июн 2010, 08:55

Не из той оперы вы пропели похоже. Вникните в предыдущий пост.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: AVR Studio и usart

Сообщение Zerops » 16 дек 2011, 13:04

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

А какие именно параметры вы поставили? У меня в протеусе такая же проблема, я что только не ставил, но на виртуальном терминале либо каракули, либо вообще ничего. Один раз даже смайлик пришёл :). Ещё я заметил что если в терминале скорость такая же или выше чем я задал в контроллере, то ничего не приходит, а если ниже, то каракули.
Zerops
 
Сообщения: 6
Зарегистрирован: 14 дек 2011, 18:49
Откуда: Уфа
прог. языки: C++
ФИО: Оскар


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5