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

 
 
> Проблема с софтовым UART на Mega8, Проблема с софтовым UART на Mega8
Ruslan Konovalov
сообщение Jul 28 2008, 22:32
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-07-07
Пользователь №: 29 364



Уважаемые форумчане.

Софтовый уарт принимает не корректно.
Передача происходит без проблем, а принимает вместо:
Пример: Должен принять 000102030405
принимает FFFFFFFFFFFFF
В чем проблема, так и не понял(может настройки пррываний ?).
Компилятор IAR. Проверял на Proteus 7.2

Или быть может у кого нибудь есть рабочий софтовый уарт.
Скорость нужна макс. 115200.
Буду признателен любой помощи.

С Уважением,
Руслан.
Прикрепленные файлы
Прикрепленный файл  soft_uart.zip ( 2.35 килобайт ) Кол-во скачиваний: 42
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bgc
сообщение Jul 28 2008, 22:35
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 313
Регистрация: 30-07-06
Из: Москва
Пользователь №: 19 188



Скорость великовата для софтового... Проверьте на 2400.
при большой загрузке процессора это предел. При малой наверное потянет 19200. Но точно не проверял.


--------------------
Окружающий мир - не иссякающий источник сюрпризов!
Go to the top of the page
 
+Quote Post
Ruslan Konovalov
сообщение Jul 28 2008, 23:27
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-07-07
Пользователь №: 29 364



Цитата(bgc @ Jul 29 2008, 01:35) *
Скорость великовата для софтового... Проверьте на 2400.
при большой загрузке процессора это предел. При малой наверное потянет 19200. Но точно не проверял.


Пробовал на 115200. Передает нормально а прием нет.
У меня есть другой софтовый уарт так он работает как раз на 19200.
Неужели 19200 предел ? Кстати прием и передача работают по очереди.
Неужели если только принимать, то не получится принять на большей чем 19200 скорости ?



А это оригинальный софтовый уарт.
Потом я его переделал под IAR(предыдущий аттачмент).
Может я где-то напартачил ?
Прикрепленные файлы
Прикрепленный файл  suart_1_.zip ( 2.13 килобайт ) Кол-во скачиваний: 55
 
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 29 2008, 13:06
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Ruslan Konovalov @ Jul 29 2008, 02:27) *
У меня есть другой софтовый уарт так он работает как раз на 19200.
Неужели если только принимать, то не получится принять на большей чем 19200 скорости ?

С кварцем 14.7456 должно тянуть 57600.

ЗЫ: А почему не используете аппаратный?

Цитата(=GM= @ Jul 29 2008, 15:42) *
Ну почему отказаться, приём по прерываниям, основная работа в фоне. Для приёма на таких скоростях лучше, конечно, чтобы других прерываний не было.

5 выборок надо делать. 115200 x 5 = 576kHz (будет всего 16Mhz / 576 = с натягом 32 такта на выборку).
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 29 2008, 13:43
Сообщение #5


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Jul 29 2008, 12:06) *
5 выборок надо делать. 115200 x 5 = 576kHz (будет всего 16Mhz / 576 = с натягом 32 такта на выборку)

5-то зачем? Ну, для 1Мбода длительность одного бита 16МЦ(тактов), вполне хватит на приём по прерыванию.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 29 2008, 14:59
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Jul 29 2008, 16:43) *
5-то зачем?

Для того чтобы соответствовать стандарту (обеспечить нормальную работу при 2% отклонении частоты приемника и 2% отклонении частоты передатчика (суммарно 4% отклонение) ).

Цитата
Ну, для 1Мбода длительность одного бита 16МЦ(тактов), вполне хватит на приём по прерыванию.

ну ну, хватит ровно на чтение из порта одной выбоки и задвигание в регистр.
Даже на анализ старт/стоп не хватит.
Работать будет так же г...но плохо как и то, что в примере автора ветки.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 29 2008, 15:55
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(defunct @ Jul 29 2008, 17:59) *
Для того чтобы соответствовать стандарту (обеспечить нормальную работу при 2% отклонении частоты приемника и 2% отклонении частоты передатчика (суммарно 4% отклонение) ).

В стандарте не прописано число выборок. Вообще нет такого понятия. Хотя, аппаратно используется обычно 5. % отклонения частоты также никак не связан с числом выборок.

Очевидно, что чем больше выборок, тем точнее восстановление сигнала (в плане помехозащищённости), но если принять за основу что сигнал идёт без помех, то число выборок не влияет ни на что (при обнаружении старта). А 3 вполне достаточно.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 29 2008, 16:10
Сообщение #8


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(SasaVitebsk @ Jul 29 2008, 18:55) *
В стандарте не прописано число выборок. Вообще нет такого понятия. Хотя, аппаратно используется обычно 5. % отклонения частоты также никак не связаны с числом выборок.

Связаны если выборками отлавливать момент смены сигнала.
И связаны ровно настолько, насколько интервалов разбивается один бит этими выборками.
при пяти выборках получим сл. картину (каждая выборка покрывает 20% интервала одного бита):

[1][2][3][4][5]

Если в [1] словили смену сигнала, и начали читать данные в момент [3], то у нас есть запас 40% отклонения интервала в обе стороны. И если смены сигнала более за кадр не произойдет (напр передается 0xFF или 0x00), то к приему последнего "стоп" бита сигнал может уплыть на 40% в любую сторону без риска искажения данных. Теперь что такое 40%, - это 40% / 10 бит на кадр = 4% отклонение частоты приемника от передатчика.

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

я не говорил о выборках с последующим усреднением.
Я использую несколько выборок для подсихронизации.

Например если смена сигнала произошла на выборке [1] бита i, см иллюстрацию ниже, то устойчивое состояние бита можно брать с выборки [3], затем для бита i+1 смена сигнала проиcходит на выбоке [2], значит устойчивое состояние бита нужно бать уже не с выборки [3], а с выборки [4].

Код
[----бит-i----][----бит-i+1--]....
[1][2][3][4][5][1][2][3][4][5]....
-------^-----------------^----....

_|----------------|___________ сигнал
  
--------------------------------------->t
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 29 2008, 16:29
Сообщение #9


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(defunct @ Jul 29 2008, 22:10) *
Связаны если выборками отлавливать момент смены сигнала.


В приведённом примере начало старт-бита отлавливается модулем захвата. Потом им же засекается длительность полтора бита (чтобы попасть на середину первого бита), потом восемь раз длительность одного бита (чтобы попасть на середины последующих битов). При таком подходе точность даже больше, чем при пяти выборках на бит.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Ruslan Konovalov   Проблема с софтовым UART на Mega8   Jul 28 2008, 22:32
|- - =GM=   Цитата(Ruslan Konovalov @ Jul 28 2008, 22...   Jul 29 2008, 12:32
||- - MrYuran   Цитата(=GM= @ Jul 29 2008, 16:32) для пол...   Jul 29 2008, 12:36
||- - =GM=   Цитата(MrYuran @ Jul 29 2008, 11:36) Если...   Jul 29 2008, 12:42
||- - defunct   Цитата(AHTOXA @ Jul 29 2008, 19:29) При т...   Jul 29 2008, 16:53
||- - AHTOXA   Цитата(defunct @ Jul 29 2008, 22:53) Теор...   Jul 29 2008, 18:18
||- - defunct   Цитата(AHTOXA @ Jul 29 2008, 21:18) Скоро...   Jul 29 2008, 19:03
||- - AHTOXA   Цитата(defunct @ Jul 30 2008, 01:03) Не м...   Jul 29 2008, 19:56
||- - defunct   Цитата(AHTOXA @ Jul 29 2008, 22:56) Там п...   Jul 29 2008, 20:36
||- - AHTOXA   Цитата(defunct @ Jul 30 2008, 02:36) Поче...   Jul 29 2008, 21:23
|- - =GM=   defunct ну ну, хватит ровно на чтение из порта одн...   Jul 29 2008, 16:20
- - Ruslan Konovalov   Огромное спасибо всем кто отозвался. Мне было бы д...   Jul 29 2008, 18:14
|- - =GM=   Цитата(Ruslan Konovalov @ Jul 29 2008, 17...   Jul 29 2008, 21:10
- - _Pasha   Цитата(AHTOXA @ Jul 29 2008, 19:29) Потом...   Jul 30 2008, 10:57
- - AHTOXA   Цитата(_Pasha @ Jul 30 2008, 16:57) В общ...   Jul 30 2008, 11:27


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:10
Рейтинг@Mail.ru


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