NRF не передает пакеты, если к ней обращаться редко

Тема в разделе "Проводная и беспроводная связь", создана пользователем Condensator, 5 июн 2017.

Метки:
  1. Condensator

    Condensator Нуб

    Как только в цикл добавляю delay(15) или больше 15, NRF перестает работать. В примере установил setAutoAck(false) чтобы не требовалось подтверждения от приемника.
    Если передавать часто, те без delay(1000), то работает нормально

    IDE Ардуино версии 1.0.5 r2

    GR_LED - зеленый светодиод к 14 выводу Atmega2560 или ко 2 выводу UNO
    RED_LED - красный светодиод к 16 выводу Atmega2560 или к 4 выводу UNO


    Код (C++):
    #include "nRF24L01.h"
    #include <SPI.h>
    #include "RF24.h"
    const uint64_t pipe = 'ABCDEFG';
    uint8_t  B_32bytes[32];

    // для Mega2560 CE_PIN,SS_PIN :
    RF24 ModuleToTest(49,53);

    //для Uno CE_PIN,SS_PIN:
    // RF24 ModuleToTest(8,10);

    // для Mega2560:
    #define GR_LED 14     // Tx Ok
    #define RED_LED 16    // Tx fail


    // для UNO:
    //#define GR_LED  2
    //#define RED_LED 4

    void setup(void)
    {
      ModuleToTest.begin();
                              //ModuleToTest.setAutoAck(true);
      ModuleToTest.setAutoAck(false);
      ModuleToTest.setDataRate(RF24_1MBPS);
      ModuleToTest.setCRCLength(RF24_CRC_16);
      ModuleToTest.setChannel(66);
      ModuleToTest.openWritingPipe(pipe);
      //ModuleToTest.printDetails();
      pinMode(RED_LED, OUTPUT);
      pinMode(GR_LED, OUTPUT);  
    }

    void loop(void)
    {
      switch(ModuleToTest.write(B_32bytes,32))
         { case false: digitalWrite(GR_LED,HIGH); digitalWrite(RED_LED,LOW); break;
           case true:  digitalWrite(RED_LED,HIGH); digitalWrite(GR_LED,LOW); break;
         }
    delay(1000); // !!!!!!!!!!!!!!!!!!!!!!!!!
    }
     
  2. sslobodyan

    sslobodyan Гик

    Как определяете что модуль не работает? И сделайте вывод регистров в отладку перед каждой отправкой с большим интервалом. Только так можно понять проблему