dandan писал(а):После прекращения передачи если перезапустить приемник то он опять начинает работать.
Не понял.. не работает передатчик или приёмник? )) Программа твоя или взял готовую библиотеку?))
Я думаю что проблема с регистрами настройки модуля... Наример по неизвесной причине изменился один из регистров модуля.. (помеха по шлейфу).
dandan писал(а):Ресет МК не помогает нужно полностью отключать питание, значит это проблема не в программе.
Нет, это ничено не значит)) Программы бывают разные.. глюки бывают разные..))
При включении питания радиомодуля регистры устанавливаются по умолчанию. Программа инициализации может не инициализировать основные регистры, а оставить их по умолчанию.
Простой пример:
Допустим возьмём регист длины адреса - регистр 0x03. После включения питания модуля, этот регистр имеет значение 00000011. Что соответствует анресу - 5 байтов - 0xE7E7E7E7E7 (11100111 11100111 11100111 11100111 11100111) - По умолчанию.
Например программа этот регистр при включении не меняет (оставляет этот регистр по умолчанию).
Затем, по неизвесным причинам (например от помехи на шлейфе SPI.. или глюка программы... или ... ) через пару секунд этот регистр в приёмнике или передатчике меняет значение например на: 000000
01. Что соответствует анресу - 3 байта - 0xE7E7E7 (11100111 11100111 11100111). Соответственно связи не будет. Т.к. длина адреса в приёмнике и передатчике теперь разная.
При этом кнопка Ресет МК не поможет, т.к. после сброса МК опять оставить этот регистр без изменений - 3 байта - 0xE7E7E7 (11100111 11100111 11100111).
Единственный выход - перезапустить радиомодуль (выключить/включить радиомодуль). В этом случае все регистры радиомодуля обнуляться и регистр 0x03 после включения питания модуля опять будет - 5 байтов - 0xE7E7E7E7E7 (11100111 11100111 11100111 11100111 11100111) - По умолчанию.
Связь опять будет работать... до следующего глюка ))).. И так по всем регистрам настройки... Инициировать каждый раз все регистры я бы не стал, не нравится мне эта идея, я бы лучше разобрался откуда глюки.. (если это глюки).
Просто к слову... в даташите регистр 0x03 имеет три значения:
После включения питания модуля этот регистр имеет значение 00000011 - 5 байт. Можно поменять на 00000010 - 4 байта или 00000001 - 3 байта.. И всё))
На самом деле в регистр 0x03 можно ещё записать 00000000 - 2 байт. Про это в даташите не сказано))...