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

 
 
> autobauding и DTR -- не работает!
Frolov Kirill
сообщение Sep 13 2011, 10:30
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 212
Регистрация: 2-02-11
Пользователь №: 62 643




В этом документе (http://www.mt-system.ru/documents/sim900 at compare to sim300.pdf) указывается, на странице 6, что импульс DTR включает т.н. autobauding, в случае, если изначально скорость была насильно задана через AT+IPR. Импульс лог. 1 не менее 2-х секунд мол включает.

Ничего не включает. И если для SIM300 можно было установить скорость, но он её автоматически не запоминал, то с SIM900 возникает дурная история. Когда модуль запоминает скорость и после включения питания сразу работает только на ней. Функция autobauding более в принципе не работает.

Нехорошая ситуация, если стоит задача обновления ПО, при этом в старой версии используется другая скорость. Лучше было бы иметь всегда включенный autobauding после включения питания (не запоминать настройку AT+IPR, как и SIM300).


Забыл сказать. Не отключать autobauding тоже дурная идея, ибо глючит. На длинных последовательностях передаваемых данных собственно данные искажаются. Прошивка B08, ST.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
CADiLO
сообщение Sep 13 2011, 10:48
Сообщение #2


Гуру
******

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



Я бы посоветовал еще раз ВНИМАТЕЛЬНО прочитать.

AT+IPR=0 setting to auto-bauding will take effect after module resets. If user wants to change DTE baud rate during module is running, i.e. from 57600 to 4800, DTR shall be used to urge auto-bauding progress. DTR shall be pulled up to invalid state at least 2 seconds by DTE and then pulled down to valid state. The step will urge auto-bauding progress and DCE will synchronize its baud rate after it receives data from the serial port.

При помощи DTR можно изменить скорость только если IPR=0 - то есть автоопределение.

Тогда, если модуль изначально допустим засинхронизировался на 19200 а надо перейти на 9600, мы тянем на 2 сек. DTR и модуль опять начнет процесс синхронизации автоскорости.

Если же вы установите фиксированную скорость, то дергание DTR будет как мертвому припарка.

А потому вывод - все работает как и написано.

Кроме того по нашей просьбе после 06 версии переделан алгоритм работы DTR.
Окончательно это описано в SIM900_Serial Port_Application Note_V1.02.pdf
Обратите внимание что DTE и DCE это не выводы, а устройства.


NOTE: The DTR signal must pulled to low level voltage when DTE is sending data to module. If DTR does not connect with DTE, DTR must be connected to GND via a 10K resistor.

6.3 DTR
Module will automatically go into SLEEP mode (set AT+CSCLK=1) if DTR is set to high level and there is no on air and no hardware interrupt (such as GPIO interrupt or data on serial port). In this case, the current consumption of module will reduce to the minimal level. During SLEEP mode, the module can still receive paging message and SMS from the system normally. If DTR Pin is pulled down to a low level, this signal will wake up module from SLEEP mode. The serial port will be active after DTR changes to low level about 50ms. DTR must be held low during the call.
The AT command ”AT&D” can be used to set DTR function mode.
When it is set to ”AT&D0”, TA ignores status on DTR.
When it is set to ”AT&D1”, ON (low)->OFF (high) on DTR: module will be changed to command mode when the connected call is remained..
When it is set to ”AT&D2”, ON->OFF on DTR: call is disconnected, module is changed to Command mode. During state DTR = OFF, it is auto-answer off.
TCP/IP applications only support AT&D1 and AT&D0. In TCP/IP application (for more detail, please refer to TCP/IP application NOTE), DTR line of serial port can also be used to switch from data mode to command mode. To use this method, AT&D1 should be set firstly. Pull DTR line to ground for at least 1 second and then pull up, the module will switch from data mode to command mode and OK will be returned which indicates the module is in command mode.



>>>>Не отключать autobauding тоже дурная идея, ибо глючит. На длинных последовательностях передаваемых данных собственно данные искажаются.

Бывает только если скорость обмена находится на грани точности. Например наблюдалось на AVR с кварцем 20 мегагерц.
Тогда точность частоты составляет почти 2% что уже не допустимо. При переходе на "модемный кварц" 18.432 мегагерца,
рассинхронизация составляет менее 0.5% и ошибок не бывает.
Как пример могу привести что у меня при точности 0.5% автоопределение стабильно работает даже на 115200, что уже не есть гарантированым согласно документации.
И кроме того сам производитель настоятельно рекомендует работать на фиксированой скорости.

Думаю что стоит один раз продумать алгоритм инициализации - например как раньше в обычных модемах было - с перебором скоростей. Это потом убережет от любых непоняток и гарантировано позволит определять нужную скорость.


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
Frolov Kirill
сообщение Sep 13 2011, 11:26
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 212
Регистрация: 2-02-11
Пользователь №: 62 643



Цитата(CADiLO @ Sep 13 2011, 14:48) *
При помощи DTR можно изменить скорость только если IPR=0 - то есть автоопределение.


Это действительно так (проверено вручную). Но из документации как-то неочевидно.

Независимо от того, есть необъяснимое явление, когда при +IPR=0 и +CSCLK=2 искажаются данные. Причём, если на 9600 иногда заметно, то на 38400 -- нет. Такое впечатление, что модем "засыпает" в промежутках между байтами, если контроллер не успевает их один за одним выдавать. Какая связь с IPR=0 -- непонятно тогда. С +IPR=9600 проблем не замечено.


Кварц -- 7.94888 (есть PLL x4). Даёт 1.5% ошибку для скорости 115200. 0.5% для 38400. 0.001% для 9600.



Работать на фиксированной скорости в пределах одной версии -- можно. Но растёт обмен информации и скорость приходится увеличивать. При этом есть приборы с "запомненной" старой скоростью, что и вызывает трудности. Ставить же сразу 115200 неудобно по разным соображениям (контроллер без FIFO может и не успеть...)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 4th August 2025 - 19:39
Рейтинг@Mail.ru


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