This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

send frequency using nrf8001 and arduino uno r3

Hi,

I'm using the redbearlab shield in combination with an arduino uno r3. I want to send sensor data at about 10 hz to my smartphone.

This works but sometimes I get an error 0x91 (Pipe Error Event : Credit not available).

When I up the frequency I get more and more of these errors.

Is there a way to get rid of them?

Parents
  • Dear Soren thanks for your answer.

    I am already checking my available credits. This is the code i am using for sending my data. As soon as i raise above aproximately 8Hz i will get error 0x91:

    
    if ((lib_aci_is_pipe_available(&aci_state, PIPE_ROWING_PANEL_OAR_DATA_TX))
                    && (true == timing_change_done))
        {
          Serial.println(millis());
          if (send_data(dummy_angle, dummy_force))
          {
            aci_state.data_credit_available--;
            Serial.print("Data Credit available: ");
            Serial.println(aci_state.data_credit_available, DEC);
            radio_ack_pending = true;
          }
          while (radio_ack_pending)
          {
            process_event();
          }
        }
    
    

    case ACI_EVT_DATA_CREDIT: makes radio_ack_pending false.

    I used the examples to construct this code. However i want to send at higher frequencies. So to reformulate my question: why am i getting this error since i am waiting in a while loop until i get a acknoledgement.?

    Thank you for your time

Reply
  • Dear Soren thanks for your answer.

    I am already checking my available credits. This is the code i am using for sending my data. As soon as i raise above aproximately 8Hz i will get error 0x91:

    
    if ((lib_aci_is_pipe_available(&aci_state, PIPE_ROWING_PANEL_OAR_DATA_TX))
                    && (true == timing_change_done))
        {
          Serial.println(millis());
          if (send_data(dummy_angle, dummy_force))
          {
            aci_state.data_credit_available--;
            Serial.print("Data Credit available: ");
            Serial.println(aci_state.data_credit_available, DEC);
            radio_ack_pending = true;
          }
          while (radio_ack_pending)
          {
            process_event();
          }
        }
    
    

    case ACI_EVT_DATA_CREDIT: makes radio_ack_pending false.

    I used the examples to construct this code. However i want to send at higher frequencies. So to reformulate my question: why am i getting this error since i am waiting in a while loop until i get a acknoledgement.?

    Thank you for your time

Children
No Data
Related