Easyelectronics.ru

Электроника для всех
Текущее время: 19 янв 2021, 00:53

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: UART на ATtiny2313
СообщениеДобавлено: 24 июн 2013, 09:40 
Старожил

Зарегистрирован: 26 апр 2012, 19:19
Сообщения: 364
Сейчас начинаю работать с UART и RS-485. Нужно-ли как-то настраивать Выходы PD0 и PD1 (RXD и TXD соответственно) для работы UART? На выход или на вход?
Просто например для таймеров чтобы можно было их использовать как выходы OCnX необходимо настраивать предварительно соответствующий пин на выход DDRx = 1.
Справедливо ли это для UART? Где-то читал про это, но вот где... и уже забыл подробности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 24 июн 2013, 10:53 
Старожил

Зарегистрирован: 28 дек 2010, 03:18
Сообщения: 741
Откуда: Оренбург
Даташит писал(а):
14.6 ...When Transmitter is enabled, the normal port operation of the TxD pin is overriden by the USART and given the function as the Transmitter's serial output...
14.7 ... When Receiver is enabled, the normal port operation of the RxD pin is overriden by the USART and given the function as the Receiver's serial input...

_________________
arogov.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 24 июн 2013, 12:11 
Старожил

Зарегистрирован: 26 апр 2012, 19:19
Сообщения: 364
Вот, сам нашел в Евстифееве.
Цитата:
16.2.3. Передача данных
Работа передатчика разрешается установкой в "1" разряда TXEN (TXENn) регистра UCSRB (UCSRnB).
При установке разряда вывод TXD (TXDn) подключается к передатчику USART/UART и начинает функционировать как выход независимо от установок регистров управления портом.
Если используется синхронный режим работы (в USART), переопределяется также функционирование вывода XCK (XCKn).

Цитата:
16.2.4. Прием данных
Работа приемника разрешается установкой разряда RXEN (RXENn) регистра UCSRB (UCSRnB).
При установке разряда вывод RXD (RXDn) подключается к приемнику USART/UART и начинает функционировать как вход независимо от установок регистров управления портом.
Если используется синхронный режим работы (в USART), переопределяется также функционирование вывода XCK (XCKn).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 26 июн 2013, 08:11 
Старожил

Зарегистрирован: 26 апр 2012, 19:19
Сообщения: 364
В мультипроцессорном режиме работы при установленном бите "MPCM=1" и если в принимаемой посылке 9й бит TХB8=0 посылка игнорируется аппаратно или это нужно определять программно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 26 июн 2013, 10:56 
Старожил
Аватара пользователя

Зарегистрирован: 03 сен 2011, 21:13
Сообщения: 13139
Откуда: г.Мариинск, Кемеровская обл. , мать Россия
бит специально придуман для "аппаратности", чтоб не отвлекать мк, если это не адрес. иначе в нём смысла б не было

_________________
Лишний повод не бриться: Если у меня растёт борода, значит, это зачем-то нужно? О, Господи, неужели я - философ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 26 июн 2013, 11:33 
Старожил

Зарегистрирован: 26 апр 2012, 19:19
Сообщения: 364
Пытаюсь отладить работу UART, а с этим симулятором вечно какие-то косяки... Почему-то не получается задать значение регистра данных UDR (когда пробую выставить значение принимаемых данных). Просто не ставятся биты в окне I/O и все. Может он не понимает куда я записываю данные, ведь там регистр UDR и для приема и для передачи. Как это сделать? Когда ставлю флаг прерывания RXC, то при выходе из этого прерывания флаг не сбрасывается, а вызывается прерывание еще раз и только после второго раза флаг сбрасывается???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 26 июн 2013, 13:29 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 09 сен 2012, 02:24
Сообщения: 82
Студия 6.0 вообще не смог вручную что-либо записать в UDR в симуляторе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 26 июн 2013, 22:44 
Старожил

Зарегистрирован: 26 апр 2012, 19:19
Сообщения: 364
Косяк оказывается был в том, что я выбрал AVR simulator 2 при создании проекта!!! Что-то с ним не так походу.
Когда поменял в настройках на AVR simulator, все стало нормально симулироваться!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 03 июл 2013, 23:05 
Старожил

Зарегистрирован: 26 апр 2012, 19:19
Сообщения: 364
Подскажите почему так происходит? Чисто случайно заметил в симуляторе:
когда записываю в регистр UCSRC также одновременно происходит запись того же значения и в регистр UBRRH!
Инициализировал UART на tiny2313 таким образом:
Код:
   clr temp                     ; Задаем скорость 250000 бит/с при 8 МГц
   out UBRRH, temp
   ldi temp, 1
   out UBRRL, temp
   ldi temp, (1<<UPM1)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0)      ; Устанавливается асинхронный режим, проверка на четность, 2 стоп бита и 9-ти битный режим
   out UCSRC, temp
   ldi temp, (1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<UCSZ2)      ; Устанавливается 9-ти битный режим, разрешаются все прерывания от UART, разрешаем прием данных
   out UCSRB, temp
   ldi temp, (1<<MPCM)               ; Режим мультипроцессорного обмена
   out UCSRA, temp


Долго не мог понять, почему не работает устройство, потом когда это заметил, поменял код на это:
Код:
   ldi temp, (1<<UPM1)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0)   ; Устанавливается асинхронный режим, проверка на четность, 2 стоп бита и 9-ти битный режим
   out UCSRC, temp
   ldi temp, (1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<UCSZ2)           ; Устанавливается 9-ти битный режим, разрешаются все прерывания от UART, разрешаем прием данных
   out UCSRB, temp
   ldi temp, (1<<MPCM)                  ; Режим мультипроцессорного обмена
   out UCSRA, temp
   clr temp                        ; Задаем скорость 250000 бит/с при 8 МГц
   out UBRRH, temp
   ldi temp, 1
   out UBRRL, temp

...и все заработало. Оно и понятно - скорость-то обмена устанавливалась левая!
Вопрос в том, что я не видел, чтобы о такой особенности где-то упоминалось? Вроде довольно внимательно изучил книгу А.В. Белова "Микроконтроллеры AVR в радиолюбительской практике". Насколько это возможно изучал даташит. Ткните носом если знаете где об этом говорится!
Например про Atmega32 я читал что там эти регистры (UCSRC и UBRRH) как-бы общие и как с ними нужно правильно работать. А вот про tiny2313 не знал. Довольно долго ломал себе голову - где же искать ошибку!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 03 июл 2013, 23:23 
Старожил
Аватара пользователя

Зарегистрирован: 28 дек 2011, 11:24
Сообщения: 4357
Откуда: г. Липецк
Если у вас tiny2313, надо читать Errata.
Если у вас tiny2313А, ошибки исправлены, это опять же описано в Errata.
И симулятор не котируется, если бы в железе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 03 июл 2013, 23:27 
Старожил

Зарегистрирован: 26 апр 2012, 19:19
Сообщения: 364
anakost писал(а):
Если у вас tiny2313, надо читать Errata.
Если у вас tiny2313А, ошибки исправлены, это опять же описано в Errata.
И симулятор не котируется, если бы в железе.

Так я это заметил в симуляторе, а когда поправил и прошил, то в железе все заработало как надо!
У меня tiny2313 без А, сейчас посмотрю Errata.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UART на ATtiny2313
СообщениеДобавлено: 03 июл 2013, 23:41 
Старожил

Зарегистрирован: 26 апр 2012, 19:19
Сообщения: 364
Нет, в errata про это не написано!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 


Часовой пояс: UTC + 5 часов


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB