Dzięki jacekk232 Nie wiem skąd wziąłem to OCIE2. Błąd poprawiłem, i program działa. Odświeżanie też może być Ustawiłem na 500Hz
Jednak raz na 2 - 3 sekundy szaleje mi wyświetlacz WS2812. Mam wrażenie że wpada w jakieś interferencje, bo jak się wali to kilka wyświetleń jest wadliwych a potem kilka pod rząd poprawnych.
Oznacza to, także, że mieszczę się w czasie aby wysterować WS2812.
Muszę jeszcze to zsynchronizować sposobem Mirka - powyżej.
I znów wszystko by grało, ponieważ na końcu przerwania umieściłem poniższy kawałek:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
gdzie zmienna z33 jest ustawiana co sekundę w programie głównym.
Ale jak to ze mną bywa nie ma tak prosto.
Nie chce mi się to jednak skompilować, wywala mi błąd jednak nie w konkretnym pliku tylko w katalogu projektu.
Mam problem z umiejscowieniem tych dwóch deklaracji i definicji
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Z początku miałem te dwie linijki w Main na samej górze i dopóki nazwy "pasek" używałem tylko w main
wszystko grało. Teraz funkcję "ws281x_asm_send(pasek, WS_LED_CNT, WS_PIN);"
użyłem w bibliotece od wyświetlania LED. Dołączyłem więc definicję uint8_t *pasek = (uint8_t*)ws_rgb_leds; do pliku common.h
który zaincludowany jest do main.c i do pliku display_led.c
Oczywiście wywala ws_rgb_leds undeclared here (not in a function)
Jasne! Skopiowałem też wcześniej definicję TWSRGB ws_rgb_leds [WS_LED_CNT];
Teraz dwa błędy:
../menu/../common/common.h:155: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ws_rgb_leds'
../menu/../common/common.h:156: error: 'ws_rgb_leds' undeclared here (not in a function)
Przenoszę oba do biblioteki ws281x.h
Znów Clean project i error o następującej treści
./WS2812/ws281x.o:(.data.pasek+0x0): multiple definition of `pasek'
./display_led/display_led.o:(.data.pasek+0x0): first defined here
./main.o:(.data.pasek+0x0): multiple definition of `pasek'
./display_led/display_led.o:(.data.pasek+0x0): first defined here
make: *** [TZv.3.elf] Error 1
Sprawdzam display_led i w pliku .h nie ma ani jednego wystąpienia słowa pasek a w pliku .c jedyny pasek występuje w przerwaniu w warunku
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Nie wiem dla czego także przyczepił mi się do maina. Tutaj w pętli co sekundę używam kasowania funkcją ws_cls(pasek, 0x000000);
Gdzie powinienem umieścić te deklaracje i definicje, i o co chodzi kompilatorowi?