|
|
  |
Вопрос по UART по стабильности от внутреннего генера |
|
|
|
Jun 4 2009, 15:42
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(@Ark @ Jun 4 2009, 19:37)  Ничего не мешает, можно и так. Есть только одна "засада" - для некоторых экземпляров МК может не хватить диапазона подстройки. Не выбраковывать же их из-за этого... Программная калибровка предпочтительнее по этой причине. Может не хватить дискретности перестройки генератора для относительно высоких скоростей обмена. Диапазона перестройки хватает с избытком. Касательно скорости - сомневаюсь, что софтовый УАРТ позволит достичь в одинаковых условиях тех же скоростей, что и хардовый. Цитата И еще по тому, что "попутно", как-бы само-собой, реализуется автоопределение скорости обмена. IHMO, весьма полезно иметь некоторый выбор скоростей, а не одну.  И здесь Вас опередили  - в LIN'е оно тоже предусмотрено.
|
|
|
|
Guest_@Ark_*
|
Jun 4 2009, 16:27
|
Guests

|
<<... Диапазона перестройки хватает с избытком>> В большинстве случаев - да. В начале тоже занимался подстройкой генераторов, пока не стали изредка попадаться не настраиваемые экземпляры. Мне их жалко выкидывать. << сомневаюсь, что софтовый УАРТ позволит достичь в одинаковых условиях тех же скоростей, что и хардовый>> Практически не уступает. По крайней мере - для скоростей до 115200. <<...в LIN'е оно тоже предусмотрено>> Ну и что? Почему обязательно LIN? По моему, протокол выбирается по задаче.
|
|
|
|
|
Jun 4 2009, 17:37
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(@Ark @ Jun 4 2009, 20:27)  << сомневаюсь, что софтовый УАРТ позволит достичь в одинаковых условиях тех же скоростей, что и хардовый>> Практически не уступает. По крайней мере - для скоростей до 115200. Т.е., н-р, АВР@8 МГц INTRC сможет софтово уартить на 115200 и делать еще что-нибудь общественно-полезное? Снимаю шляпу. Цитата <<...в LIN'е оно тоже предусмотрено>> Ну и что? Почему обязательно LIN? По моему, протокол выбирается по задаче. Безусловно. Но LIN - это простейшая надстройка над УАРТом, решающая обсуждаемые задачи стандартным образом. (по секрету - он мне не нравится своей избыточной недостаточностью. но стандартен, зараза)
|
|
|
|
Guest_@Ark_*
|
Jun 4 2009, 18:17
|
Guests

|
<<Т.е., н-р, АВР@8 МГц INTRC сможет софтово уартить на 115200 и делать еще что-нибудь общественно-полезное? Снимаю шляпу.>> Оденьте шляпу.  Это на 9600 можно параллельно общественно-полезной деятельностью заниматься. На 115200 - с этим уже туго. Только последовательно...
|
|
|
|
|
Jun 4 2009, 19:54
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(Rst7 @ Jun 4 2009, 22:55)  Да ладно, если пару регистров занять, то вполне можно на 115200 с загрузкой процессора порядка 25 процентов радоваться софтовому UART'у, т.е. 3/4 времени заниматься общественнополезными делами. Но делать такое имеет смысл только в том случае, если уж очень надо. А если в софтовом UART-е задействовать таймеры с входами захвата, то загрузка процессора уменьшится ещё как минимум в 2 раза. И прерывания можно будет запрещать на дольшее время. И вообще, приём можно будет сделать не по прерыванию. Только нужно ли это? Чем LIN то плох?
|
|
|
|
Guest_@Ark_*
|
Jun 4 2009, 21:06
|
Guests

|
Ну причем тут LIN?! В этой теме речь о том, как обеспечить надежную работу UART в указанных условиях. А какую шину использовать для передачи и какой протокол выбрать - это уже совсем другая задача. Связывать эти две проблемы в одну - совершенно не обязательно. На мой взгляд - лучше, как раз, НЕ связывать, и иметь определенную свободу дальнейшего выбора и протокола, и физической шины.
|
|
|
|
Guest_@Ark_*
|
Jun 5 2009, 05:00
|
Guests

|
to attab: Вы, видимо, не совсем поняли, что предлагается. Калибруется программная процедура - по приему известных значений байт. Поэтому, ни термометр, ни калибровочные значения для генератора - не требуются. Диапазон такой "подстройки" по частоте составляет "разы" от предполагаемого номинального значения, как вверх, так и вниз. По сему, такая калибровка - заодно выполняет функцию автоопределения скорости обмена. На практике все это давно и многократно проверено...
|
|
|
|
|
Jun 5 2009, 05:15
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(rx3apf @ Jun 4 2009, 17:44)  Ну уж 8-16 MHz вряд ли можно отнести к высокочастотным. И уж такой ширпотреб проблем обычно не вызывает, хоть какие ставь. Это так кажется, пока не столкнёшься. Пусть даже один из сотни попадётся, всё равно очень неприятно. Пользователя ведь не волнует, что ему вот с кварцем не повезло. Причём проблемы могут возникнуть через полгода-год успешной эксплуатации. А некоторые семейства атмелов (например, 8253) имеют особую предрасположенность к таким дефектам.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 5 2009, 05:39
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(MrYuran @ Jun 5 2009, 09:15)  Это так кажется, пока не столкнёшься. Надо ли это понимать так, что дефектных часовых кварцев в природе не бывает ? Цитата(galjoen @ Jun 4 2009, 23:54)  Чем LIN то плох? А что в нем хорошего ? На малые расстояния, с малой скоростью - ну, может быть и ничего. А если большая емкость, переключение линии несимметричное и время перехода 1->0 и 0->1 существенно различаются ? И аппаратный UART задействовать тоже не особо просто, даже если опорный генератор процессора допускает "электронную" подстройку. А если не допускает, то типично дискретность перестройки через опорный делитель слишком грубая. А синхронные протоколы - просто и надежно.
|
|
|
|
|
Jun 5 2009, 09:06
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(rx3apf @ Jun 5 2009, 09:39)  А что в нем хорошего ? На малые расстояния, с малой скоростью - ну, может быть и ничего. А если большая емкость, переключение линии несимметричное и время перехода 1->0 и 0->1 существенно различаются ? И аппаратный UART задействовать тоже не особо просто, даже если опорный генератор процессора допускает "электронную" подстройку. А если не допускает, то типично дискретность перестройки через опорный делитель слишком грубая. А синхронные протоколы - просто и надежно. Я имел ввиду использование автоподстройки частоты как в протоколе LIN в комплекте с СОФТОВЫМ UART. В таком случае разница переднего и заднего фронтов и соотв-но время перехода 1->0 и 0->1 запросто компенсируются програмными настройками по результатам приёма известного байта. А ещё лучше сделать софтовый CAN. Для скорости 5000 бод это вполне реально. В таком случае можно использовать драйвера линии LIN. Т.е. 3-х жильный провод - земля, линия связи и питание 12 вольт. А синхронные протоколы потребуют и проводов и драйверов линии поболее. А цена драйвера линии (хоть RS485, хоть CAN, хоть LIN) на уровне младших AVR (ATmega48 например).
|
|
|
|
Guest_@Ark_*
|
Jun 5 2009, 09:58
|
Guests

|
Цитата(galjoen): "... синхронные протоколы потребуют и проводов и драйверов линии поболее..."
Это не так. Самосинхронизирующиеся способы кодирования - специальных драйверов и дополнительных проводов не требуют... Ув. rx3apf, на самом деле, прав. Применительно к условиям задачи, заданной в этой теме, то же "манчестер" был бы на много предпочтительнее. Но вопрос был поставлен об использовании и обеспечении стабильности UART...
|
|
|
|
|
Jun 5 2009, 10:26
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(@Ark @ Jun 5 2009, 13:58)  Цитата(galjoen): "... синхронные протоколы потребуют и проводов и драйверов линии поболее..."
Это не так. Самосинхронизирующиеся способы кодирования - специальных драйверов и дополнительных проводов не требуют... Ув. rx3apf, на самом деле, прав. Применительно к условиям задачи, заданной в этой теме, то же "манчестер" был бы на много предпочтительнее. Но вопрос был поставлен об использовании и обеспечении стабильности UART... Синхронные, это которые с внешней синхронизацией. А самосинхронхронизирующиеся - это другое. Все современные протоколы самосинхронизирующиеся. Поэтому у них и имеется битстаффинг - для синхронизации. USB, CAN и т.д. Да и LIN тоже, с некоторой натяжкой, можно отнести к самосинхронизирующимся. Он на базе UART. Поэтому его и рекомендуют.
|
|
|
|
Guest_@Ark_*
|
Jun 5 2009, 15:31
|
Guests

|
<<Все современные протоколы самосинхронизирующиеся. Поэтому у них и имеется битстаффинг - для синхронизации. USB, CAN и т.д. Да и LIN тоже>>
И снова не верно. НЕ все.
И стандарный UART - НЕ самосинхронизирующийся! Не зная опорной частоты невозможно достоверно принять информацию. А для самосинхронизирующегося "манчестера" - можно!
Извините, ув. galjoen , но Вы хотя бы уясните для себя разницу между физическим уровнем и протоколом...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|