Цитата(CADiLO @ Sep 13 2011, 15:26)

При выходе из спячки при CSCLK=2 потеряется первый байт.
С +CSCLK=2 история такова. Версии по B05 включительно не засыпали нормально при +CSCLK=1. А SIM300 засыпал. Сейчас версия B08 тоже засыпает при +CSCLK=1. Было поставлено +CSCLK=2. Тогда все SIM900 любых версий засыпают и даже работают нормально. Первый байт, на самом деле, никогда не теряется, потому, что логика работы осталась от того варианта, где +CSCLK=1 -- перед командой будет смена DTR с 1 на 0 -- вот он и проснётся. Первый байт не теряется. Теряется где-то в середине длинной AT-команды или при передаче длинных данных.
Цитата
Ну а то что нужны более высокие скорости.... PIC12 с софтовым обменом чудненько общается на 115200 без всяких FIFO и при этом еще и два датчика обрабатывает. Писано правда на ассемблере - но тут С и не годится если хотим по временам укладываться.
Успеет или нет зависит от двух причин:
1) от латентности обработчика прерываний. Где могут быть более высокоприоритетные прерывания (звук, например). Или не может быть нормальной системы приоритетов (PIC18). Это тот случай, когда FIFO полезен (медленный обработчик прерываний). И не надо PIC12 с ассемблерами притягивать за уши, который ничем больше не занят. 486DX40 вон не успевал, без 16550A если. Для PIC18 -- 800 тактов на байт. Он успеет, но он ничем другим больше занят не будет.
2) от скорости обработки поступающих данных. FIFO уже не поможет. Только если программный FIFO большего объёма, или снижение скорости передачи. Потому, что программа поступающие данные с такой скоростью обрабатывать не может. Тут конечно вспомнят о том, что есть RTS/CTS (которые глючат в SIM300...), XON/XOFF, GSM 07.10...
Цитата(CADiLO @ Sep 13 2011, 15:50)

SIM900B мы не поставляем и что там с прошивками не знаю. Но по остальным модулям жалоб на неудобства с сохранением IPR не было. Думаю что стоит Вам просто еще раз продумать алгоритм инициализации и переключения скорости.
Если убрать автосохранение, то это нисколько не мешает тем, кому оно нужно: сохранят в первой команде (&W в конец добавить).
Если не убирать автосохранение, то это мешает тем, кто хочет всё-же менять скорость при смене прошивки прибора. Ничто не мешает стартовать в режиме +IPR=0 и первой командой сделать +IPR=38400, например. И работать на фиксированной скорости. Но если следующая прошивка захочет +IPR=115200 -- ей ничего не помешает это сделать (после включения питания модема). А сейчас нужно все скорости подряд перебирать пока на нужную не наткнёшься -- ненужное извращение.
Более того, это автосохранение доставляет... радости. Когда модем втихую перезапускается (из-за глюков в его прошивке) и делает вид, что дальше работает. Потому, что он не всё подряд автосохраняет... Лучше бы делал вид, что завис.