RadikX
Apr 13 2011, 05:02
Производится перевод изделия с СИМ300 на СИМ900b. К прибору подключена домофонная трубка - при поднятии начинается автоматический дозвон по определнному номеру. По идее при замыкании/размыкании микрофонных контактов модуль должен сообщить +CEXTBUT с номером события
Возникла проблема - при размыкании микрофонных выводов событие не возникает! А при замыкании все нормально: +CEXBUT: 1,1.
На SIM300 работало стабильно. Использую второй аудио канал. Подскажите: В чем может быть загвоздка?
Может модулю надо AT+CEXTHS=1 сказать? Не знаю как у sim900b но у sim900 только один аудиоканал.
RadikX
Apr 13 2011, 11:07
AT+CEXTHS=1 не помогает. По-моему это сигнализация о подключении/отключении от разъема. А у меня случай замыкания. Смена канала тоже аналогично, результат тот же. При замыкании/размыкании быстро несколько раз подряд - иногда проскакивает ответ о размыкании. Т.е в принципе оно как-то должно работать. Может кто-то все же сможет подсказать, что не так? Замеры показали, что при сопротивление динамика 1,7 кОМ.
CADiLO
Apr 13 2011, 11:54
Покажите схемку как подключаете трубку к модулю
RadikX
Apr 14 2011, 03:38
Да там схема то одно название. Все подключено напрямую, больше ничего нет.
CADiLO
Apr 14 2011, 06:19
Отключите все, возьмите резистор 1K и подключите его между MIC2P и MIC2N
Затем резистором 100 ом закоротите MIC2P на GND и отпустите.
И скажите какая была реакция +CEXTBUT при замыкании и размыкании.
RadikX
Apr 14 2011, 09:43
Попробовал как написал CADiLO, результат тот же.
Еще одна "особенность". Делаю опрос состояния кнопки при включенной реакции на события нажатия кнопки. При "снятой" и при "не снятой трубке" сообщает по запросу состояние ноль. Однако при замыкании возникает событие 1. Как объяснить с логической точки зрения такое поведение модуля?
CADiLO
Apr 14 2011, 10:14
Ну я объяснил бы очень просто.
Модулю не нужна статически замкнутая кнопка - она коротит микрофон и тогда в ней нет смысла.
И как раз для гарнитуры все работает логически правильно.
Короткое нажатие - прерывание возникло - трубка снята. Следующее короткое нажатие - отбой.
Никто ведь не предполагал что вы будете использовать это по другому.
Так что прийдется просто немного переделать алгоритм - сделать его триггерным.
Цитата(CADiLO @ Apr 14 2011, 16:14)

Ну я объяснил бы очень просто.
Модулю не нужна статически замкнутая кнопка...

А в SIM300 была нужна, да?
CADiLO
Apr 14 2011, 10:39
А кто утверждает что так как было в SIM300 - это правильно ?
Некоторые ошибки так и не исправили до самого прекращения выпуска 300х модулей.
Напомню что в SIM300D автоопределение подключения гарнитуры и автоматический переход на второй канал неправильно работало до 14 версии. Вручную все переключалось, а автоматика не работала. А когда его наконец исправили, то у многих
перестал работать первый канал, потому что схемы делали упрощенные и там где была сразу нагрузка на втором канале, то модуль туда по умолчанию и переключался. Лечилось отключением автоматики в инициализации - по умолчанию была включена.
Так что то что работало в SIM300 еще не показатель. Да и фраза в даташите логически читается как я описал.
<headset button press>
a numeric parameter which indicates whether a headset button has been pressed or not - нажималась кнопка или нет
0 not pressed
1 pressed
1 - если был нажат, но нигде не сказано что отпускание тоже индицируется.
Отпускание модулю и нафиг не надо - оно не имеет смысла.
Если нажали, модуль снял трубку, а вы продолжаете держать кнопку, то кто ж вам доктор, что вас не будет слышно.
Кто хочет - проверьте как это на других модулях работает - просто интересна логика.
Кстати нажатие кнопки при разрешенном URC +CEXTBUT даст импульс 120mS на RI
RadikX
Apr 14 2011, 11:02
Цитата
А кто утверждает что так как было в SIM300 - это правильно ?
В чем тогда вообще смысл команды AT+CEXTBUT? ? А если ВДРУГ не принял событие или нераспознал - все, получится инверсия. Трубку положили - звоним, подняли -отбой.
CADiLO
Apr 14 2011, 11:37
Еще вопрос - а в использовавшихся SIM300 какая версия прошивки была ?
Цитата(CADiLO @ Apr 14 2011, 16:39)

Так что то что работало в SIM300 еще не показатель. Да и фраза в даташите логически читается как я описал.
<headset button press>
a numeric parameter which indicates whether a headset button has been pressed or not - нажималась кнопка или нет
0 not pressed
1 pressed
1 - если был нажат, но нигде не сказано что отпускание тоже индицируется.
Ну так то, да. Но кто ж его читает?
Цитата
Отпускание модулю и нафиг не надо - оно не имеет смысла.
А вот это зря. Можно было бы длинное нажатие от короткого отличать.
CADiLO
Apr 14 2011, 12:17
Да, согласен - можно было бы и оба состояния показывать и отличать время нажатия.....
Вот только как разработчик, я бы не доверялся бы тому как это делает модуль,
а обрабатывал снятие трубки контроллером так как мне это нужно.
Заодно и модуль не стоял бы включеным все время.
Цитата(CADiLO @ Apr 14 2011, 18:17)

я бы не доверялся бы тому как это делает модуль...
"Ну вы блин даете..."©. Значит как он с GSM протоколом справляется доверяете, а как с нажатием кнопки - нет.
CADiLO
Apr 14 2011, 13:01
Это не в том смысле что нет к модулю доверия - а в смысле того что нужно писать под конкретную задачу.
В модуле написано под хендс-фри, а для домофона уже другой алгоритм.
И тут уже или подстраиваться под то что китайцы написали, или сделать как себе нужно.
RadikX
Apr 15 2011, 02:59
Спасибо большое за разъяснения. Так и сделаю. Заведу на АЦП с MIC2P. Осталось только непонятно почему все же проскакивало событие размыкания микрофонных выходов при частом размыкании/замыкании, но это видимо такая "особенность" прошивки.
bseyur
Aug 16 2012, 13:12
Похожая проблема с модулем SIM900.
Кнопка замыкает линию микрофона, подключение микрофона в точности как в мануале, но модуль никак не реагирует на нажатие. На запросы AT+CEXTBUT? неизменно отвечает +cextbut: 1,0.
Предварительно инициализирую модем AT+CEXTBUT=1, на что получаю результат OK.
Любопытно, что в состоянии покоя на микрофонном входе нет напряжения. Оно появляется только, если "снять трубку", но на нажатия кнопки все равно реакции нет.
Кто-нибудь может подсказать, SIM900 в принципе обладает возможностью следить за кнопкой на гарнитуре, или это удел других моделей?
CADiLO
Aug 16 2012, 13:43
>>> в состоянии покоя на микрофонном входе нет напряжения.
Да - микрофон запитывается только при разговоре.
Насколько я помню - гарнитура - второй канал. А он есть у SIM900B, SIM900D и SIM908.
Первый рисунок - даташит чипсета, второй кусок схемы SIM900.
5.4.4 Headset / hook switch detection
The PNX4851 includes circuitry to facilitate the asynchronous detection of an audio subsystem change
including headset insertion and removal, and hook switch depression and release. The ST-Ericsson
Wireless system software provides a framework for detecting and servicing changes in the headset
configuration and hook switch status.
For example, prior to inserting a headset connector into an audio jack, the system software must enable
the detection circuit. When a headset is connected to the system, an interrupt is asserted. The software
services the interrupt and configures the audio subsystem to transition the current configuration to a
configuration based on the headset; see Figure 17.
This same circuit is used to detect and service the hook switch. A hook switch can be implemented by
utilizing a switch to short the microphone terminals. When the terminals are shorted, an interrupt is
asserted, and an interrupt service routine is called to service the hook switch. With this feature, the
functionality of the hook switch can be configured by software and can depend on the context supporting
multiple configurations. This approach also minimizes current consumption. By shorting the microphone
terminals, the hook switch function consumes approximately 500 μA. Alternative approaches that keep
the microphone biased for long periods of time lead to excessive current consumption and can shorten
battery life.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.