Witam,
Mam mały problem

Używam atmegi 32 , listwy ledowej ws2812 60 diod, oraz wykorzystuję uart do odbioru danych z komputera.
Zanim zacznę tłumaczyć co się dzieje parę linijek kodu:
main.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
oraz w przerwaniu ISR( USART_RXC_vect )
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
dodatkowo w pliku mkuart.c :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
oraz mkuart.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wszystkie biblioteki mistrza

ramka wygląda następująco " $123#123#123#123#123#123#* "
Wszystko ładnie działa, zmiana danych w ramce zmienia kolory na taśmie, ale.. po paru sekundach diody przestają świecić jak powinny i zaczyna się meksyk na diodach listwy, czasem trwa to pół sekundy czasem 10 sek i troszkę smutno

Atmega napędzana z kwarcu 12MHz (fusy przestawione), prędkość transmisji 9600 (przy 38400 to samo), do komunikacji używam PL2303, czy dane wysyłam z konsoli czy z programu PC jest jedna chwała, i tak po pewnym czasie to samo.
Docelowo będę chciał używać o wiele większej ramki (22 razy większej więc mile widziane jakieś sugestie), oraz chciałbym to robić z możliwie największą prędkością.
i tu moje pytanie, czym to może być spowodowane ?