Цитата(skaarj @ Sep 16 2008, 00:32)

а при подаче ат команды какой размер данных указывали?
Тот, который я называю "длиной пакета" в исходном посте. То есть переменный, собственно о нем и речь.
Дальнейшие эксперименты показали, что при скорости порта 19200 эффект не наблюдается вообще, линия CTS не переходит в неактивное состояние даже кратковременно. Начиная с 28800 как будто бы меняется логика работы модема:
1) примерно через 100 мс после
начала посылки CIPSEND модем бросает CTS
далее одно из двух:
2a) через время, на вид пропорциональное размеру посылки, CTS возвращается в активное состояние.
2b) CTS остается неактивным и модем перестает принимать команды до отключения питания.
Причем вероятность зависания зависит от длины посылки и скорости порта: я бы сказал, от заполнения передачей данных интервала в ~100мс до сброса CTS. Так, на 28800 при CIPSEND=256 зависнуть не удалось, а при 272 виснет в 3 случаях из 10 (дальше больше). На 38400, соответственно, критический размер около 320-336 байт. На 115200 - порядка 700-750.
Бросается в глаза, что модем переводит CTS в неактивное состояние
не во время приема данных (как было бы логично по смыслу CTS), а - с точки зрения UART - на ровном месте. Команда-то уже принята, контроллер сидит себе и ждет ответа SEND OK...
На осциллографе это выглядит примерно так:
1. Не зависло
Нажмите для просмотра прикрепленного файла2. Зависло
Нажмите для просмотра прикрепленного файлаА вот на 19200 хоть все 1024 байта посылай - эффект отсутствует.
Но, как я писал, связь нечеткая: бывает, что конец передачи от м/к в модем ближе к моменту опускания CTS, и не виснет, а в другой раз дальше - и виснет. Как будто бы команда CIPSEND вместе с указанным количеством данных должна уложиться в "случайный" интервал времени, мат. ожидание которого немного меньше 100 мс.
Цитата(edo @ Sep 15 2008, 20:00)

первый вопрос - с питанием всё нормально?
По питанию стоит персональный LM2576. Коллега специально бился, чтобы шум при передаче не выходил за паспортные границы.
Какие-то помехи, конечно, есть но см. ответ skaarj - питанием трудно объяснить отличия в поведении при смене скорости порта и размера пакета. Просмотр VBAT вокруг момента зависания никаких красивых синхронных просадок не выявил...