Strony

sobota, 8 lutego 2014

WS2812 - MAGIC RGB LED - PART 05

Witam,

W takim razie - zabieramy się moi drodzy za kolejny - piąty już odcinek na temat Magic LED. Tym razem będzie rozprawka na temat buforowania, czyli omówimy sobie jeden z bodajże najważniejszych i najbardziej optymalnych chyba sposobów jeśli chodzi o obsługę takich taśm LED. Tu już wkraczamy w takie dziedziny można śmiało powiedzieć - jak byśmy zaczynali tworzyć własny sterownik graficzny do jakiegoś kolorowego wyświetlacza LED TFT ;) .... Mam nadzieję, że również ten, krótki chociaż troszkę rozgadany poradnik wam się na coś przyda, choć nadal z mojej strony tzn wg mnie jest to jedno z najważniejszych zagadnień i niestety bardzo często spotyka się z dużym niezrozumieniem ze strony początkujących. Dlatego właśnie postanowiłem poświęcić tej sprawie hmmm "trochę" miejsca na antenie ;)



zapraszam na film


;)

20 komentarzy:

  1. Witam panie mirku dlaczego ten odcinek 05 nichce działac i nieidzie ogladac

    OdpowiedzUsuń
    Odpowiedzi
    1. coś się dzieje z YT ... ale spokojnie już się pojawiają prawidłowe kompilacje filmu w kolejnych rozdzielczościach

      Usuń
  2. Mega super poradnik.
    Wielki szacuneczek Panie Mirku.

    Czyżby szykowało się kolejne klonowanie w następnym odcinku ? A może SunRiver będzie tym tajemniczym gościem ? Kurczę już nie mogę się doczekać hehe .

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie nie, nie Sun River ;) ... i może nawet nie będzie to zbyt miła wizyta, to jednak postanowiłem że zaproszę tę osobę ... no cóż - zobaczycie sami ...

      Usuń
    2. Panie Mirku, niezbyt miła wizyta czyli co? Malkontenta Pan zaprosi? ;)

      Usuń
    3. hmmm najgorszy malkontent byłby aniołkiem przy (niestety) tej osobie która czy tego chcę czy nie chcę - musi u mnie gościnnie wystąpić ... no ale nie mogę zdradzić nic więcej - trzeba poczekać.

      Usuń
    4. Ktoś z szydełkiem? ;)

      Usuń
    5. ;) ..... hmmm nie nie ;) raczej nie z szydełkiem ;)

      Usuń
  3. Panie Mirku wkradł się panu tutaj taki malutki błędzik :) "sposobów jeśli chodzi o obsługę takich taś <---- LED"

    OdpowiedzUsuń
    Odpowiedzi
    1. Bardzo ślicznie dziękuję za taką uwagę, już poprawiłem.

      Usuń
  4. Dziękuje za super poradnik:)

    OdpowiedzUsuń
  5. Jestem swiezo po ogladnieciu tego odcinka. Mam pytanie odnosnie funkcji wysylajacej tablice. Mianowicie skoro mamy funkcje wysylajaca caly kolor (nie poszczegolne kolory) to dlaczego jej nie wykorzystujemy przekazujac element (trzybajtowy) tablicy bezposrednio a pozniej inkrementujemy tablice. Cos w stylu:
    For {I=0; I <iloscelementowtablicy; I++}
    Sendcolor(naszatablica);
    Naszatablica++
    Jak wiadomo, o ile nie wskarzemy miejsca w tablicy przy przekazywaniu jej do funkcji to wskaznik zawsze wskazuje pierwszy element tablicy. w petli wysylamy element tablicy I przeskakujemy na nastepny.

    OdpowiedzUsuń
    Odpowiedzi
    1. Proszę sobie sprawdzić ;) napisać taką funkcję i zobaczyć jak działa - później wnioski nasuną się same ok ?

      Usuń
    2. Niebardzo moge napisac, poniewaz :

      -nie uzywam avr (co w tym przypadku nie ma zbytnio znaczenia),
      -nie posiadam diod do sprawdzenia

      Pytanie bylo czysto teoretyczne, bo na "chlopski rozum" powinno zadzialac i nie trzeba 'kombinowac' ze wskaznikami i rzutowaniem. Oczywiscie w pytaniu wyzej jest blad skladni (pisalem w wannie na tel. - tak,tak niektorzy maja czas dla siebie lezac w wannie) i na poczatku zaczalem uzywac skladni w pascalu ale to jest tak jak sie na codzien uzywa i c i pascala :P. Chodzi mi o to dlaczego nie przesylac do funkcji sendcolor poszczegolnych elementoe tablicy (?).

      Usuń
    3. A ja teraz nie siedzę przy kodzie - więc o szczegółach nie powiem, ale słowo klucz to "czas" ... czas wykonywania się operacji.

      Bo ja nigdzie nie mówię że czegoś nie można - można to zrobić na milion sposobów ... ale tu, gdzie mówimy o czasówkach rzędu 400ns - teoretyzowanie w wannie bez oscyloskopu ;) może nie wyjść. Zastrzegam - może .... bo sam teraz nie jestem w stanie przetestować i potwierdzać czy zaprzeczać. Zresztą chyba nie o to chodzi ;) ....

      Usuń
    4. Wydaje mi sie ze sama funkcja wysylania powinna byc szybsza, dzieki temu ze jest mniej operacji dodawania - teraz jest inkrementacja wskaznika jakoby podwojnie : raz w send_rgb jako parametry funkcji, dwa jako wskaznik na tablicy. Problem moze stanowic funkcja send color, poniewaz jezeli dobrze pamietam tam rozbijales 3bajty na poszczegolne kolory (nie wiem czy przypisywanie/tworzenie kolejnych zmiennych spowalnia program) ... ale jakby operowac bezposrednio na 3bajtach to sendcolor powinna byc porownywalnie szybka jak send_rgb a w calosci moze okazac sie szybsze niz operowanie (rozbijanie w funkcjach) na pojedynczych bajtach. Zastrzegam, ze pytanie nie mialo na celu w jakikolwiek zdyskredytowanie sposobu uzywanego w poradniku tylko to jest bardziej prosba poczatkujacego w c, czy moj tok myslenia jest skierowany w dobra strone (?)

      Usuń
    5. Uwierz mi, że wcale nie odebrałem twojej wypowiedzi jakbyś miał zamiar dyskredytować ten sposób, który podałem. Ja wręcz zachęcam każdego do szukania różnych dróg Ba! wręcz mówiłem wyraźnie że nie jest to w ogóle optymalny sposób i zapewni co najwyżej ok 400 kHz zamiast 800 kHz. Mówiłem też że wkrótce postaramy się wręcz o nim zapomnieć, pomimo to, że można by go nawet jeszcze optymalizować ....

      więc cieszę się ze wspominasz o nowych sposobach ale ...

      ale że nie mam jak przetestować - leżę w domciu przeziębiony i do kompa siadam z doskoku, to dlatego piszę że teoretycznie nie sprawdzę nic dalej i nie będę umiał podpowiedzieć ok?

      tylko to miałem na myśli ...

      Usuń
    6. Zycze powrotu do zdrowia. Szkoda, ze nie masz jak sprawdzic (ja to wogole nie posiadam oscyloskopu w domu)... chodzilo mi bardziej o ogolna optymalizacje kodu pisanego w c, niz ten konkretny przypadek.

      Usuń
    7. jak będę na chodzie i będę miał dostęp do kodu to zajrzę ok?

      Usuń
    8. Niekoniecznie, nie chce dostarczac dodatkowej pracy, tylko dlatego, ze mnie cos zaintrygoalo. Jeszcze po przemysleniu dochodzi 'bitowosc' procka i o ile w prockach 32bit wg mnie to co napisalem wyzej powinno miec wplyw na szybkosc, o tyle przy 8bitowcach niekoniecznie chociaz mozliwe. Moze poradniki oglada osoba, ktora siedzi gleboko w c + architektura prockow i wypowie sie w tej kwestii

      Usuń