Jump to content

    

ДЕЙЛ

Участник
  • Content Count

    258
  • Joined

  • Last visited

Everything posted by ДЕЙЛ


  1. Не стал развивать данную тему в разговоре о SIM900 На данный момент Bluetooth у меня работает нормально, по профилю SPP 400 Кб передаются за 5-10 минут пакетами по 256 байт. Это нормальная скорость или можно ещё ускорить? Можно работать с Bluetooth во время ожидания подтверждения с сервера об отправке TCP-пакета? (SEND OK)
  2. Мы не ищем лёгких путей. Где можно почитать про баги и исправления? Т.е. поподробнее про это Fixed the bug that UART will be blocked
  3. На данный момент сон не используется, инициализация на скрине
  4. если несколько секунд роли не играют, то можно просто ждать по минуте после каждой команды, чтобы уж наверняка модуль её прожевал и переварил, а с запросами этих статусов инициализация выполняется за полминуты без последующих явных глюков
  5. Обновить удалённо нет возможности, следующая команда отправляется строго после приёма ответа на предыдущую. Карточка не отваливается, т.к. после перезапуска модуля программой прибор успешно выходит на связь с сервером без физического воздействия с моей стороны. Даже если бы отвалилась SIM-карта, то какие-нибудь ответы на команды модуль давал бы. Пока от зависаний помогает способ применения задержки перед отправкой следующей команды после ответа на предыдущую. Хотя с задержками всё же завис, но не через три минуты, а почти через час. Т.е. в обычном режиме таких зависаний должно быть не 3-4 в сутки, а раз в неделю предположительно.
  6. на ноге status единица, версия прошивки на скрине (1418B02SIM800C32_BT). Светодиод статуса связи продолжает моргать без изменения частоты, но при попытке позвонить с телефона на номер симки в модеме оператор говорит, что абонент не в сети.
  7. После ERROR не отвечает ни на одну команду, даже если подождать 30-60 секунд. Только перезапуск помогает. Лог весь на скрине, дальше только безуспешные попытки отправить разные команды, на которые абсолютно никакого ответа нет.
  8. Ситуацию сгустил для наглядности, в реальности так не делаю, но приходится перезапускать модуль 2-3 раза в сутки. Догадываюсь, что модуль зависает именно после ответа ERROR тёмной ночью, когда никто не видит, чем занят МК.
  9. Всем привет. После поиска причины зависания данного модуля удалось добиться повторяемости ситуации. Последовательность такая: 1. Инициализация модуля 2. Активация GPRS, следующие два действия выполняются в цикле: 3. Передача данных на сервер (100-200 байт раз в полминуты) 4. В течение всего оставшегося времени отправка АТ-команд без задержек (запрос статусов, температуры, напряжения питания) Если между АТ-командами запроса статусов делать задержку 200-300 мс, то ничего не зависает, а если без задержек, то после какой-нибудь команды приходит ответ ERROR, после чего отправляю следующую команду и тут модуль уходит в себя, отказываясь совсем отвечать до перезапуска. АТ-команды отправлял по отдельности и все вместе, как на скрине. Эффект один и тот же. Что нужно делать после ответа ERROR, не прибегая к перезапуску? Какую команду отправить? Пнуть модуль можно только программно по UART.
  10. Перерегистрация в сети, отключение и включения радиочастотной части модуля в моём случае оказались примочками. Есть команда AT+CPAS и если результат проверки не 0, то выполняем переинициализацию до победного результата, а там и время прилетит в нужном месте, если оператор его рассылает.
  11. Данный способ работает, если следующую команду послать не раньше и не сильно позже (3-5 секунд) определённого момента. После AT+CFUN=1 я жду сообщения SMS Ready.
  12. была проблема отправки смс с SIM900 при использовании симки МТС. При этом симки других операторов работают без знака "+" перед номером.
  13. Два дня копался с этой проблемой. Оказалось всё просто. AT+CMGS="+7915XXXXXXX" > TEST→ [через 15 секунд] ERROR ...................................................................... AT+CMGS="+7915XXXXXXX" > TEST→ +CMGS: [какое-то число] OK Помогло то, что в начале номера надо было поставить знак "+". Ну и соответственно указать соответствующей AT-командой номер СЦ для смс для подстраховки на случай, если он не приходит автоматически.
  14. Если строго без ослабления сигнала нужно, то тут обычный сумматор на операционнике поможет :)
  15. Если известна максимальная длина команды, то в обработчике прерыввания можно сделать буфер FIFO той же длины и с каждым входящим байтом анализировать именно это окно, а не весь массив. В GSM-модеме в конце каждой команды следует байт 0x0D, по которому обработчик прерывания устанавливает флаг, что принята команда и FIFO буфер нужно скопировать для последующего неспешного анализа, чтобы следующие приходящие байты не помешали. Если крутится операционка, то прерывание по определённому символу выдаёт семафор соответствующей задаче. Как-то так мне это представляется.
  16. не хватило воображения связать EINT3 и порт 2, пришлось гуглить и затем с другими мыслями заглянуть опять в документацию :laughing: Вопчем, разобрался. Спасибо.
  17. http://anhnvnguyen.blogspot.ru/2010/04/lpc...o-basic_05.html Тут есть намёк, что этот обработчик можно применять для обработки прерывания порта. Мои подозрения верны?
  18. Эти входы для внешних прерываний EINT0-EINT1, которые сами по себе отдельные источники прерываний и к порту не имеют отношения. В моём случае P2 должен быть отдельным источником прерывания, в обработчике которого нужно смотреть, какая именно ножка потревожила контроллер.
  19. В мануале написано, что порты P0 и P2 могут быть источниками прерываний. Как сделать обработчик для входов P2.11 и P2.12? На этих ножках висят EINT1 и EINT2, но на них нельзя сделать прерывание одновременно по фронту и по спаду. В стартапе следующий список обработчиков: WDT_IRQHandler TIMER0_IRQHandler TIMER1_IRQHandler TIMER2_IRQHandler TIMER3_IRQHandler UART0_IRQHandler UART1_IRQHandler UART2_IRQHandler UART3_IRQHandler PWM1_IRQHandler I2C0_IRQHandler I2C1_IRQHandler I2C2_IRQHandler SPI_IRQHandler SSP0_IRQHandler SSP1_IRQHandler PLL0_IRQHandler RTC_IRQHandler EINT0_IRQHandler EINT1_IRQHandler EINT2_IRQHandler EINT3_IRQHandler ADC_IRQHandler BOD_IRQHandler USB_IRQHandler CAN_IRQHandler DMA_IRQHandler I2S_IRQHandler ENET_IRQHandler RIT_IRQHandler MCPWM_IRQHandler QEI_IRQHandler PLL1_IRQHandler USBActivity_IRQHandler CANActivity_IRQHandler Для GPIO ничего нет.
  20. Отправляю данные на сервер: AT+CIPSEND=0,6 > байты запроса 0, SEND OK +CIPRXGET:1,0 AT+CIPRXGET=2,0,1040 +CIPRXGET:2,0,1040,200 [1040 байтов ответа] Как я понимаю, модуль принял 1240 байт, из них 1040 байт передал по UART, 200 байт оставил у себя в буфере. Как правильно вытащить эти байты наружу? В дукументации на эту тему негусто написано. Нужно отдельно посылать команду AT+CIPRXGET=2,0,200 или можно не задумываясь опять отправлять AT+CIPRXGET=2,0,1040 из соображений, что модуль сначала буфер вытолкнет через последовательный порт, а потом новые данные с сервера? Пока нет возможности сравнить отправляемые данные с сервера с принятыми в SIM900.
  21. Если была такая тема, то хотелось бы ссылку увидеть, поиск мне выдал добрые два десятка страниц. Сейчас разбираюсь в загрузчике и есть вопрос по поводу контрольной суммы бинарного файла, скомпилированного в Keil'е. Где она хранится и какой алгоритм расчёта? Где можно почитать на эту тему?
  22. при измерении проводимости жидкости следует учитывать эффект поляризации. Думаю, что этот же эффект имеется во влажном грунте, поэтому для длительного отслеживания изменения влажности способ пропускания постоянного тока не годится. :bb-offtopic:
  23. всего 7 строчек, 128 возможных комбинаций закоментировано-раскоментировано перепробовал и не нашёл такой, при которой файл скомпилировался бы. Где ещё что можно поменять? UP1: к глубокой ночи соображать плохо стал #include "miniz.c" стояла самой первой строчкой в программе перед присоединением стандартных библиотек, получалось какое-то дублирование из-за отсутствия где-то защитных дефайнов UP2: библиотека компилируется, но проблема осталась - ошибка памяти UP3: Для нормальной работы zlib нужно 270КБ оперативки, а это уже больше чем в 4 раза больше доступной памятив LPC1768. Этот требуемый объём как-то можно уменьшить изменением дефайнов? c minizlib пока не получается заархивировать, постоянно ошибка памяти(-4), хотя указал объём ОЗУ в несколько МБ. Сейчас закомментирована только строка #MINIZ_NO_ZLIB_APIS, все остальные возможные комбинации перепробовал ещё раз. UP4: Откуда взялась цифра "32КБ ОЗУ", если только размер одной структуры tdef1_compessor больше 300КБ? Это речь о miniz.c Minizlib.rar
  24. Спасибо за ссылку, но компилятор возмущается отсутствием файлов <sys\stat.h> и <sys\utime.h>. Где их взять?