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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> SIM900: максимально допустимая погрешность к скорости передачи USART
ArtemKAD
сообщение May 29 2012, 12:07
Сообщение #46


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
Поскольку синхронизация запускается каждое слово, то для "нормального" режима ( 16х ), максимально допустимый разбег частот будет: 1/( WORD_LNGTH * Fsmpl ) = 1/(10*16) = 1/160 = 0.00625, оно же 0,625%. Т.е. с момента синхронизации, UART-приемник сделает 160 сэмплирований и если последний сэмпл успевает "вписаться", то все будет стабильно работать.

Не совсем верно. Для того, что-бы работало стабильно достаточно что-бы три средних семпла последнего бита по мажоритарке(2 из 3) вписались в последний бит. Т.е. допустим уход на 7 (8 минус один на ошибку синхронизации) семплов на 160. Или 7/160=0,04375.

Цитата
Если взять частоту сэмплирования 8х, то допустимая погрешность "расслабится" в два раза: 1/(10*8) = 1/80 = 0.0125, оно же 1,25%

На самом деле не расслабится - там 3(4 минус 1 на синхронизацию 1-го фронта) из 80. Или +/-3,75%.
Go to the top of the page
 
+Quote Post
Tahoe
сообщение May 29 2012, 12:36
Сообщение #47


Местный
***

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



Цитата(=F8= @ May 29 2012, 12:09) *
А кто вам сказал, что все выбрки должны быть правильными? sm.gif

А где у меня сказано, про все выборки?


Цитата(=F8= @ May 29 2012, 12:09) *
Вообще-то допустимая прогрешность сильно зависит от логики работы UARTа.

"Сильно зависит от логики работы" - бесполезная фраза, общие слова. Логика работы UART и так известна. Существуют "особенности реализации", но и там особо не разгуляться.

Цитата(ArtemKAD @ May 29 2012, 16:07) *
Для того, что-бы работало стабильно достаточно что-бы три средних семпла последнего бита по мажоритарке(2 из 3) вписались в последний бит.

А вот это как раз и есть одна из "особенностей реализации". Какой-то UART и по трем средним сэмплам сработает, а какой-то FrameError выставит.

В любом случае, я лишь описал то, чего автор никак не мог добиться - логика работы и способ подсчета погрешности.


Цитата(ArtemKAD @ May 29 2012, 16:07) *
На самом деле не расслабится - там 3(4 минус 1 на синхронизацию 1-го фронта) из 80. Или +/-3,75%.

"Там", это где? Или речь за абсолютно любую реализацию? Если последнее, то это не верно. Я, например, разные реализации встречал.

А проверить мое утверждение про AVR, про разницу в толерантности при 16х и при 8х, может любой. Это не сложно и не долго.
Go to the top of the page
 
+Quote Post
=F8=
сообщение May 29 2012, 13:12
Сообщение #48


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Цитата(Tahoe @ May 29 2012, 15:36) *
А где у меня сказано, про все выборки?

В Ваших "расчетах".

Цитата(Tahoe @ May 29 2012, 15:36) *
"Сильно зависит от логики работы" - бесполезная фраза, общие слова. Логика работы UART и так известна. Существуют "особенности реализации", но и там особо не разгуляться.

Угу, и без знания этих особенностей ваши "расчеты" гроша ломаного не стоят.
Go to the top of the page
 
+Quote Post
Tahoe
сообщение May 29 2012, 13:31
Сообщение #49


Местный
***

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



Цитата(=F8= @ May 29 2012, 17:12) *
В Ваших "расчетах".

В каком именно месте? Можно, наконец, от общих слов ( очень дурная манера, кстати ), к конкретике?


Цитата(=F8= @ May 29 2012, 17:12) *
Угу, и без знания этих особенностей ваши "расчеты" гроша ломаного не стоят.
Мои расчеты не отменяют необходимости думать ( там даже по-русски написано, что они даны для примера ). Если все-таки немного поработать головой, то станет понятно, что расчеты вполне достаточны. А особенности реализации UART, будут иметь значение _исключительно_ при сэмплировании последнего, 10-го символа.

Цитата(=F8= @ May 29 2012, 17:12) *
ваши "расчеты" гроша ломаного не стоят.

Да, забыл, самое главное. Если, опять же, включить голову, то станет понятно, что мои расчеты описыват худший случай. С их помощью получаем минимально допустимую погрешность, не зависящую от реализации конкретного UART. Потому что это расчеты, с точностью до сэмпла и на логику работы им просто плевать.

А вот зная логику работы, можно ещё расслабить тебования к погрешности. Но это уже другая песня.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение May 29 2012, 14:17
Сообщение #50


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
Какой-то UART и по трем средним сэмплам сработает, а какой-то FrameError выставит.


Не выставит. Таких UART-ов которые требуют корректности всех 16 семплов для последнего бита сейчас нет. Бывает только в другую сторону - некоторым достаточно единственной точки в центре бита.
Go to the top of the page
 
+Quote Post
Tahoe
сообщение May 29 2012, 14:51
Сообщение #51


Местный
***

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



Цитата(ArtemKAD @ May 29 2012, 18:17) *
Таких UART-ов которые требуют корректности всех 16 семплов для последнего бита сейчас нет.
Спешу огорчить - есть. Точнее есть такие программеры, которые делают на ПЛИС мосты на несколько UART. wink.gif
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение May 29 2012, 14:54
Сообщение #52


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
Цитата
А кто вам сказал, что все выбрки должны быть правильными?
В каком именно месте? Можно, наконец, от общих слов ( очень дурная манера, кстати ), к конкретике?

Вот тут:
Цитата
то для "нормального" режима ( 16х ), максимально допустимый разбег частот будет: 1/( WORD_LNGTH * Fsmpl ) = 1/(10*16) = 1/160 = 0.00625, оно же 0,625%. Т.е. с момента синхронизации, UART-приемник сделает 160 сэмплирований и если последний сэмпл успевает "вписаться", то все будет стабильно работать.


Ваш расчет исходит из того, что правильными должны оставаться все 160 сэмплов.

Цитата
Точнее есть такие программеры, которые делают на ПЛИС мосты на несколько UART

Там скорее сделают вариант с одной точкой - по фронту смещенного тактового фиксируют в сдвиговый регистр точечное значение по центру каждого бита.
Go to the top of the page
 
+Quote Post
Tahoe
сообщение May 29 2012, 15:11
Сообщение #53


Местный
***

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



Цитата(ArtemKAD @ May 29 2012, 18:54) *
Ваш расчет исходит из того, что правильными должны оставаться все 160 сэмплов.
Разумеется. Когда что-то объясняют, идут от общего к частному. Так что в данном случае, даже не могу себя упрекнуть за не верную формулировку. Но если уж читать, то читать до конца:
Цитата(Tahoe @ May 28 2012, 19:43) *
В реальности, если выход сэмплера работает на мажоритарную схему, можно даже считать не 160 сэмплирований, а, например, 158 или 153. Т.е. что бы стоп-бит ещё определялся как стоп-бит.


Ребят, вы три страницы мусолили, но не могли толком описать, как расчитывать погрешность. А теперь пытаетесь того, кто все подробно разжевал, на чем-то подловить? Как-то это глупо и не продуктивно.


Цитата(ArtemKAD @ May 29 2012, 18:54) *
Там скорее сделают вариант с одной точкой

Я говорю о примере из жизни. Причем формально, программер написавший такой код был прав.

А если хочется "разминки для ума", то предлагаю подумать, как реализовано сэмплирование и как считать погрешность, в случае, когда STOP_BIT=1,5 wink.gif
Go to the top of the page
 
+Quote Post
=F8=
сообщение May 29 2012, 18:39
Сообщение #54


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Цитата(Tahoe @ May 29 2012, 18:11) *
Ребят, вы три страницы мусолили, но не могли толком описать, как расчитывать погрешность. А теперь пытаетесь того, кто все подробно разжевал, на чем-то подловить? Как-то это глупо и не продуктивно.


lol.gif Скажите Вы мегатолстый троль или у Вас ЧСВ over 9000?
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение May 29 2012, 20:33
Сообщение #55


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
Ребят, вы три страницы мусолили, но не могли толком описать, как расчитывать погрешность.

По моему я вполне объяснил. И было это объяснение на предыдущей странице:
http://electronix.ru/forum/index.php?s=&am...st&p=985845
Цитата
Каждый принимаемый байт начинает прием с фронта старт-бита (точность определения фронта - 1/8 или 1/16 бита - точнее сложно сказать т.к. обычно есть оба варианта, а уже какой использовать решает разработчик в зависимости от частот) и задача точности - центр последнего бита не должен уйти более чем пол бита в любую сторону. С учетом того, что каждый байт это 10 бит (старт, стоп, 8 бит передачи) получаем разницу частот не больше чем +/- 5% (1/20). Тут конечно не совсем точно - надо учесть точность фиксации фронта - это еще 1/80 или 1/160 - и в принципе для оценки достаточно...
Итого - разница частот для гарантированного приема во всем диапазоне температур и во всем диапазоне питающих процессор напряжений не должна уходить более чем на 3,75% от частоты нулевой ошибки UART.

Цитата
Но если уж читать, то читать до конца

До конца там можно не читать. Сэмплер на мажоритарку или нет вообще не суть важно.
Цитата
Я говорю о примере из жизни. Причем формально, программер написавший такой код был прав.

Формально программер был чайником который полез в область в которой он чуть больше нуля. Прежде чем писать код для UART-а он был обязан взять учебник по основам метрологии и понять что такой "допуск" и зачем он нужен.
Go to the top of the page
 
+Quote Post
Tahoe
сообщение May 29 2012, 22:07
Сообщение #56


Местный
***

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



Цитата(ArtemKAD @ May 30 2012, 00:33) *
По моему я вполне объяснил. И было это объяснение на предыдущей странице:http://electronix.ru/forum/index.php?s=&am...st&p=985845

Это, кстати, был один из немногих толковых постов в этой теме. Проблема в том, что это лишь пол-дела. SIM900 соединяется с внешним UART, а не с таким же SIM900. Соотв., методика расчета погрешности нужна общая, а не заточеная под один конец приема.

Цитата(ArtemKAD @ May 30 2012, 00:33) *
Формально программер был чайником который полез в область в которой он чуть больше нуля. Прежде чем писать код для UART-а он был обязан взять учебник по основам метрологии и понять что такой "допуск" и зачем он нужен.
А причем тут учебник по метрологии и допуски? Его дело было соблюсти стандарты/рекомендации и в этом к нему никаких претензий нет. Оптимально он это сделал или нет - дело десятое. Пусть лучше не оптимально, но работает, чем криво посчитать погрешность и получить супер-оптимизированный продукт, работающий только с частью оборудования.
Go to the top of the page
 
+Quote Post
CADiLO
сообщение May 30 2012, 06:04
Сообщение #57


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Многие применяют простое решение - это ставить на контроллер кварц 18.432мгц вместо 20мгц.
Падение производительности минимальное, а частота UART всегда точная.


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение May 30 2012, 08:25
Сообщение #58


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

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
Проблема в том, что это лишь пол-дела. SIM900 соединяется с внешним UART, а не с таким же SIM900. Соотв., методика расчета погрешности нужна общая, а не заточеная под один конец приема.

А нам и нужен один конец - тот который мы делаем. Т.к. если бы у нас была связь двух SIM900 проблема их связи была бы проблемой разработчиков SIM900.
Цитата
Его дело было соблюсти стандарты/рекомендации и в этом к нему никаких претензий нет.

В тех самых стандартах/рекомендациях сказано, что значение бита соответствует значению уровня в центре временного промежутка соответствующего этому биту. Не уровень на всем промежутке, а только в его центре.
Go to the top of the page
 
+Quote Post
Tahoe
сообщение May 30 2012, 14:37
Сообщение #59


Местный
***

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



Цитата(ArtemKAD @ May 30 2012, 12:25) *
А нам и нужен один конец - тот который мы делаем.

Я оценил шутку. "ATZ" модуль распознает, а вот мы "OK" нет. Пол-UARTа...
Go to the top of the page
 
+Quote Post

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

 


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


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