Skocz do zawartości

nRF24l01+, problem z nadawaniem


RybaSG

Pomocna odpowiedź

Cześć,
Zrobiłem urządzenie z nadajnikiem opartym na chipie nRF24L01+. Problem jest taki, że każda drobna zmiana wykonywana (chodzi o czas wykonywania, który się wtedy zmieni) w pętli głównej programu wpływa na nadawanie. Dla przykładu: w zamieszczonym przeze mnie kodzie poprawnie nadawane są dane o akutalnym napięciu (XPotVoltage, YPotVoltage) natomiast komenda TX, którą wysyłam nie zostaje nadawana wcale. Jednak dodając wewnątrz funkcji nRF24L01+ opóźnienie rzędu 10us wszystko zaczyna działać poprawnie do momentu dodania obsługi wyświetlacza OLED, wtedy dane o napięciu są wysyłane poprawnie, ale komenda TX wysyłana jest losowo przy poruszaniu joystickiem, z którego czytam napięcie.

Poprawność działania testuję na terminalu, do którego trafiają dane z odbiornika. Używałem też analizatora stanów logicznych, funkcja nadająca "TX" w ogóle jakby się nie wykonywała.

Korzystam z tej biblioteki: https://forum.atnel.pl/topic11377.html

@EDIT: co ciekawe inicjalizacja OLED powoduje całkowite niedziałanie nadawania.

while(1)
{
        if ( nRF_Flag == 0)
        {
            XPotentiometerVoltage = measurement(PA1);
            memset(Buffer, '\0', strlen(Buffer));
            sprintf(Buffer, "Xaxis%d", XPotentiometerVoltage);
            nRF_SendDataToAir(Buffer);

            YPotentiometerVoltage = measurement(PA0);
            memset(Buffer, '\0', strlen(Buffer));
            sprintf(Buffer, "Yaxis%d", YPotentiometerVoltage);
            nRF_SendDataToAir(Buffer);

            memset(Buffer, '\0', strlen(Buffer));
            sprintf(Buffer, "TX");
            nRF_SendDataToAir(Buffer);
                 }

        OLED_SendString(0, 35, "Voltage: " ,1, 1, 0);
        OLED_SendInt(0, 35, IntegerPart, 1, 1, 0);
        OLED_SendString(0, strlen("Voltage: ")+1, "." ,1, 1, 0);
        OLED_SendInt(0, strlen("Voltage: ")+2, FractionPart, 1, 1, 0);
        OLED_SendString(0, 35, "                             " ,1, 1, 0);

        OLED_Display();
}

Z góry dziękuję za podpowiedzi,
Pozdrawiam

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.