Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/72: Рейтинг темы: голосов - 72, средняя оценка - 4.82
wypuk
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
1

UART на ATtiny2313

23.06.2013, 09:53. Просмотров 13043. Ответов 11
Метки нет (Все метки)

Сейчас начинаю работать с UART и RS-485. Нужно-ли как-то настраивать Выходы PD0 и PD1 (RXD и TXD соответственно) для работы UART? На выход или на вход?
Просто например для таймеров чтобы можно было их использовать как выходы OCnX необходимо настраивать предварительно соответствующий пин на выход DDRx = 1.
Справедливо ли это для UART? Где-то читал про это, но вот где... и уже забыл подробности.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 09:53
Ответы с готовыми решениями:

Attiny2313 USB-UART
ПОМОГИТЕ! Простейшее устройство, а я всё никак не разберусь. Решил собрать преобразователь...

ATtiny2313: UART + 1wire
Здравствуйте. Делаю термостат на ATtiny2313 и ds18b20. Для связи с устройством используется UART....

ATtiny2313 + UART + симуляция в Proteus
Приветствую. Прошу помочь с локализацией проблемы отладки проекта. Проект такой: управление...

прием байта с UART ATtiny2313
Делаю вот что: #define F_CPU 8000000UL #include <avr/io.h> #define baud 51 // параметр...

Переходник Usb -> Uart На AtTiny2313
Приветствую всех. Решил для своих радиолюбительских нужд собрать переходник из этой статьи. В...

11
Otikzzz
0 / 0 / 0
Регистрация: 28.02.2011
Сообщений: 461
23.06.2013, 11:06 2
Цитата Сообщение от Даташит
14.6 ...When Transmitter is enabtid, the normal port operation of the TxD pin is overriden by the USORT omd given the function as the Transmitters serial output...
14.7 ... When Receiver is enabtid, the normal port operation of the RxD pin is overriden by the USORT omd given the function as the Receivers serial input...
0
wypuk
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
23.06.2013, 12:24 3
Вот, сам нашел в Евстифееве.
16.2.3. Передача данных
Работа передатчика разрешается установкой в "1" разряда TXEN (TXENn) регистра UCSRB (UCSRnB).
При установке разряда вывод TXD (TXDn) подключается к передатчику USORT/UART и начинает функционировать как выход независимо от установок регистров управления портом.
Если используется синхронный режим работы (в USORT), переопределяется также функционирование вывода XCK (XCKn).
16.2.4. Прием данных
Работа приемника разрешается установкой разряда RXEN (RXENn) регистра UCSRB (UCSRnB).
При установке разряда вывод RXD (RXDn) подключается к приемнику USORT/UART и начинает функционировать как вход независимо от установок регистров управления портом.
Если используется синхронный режим работы (в USORT), переопределяется также функционирование вывода XCK (XCKn).
0
wypuk
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
25.06.2013, 08:24 4
В мультипроцессорном режиме работы при установленном бите "MPCM=1" и если в принимаемой посылке 9й бит TХB8=0 посылка игнорируется аппаратно или это нужно определять программно?
0
25.06.2013, 08:24
Johmmy0007
1 / 1 / 0
Регистрация: 30.08.2011
Сообщений: 9,944
25.06.2013, 11:09 5
бит специально придуман для "аппаратности", чтоб не отвлекать мк, если это не адрес. иначе в нём смысла б не было
0
wypuk
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
25.06.2013, 11:46 6
Пытаюсь отладить работу UART, а с этим симулятором вечно какие-то косяки... Почему-то не получается задать значение регистра данных UDR (когда пробую выставить значение принимаемых данных). Просто не ставятся биты в окне I/O и все. Может он не понимает куда я записываю данные, ведь там регистр UDR и для приема и для передачи. Как это сделать? Когда ставлю флаг прерывания RXC, то при выходе из этого прерывания флаг не сбрасывается, а вызывается прерывание еще раз и только после второго раза флаг сбрасывается???
0
domis
0 / 0 / 0
Регистрация: 04.09.2012
Сообщений: 82
25.06.2013, 13:42 7
Студия 6.0 вообще не смог вручную что-либо записать в UDR в симуляторе.
0
wypuk
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
25.06.2013, 22:57 8
Косяк оказывается был в том, что я выбрал AVR symulator 2 при создании проекта!!! Что-то с ним не так походу.
Когда поменял в настройках на AVR symulator, все стало нормально симулироваться!!!
0
wypuk
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
02.07.2013, 23:18 9
Подскажите почему так происходит? Чисто случайно заметил в симуляторе:
когда записываю в регистр 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 в радиолюбительской практике". Насколько это возможно изучал даташит. Ткните носом если знаете где об этом говорится!
Например про Atmego32 я читал что там эти регистры (UCSRC и UBRRH) как-бы общие и как с ними нужно правильно работать. А вот про tiny2313 не знал. Довольно долго ломал себе голову - где же искать ошибку!
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
02.07.2013, 23:36 10
Если у вас tiny2313, надо читать Errata.
Если у вас tiny2313А, ошибки исправлены, это опять же описано в Errata.
И симулятор не котируется, если бы в железе.
0
wypuk
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
02.07.2013, 23:40 11
Цитата Сообщение от omokost
Если у вас tiny2313, надо читать Errata.
Если у вас tiny2313А, ошибки исправлены, это опять же описано в Errata.
И симулятор не котируется, если бы в железе.
Так я это заметил в симуляторе, а когда поправил и прошил, то в железе все заработало как надо!
У меня tiny2313 без А, сейчас посмотрю Errata.
0
wypuk
0 / 0 / 0
Регистрация: 23.05.2010
Сообщений: 4
02.07.2013, 23:54 12
Нет, в errata про это не написано!
0
02.07.2013, 23:54
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2013, 23:54

Attiny2313
Прочитал документацию, там 4 шим порта(вывода), но вот не понял дальше, пишут что 1 какой-то для...

ATTiny2313 + TC0
Здравствуйте. Помогите советом, есть ATTiny2313 с частотой кварца 10Мгц. По прерыванию Таймера T0...

Таймер на attiny2313
Приветствую всех. Как на 2313 рассчитать значение для записи в эти регистры, если я хочу получить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru