(16-12-2019, 22:35)elvis napisał(a): Obsługa seriala działa bardzo dobrze, testowałem 9600. CPU jest faktycznie zajęty, ale i tak nic innego nie ma do roboty, więc to żadna wada.Może zadziałać i 921600 jak się uda "wstrzelić". Gdy dane wysyłane są do LED przez AVR, który "macha pinem" to muszą być zablokowane przerwania. Jak masz szczęście to akurat podczas transmisji nie do LED nie ma transmisji po UART. Spróbuj jednak wysyłać dane po UART bez przerwy z prędkością 9600 ni na 100% będziesz miał gubienie znaków. matematyki nie da się oszukać. 500 LED to transmisja trwająca 1/(800e3/24/500) = 15ms. nie chce być inaczej. transmisja 1 znaku przy 9600 8N1 to 1/(9600/10) = ok 1ms. Matematyka nie kłamie. W 15ms może zostać przesłane 15 znaków, zgadza się? FIFO w AVR ma 2 znaki, więc 13 zgubisz. Tak czy nie?
Prędkość, która gwarantuje, ze znaki nie będą zgubione to 1200 co wynika z 1/(1200/10)= ok 8,3ms. W 15 ms mogą być przesłane co najwyżej 2 znaki a tyle ma sprzętowe FIFO.
Dlatego do obsługi WS281x najlepiej wykorzystać UART lub SPI. Nie trzeba zawieszać przerwań a samą transmisję można zrealizować w przerwaniach właściwie to trzeba, bo pomiędzy kolejnymi zapisami do UART lub SPI nie można przekroczyć czasu ok 20us a AVR to nie ARM.
Co do hobby, kobiety są najkosztowniejsze.