ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1300498 Топик полностью
petrd (12.04.2023 08:35, просмотров: 208) ответил petrd на Скорость-то выставлена, только от этого должно зависеть (по мануалу) ЧТО будет валить или не валить в порт модуль при включении. Мое дело на это правильно реагировать. Вариант включить - отсчитать время задержкой, проигнорировав все что модуль выплюнул при старте и потом пытаться начинать работать предполагая, что все прошло гладко при старте, мне такой вариант не нравится.
Главный подход, который выбрал - максимально НЕ использовать всякие __delay_ms() при обмене с модулем. Поэтому мой путь на данный момент выглядит так: 

1. При включении выставляю в МК скорость 115200 (максимум возможного для SIM800L). Скорость модуля по умолчанию - автонастройка. При этом в даташите сказано, что максимум автонастройки модуля 57600, но однако и на 115200 работает.

2. И сразу начинаю слать "AT" через таймаут, при этом постоянно в цикле жду "ОК".

3. После получения "ОК" жду последовательность "RDY", "+CFUN: 1", "+CPIN: READY", "Call Ready", "SMS Ready".

4. "SMS Ready" для меня является маркером завершения инициализации при включении, поэтому все что будет между "ОК" и "SMS Ready" можно парсить при необходимости, а можно и проигнорировать.

Только после этого начинается обмен с модулем по задуманному алгоритму.

Эхо у меня всегда включено.