Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM900, работа с DEBUG
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
ap77
Никто не сталкивался с таким глюком?

Дано:
SIM900, EAT
Пример "fcm", только адаптированный для работы с портом DEBUG
Работаю через терминал (с портом DEBUG), посылаю только команды AT+CRWP=1

Реакция:
После ввода команды событие EVENT_UARTDATA для порта DEBUG возникает каждые 4 символа. Причем, команду надо подать дважды. Тогда возникает одно событие. При этом параллельно, EVENT_UARTDATA возникает для UART (получает данные с EB500) - период опроса 10 сек, получает аккуратно и без проблем.

Т.е. набираю на терминале
AT+CRWP=1<CR>

в ответ тишина, снова
AT+CRWP=1<CR>

тогда выводится так
AT+C
RWP=

соответственно, первая команда - "растворилась"

Перепробовал массу вариантов. Все остальные функции работают. На терминал не грешу, т.к. кроме этого эффекта все отрабатывает правильно. Если работаю через UART таких проблем нет. Но UART занят, хотелось бы работать с портом DEBUG, а команды различаются "через раз".
Собственно на проблему вышел, когда часть программы обработки уже написана, т.е. остальное работает нормально.

Нехорошие мысли появляются.. что DEBUG для нормальной работы вообще не пригоден, только для прошивки?
Хотя в EAT вроде контроль над ним пользователем - предусмотрен.

UPD: вложил исходник и лог
microchaos
А не будет ли проблема здесь:

ebdat9_01SendToModem( "AT+IPR=9600\r", sizeof("AT+IPR=9600\r"));

Дело в том, что sizeof("AT+IPR=9600\r") вернет 13, а не 12...
В вашем изходном тексте много подобных случаев.
CADiLO
И кстати насколько мне известно DEBUG нельзя пользовательски настроить на скорость отличную от 115200.
По крайней мере если у кого-то получилось - расскажите как.
ap77
Цитата(microchaos @ Jul 28 2011, 17:33) *
А не будет ли проблема здесь:

ebdat9_01SendToModem( "AT+IPR=9600\r", sizeof("AT+IPR=9600\r"));

Дело в том, что sizeof("AT+IPR=9600\r") вернет 13, а не 12...
В вашем исходном тексте много подобных случаев.

Да, спасибо, эту "плюху" обнаружил, но не подумал, что в этом может быть причина.
К сожалению проверить сейчас не могу, в порту выжег случайно RxD, пока пользую UART.
На второй макетке проверю обязательно.

Что касается разбивки отправляемой фразы по 4 символа, нашел в чем дело,
программа Terminal2010 имеет настройку в блоке "Transmit", типа количество символов отправляемых за раз. Значение сбилось на 4-ку. Для чего нужна настройка сразу не понял, "результат превзошел ожидания". Установил значение в 0 - все полегчало. (Это было найдено на UART)

to CADiLO
Перестроить скорость у меня тоже не получилось.

UPD:
посмотрел еще раз свой исходник, как раз в модем данные отправляются корректно:
len=flEventBuffer.eventData.uartdata_evt.length;
ebdat9_01SendToModem(flEventBuffer.eventData.uartdata_evt.data, len);

Есть только строка
ebdat9_01SendToModem( "AT+IPR=9600\r", sizeof("AT+IPR=9600\r"));
которая отрабатывает нормально.

"лишние" нули выводились при передаче в UART
ebdat9_02SendToSerialPort(CMD_PMTK300, sizeof(CMD_PMTK300));
но на модеме-то это сказаться вряд-ли может....?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.