реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Простой вопрос по USART на attiny2313
Alt.F4
сообщение Aug 12 2010, 19:50
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Для проектирования будущей печатки, очень нужно знать.
После инициализации USART на выходах RXD и TXD появятся какие-либо уровни или будет все чисто до загрузки в UDR?
Спасибо.
Go to the top of the page
 
+Quote Post
chief_olimp
сообщение Aug 12 2010, 19:57
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 249
Регистрация: 31-10-05
Из: Украина Нетешин
Пользователь №: 10 344



вопрос задан не в той ветке.
После инициализации на TxD будет высокий уровень
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 12 2010, 20:26
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Alt.F4 @ Aug 12 2010, 23:50) *
Для проектирования будущей печатки, очень нужно знать.
После инициализации USART на выходах RXD и TXD появятся какие-либо уровни или будет все чисто до загрузки в UDR?
Спасибо.

Какие установите , такие и будут. USART он ведь сам по себе. Дадите команду работать , подключится и наплюёт на все установки порта , отключится вернутся установки порта. Установите порт как Вам нужно.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Aug 12 2010, 20:26
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Ветка же AVR unsure.gif
Цитата
После инициализации на TxD будет высокий уровень
Спасибо большое!
Цитата
Какие установите , такие и будут. USART он ведь сам по себе. Дадите команду работать , подключится и наплюёт на все установки порта , отключится вернутся установки порта. Установите порт как Вам нужно.
А, то есть по тексту программы можно будет инициализовать?
Или просто в подпрограмму запихнуть установку TXEN RXEN, затем передачу, и снятие флагов TXEN RXEN?

Сообщение отредактировал Alt.F4 - Aug 12 2010, 20:29
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 12 2010, 20:42
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Alt.F4 @ Aug 13 2010, 00:26) *
Ветка же AVR unsure.gif
Спасибо большое!
А, то есть по тексту программы можно будет инициализовать?
Или просто в подпрограмму запихнуть установку TXEN RXEN, затем передачу, и снятие флагов TXEN RXEN?

Конечно, если Вы не включите USART - TXEN RXEN , то работаете с портом , как Вам угодно. Включили - два высоких. Единственно , подтягивающие не отключаются. Если подтянули к питанию , то всегда высокие . Кстати для входа - это полезно


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Aug 13 2010, 04:42
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



ILYAUL, огромное спасибо!
Еще хотел уточнить, 1 бод/с = 8 бит/с или 10 бит/с?
Передаю 8бит данных, битов четности нет, один стоповый бит, в асинхронном режиме.

Сообщение отредактировал Alt.F4 - Aug 13 2010, 04:43
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 13 2010, 05:29
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Alt.F4 @ Aug 13 2010, 08:42) *
ILYAUL, огромное спасибо!
Еще хотел уточнить, 1 бод/с = 8 бит/с или 10 бит/с?
Передаю 8бит данных, битов четности нет, один стоповый бит, в асинхронном режиме.

На эту тему можно долго дискутировать . Прнято считать (с азбуки Морзе) что он равен 1бит/cek.Но в модемных сетях , он может равнятся и 4 бит и 8 и 9 бит/сек.
Вообщем-то самое простое пояснение - это передача одного символа полезной информации . Т.е , если например кодируете букву А 4 битами , то 1 бод = 4бит /сек 8-ю = 8 бит /сек


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Aug 13 2010, 18:41
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



В общем долго мудрив со скоростями, пришел к выводу, что 1 бод/с = 1 бит/с
Но проблема стала в другом. Написал прогу по которой tiny2313 должен слать по порядку весь алфавит по ACSII, в HyperTerminal'е же он слал только символ "А", хотя AVR Studio эмулировал все верно. Решил перепроверить отправляя обратно, что получил. И опять, tiny2313 либо отвечает символом "А", либо вообще молчит (в зависимости, что слать). Куда копать?
Цитата
; Подпрограммы
USART_transmit:
sbis UCSRA,UDRE ;ждем пока UDR освободится
rjmp USART_transmit ;
out UDR,temp ;отправляем
ret ;возврат из процедуры отправки

USART_receive:
sbis USR,RXC ;ждем приема символа
rjmp USART_receive ;
in temp,UDR ;читаем
ret ;возврат из процедуры приема

; Основное тело программы
Start:
rcall USART_receive ; принимаем символ
rcall USART_transmit ; отправляем этот символ
rjmp Start


Сообщение отредактировал Alt.F4 - Aug 13 2010, 18:43
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Aug 13 2010, 21:05
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Немного покапавшись, вышел на скорость 4800бит/с. Все символы возвращаются. Почему 4800???
Загрузил первую прогу, терминал подвисает на этой скорости, на 9600-абракадабра, на 57600 - символ "А"
Значит дело в скорости. Чему равен 1 бод/с?
Go to the top of the page
 
+Quote Post
vvs157
сообщение Aug 13 2010, 21:27
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(Alt.F4 @ Aug 14 2010, 01:05) *
Чему равен 1 бод/с?
В случае RS232 всегда 1 бод/сек = 1 бит/сек. Ваша проблема в том, что вы выставили несколько неверную скорость порта. Чем выше скорость, тем меньше диапазон допустимых отклонений от номинала
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Aug 14 2010, 06:29
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Почему же он не работает на 57600 а только на 4800? sad.gif
Прикрепленный файл  txd_rxd.txt ( 2.19 килобайт ) Кол-во скачиваний: 184


Сообщение отредактировал Alt.F4 - Aug 14 2010, 07:02
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Aug 14 2010, 07:20
Сообщение #12





Guests






Цитата
Цитата(Alt.F4 @ Aug 13 2010, 08:42)
Еще хотел уточнить, 1 бод/с = 8 бит/с или 10 бит/с?
Передаю 8 бит данных, битов четности нет, один стоповый бит, в асинхронном режиме

Здесь есть некоторая неточность. Ошибка - в обозначении бод/сек.
Бод - это скорость передачи информации, измеряемая в символах в секунду.
Если 1 символ = 1 бит, то 1 бод = 1 бит/сек.. В случае же какой-либо "хитрой"
модуляции, 1 символ может передавать несколько бит. Тогда 1 бод больше 1 бит/сек.
В случае RS232 всегда 1 бод = 1 бит/сек. 9600 бод = 9600 бит/сек .
Но это скорость, с учетом всех бит, передаваемых по каналу: старт, стоп, четность.
Например, если на скорости обмена 9600, используется формат передачи:
длина слова - 8 бит; 1 старт-бит; 1 стоп-бит; четность не используется;
то для передачи одного байта полезной информации (8 бит), потребуется
передача 10 бит по каналу связи. "Полезная скорость", в этом случае,
составит 960 байт в секунду или 7680 бит/сек (максимальная без учета пауз).
Если будете использовать другой формат, например, с двумя стоп-битами
и битом четности. То на скорости 9600, передача одного байта потребует уже
передачи 12-ти бит по каналу. Скорость передачи "полезной" информации
в этом случае упадет до 800 байт в секунду или 6400 бит в секунду.
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Aug 14 2010, 07:52
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



@Ark, спасибо, понятно. Не понятно почему на заданной скорости не работает.
Скоро сойду с ума wacko.gif

Сообщение отредактировал Alt.F4 - Aug 14 2010, 07:53
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Aug 14 2010, 07:56
Сообщение #14





Guests






Цитата
Почему же он не работает на 57600 а только на 4800?

Какая тактовая частота процессора? Аппаратный модуль UART обычно получает рабочую
частоту для обмена ее делением. Допустимая ошибка по частоте для RS232 - не более 1-2%
(примерно). Нужно для каждой конкретной скорости вычислять ошибку. Иногда бывает,
что на большей скорости ошибка меньше... Смотрите документацию на ваш МК - там обычно
указываются допустимые скорости для UART, в зависимости от тактовой частоты процессора.
...
Еще, конечно, зависит от самого тактового генератора. Его возможная ошибка по частоте
будет влиять обязательно. На одной и той же частоте - от кварца может все работать,
а от внутреннего RC - может и не работать. Все нужно считать. Или смотреть готовые таблицы
в документации, если они там, конечно, есть...
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение Aug 14 2010, 08:24
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Кварц 4,608Мгц, в даташите по tiny2313 такого варианта нет, но нашел таблицы, где такой есть. Да и по формуле все сходится.
Перепаивал кварц, думал, может он частоту плохо держит - не помогло.
Фьюзы установлены на внешний кварц (CKSEL3..0 - 1101, SUT1..0 - 10, SKDIV8 - 0).
з.ы. заметил глюк в avr_studio, как только происходит запись 0х06 в регистр UCSRC, сразу же это число записывается в UBBRH. Пробовал оставлять как есть, пробовал UBRR прописывать в самом конце - связь не удалось наладить.

Сообщение отредактировал Alt.F4 - Aug 14 2010, 08:39
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 18:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01506 секунд с 7
ELECTRONIX ©2004-2016