No więc tak:
w pliku MBI5040.h mam zdefiniowane makro, podpatrzone zresztą z MkAvrCalkulatora

język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
natomiast w pliku MBI5040.c mam zdefiniowaną tablicę w pamięci flash, więc muszę do niego dołączyć pgmspace.h.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W pliku main.c korzystam z makra, więc muszę do niego również dołączyć pgmspace.h, bo jeśli tego nie zrobię to dostaję błąd:
Kod:
main.c:(.text+0x5e): undefined reference to `pgm_read_word'
main.c:(.text+0x76): undefined reference to `pgm_read_word'
main.c:(.text+0x8e): undefined reference to `pgm_read_word'
make: *** [MBI_TEST.elf] Error 1
Chodzi mi o to, że korzystając z mojej biblioteki muszę pamiętać o tym, żeby dołączyć również pgmspace.h a chciałbym, żeby to następowało automatycznie wraz z dołączeniem mojej biblioteki, tylko nie wiem jak to zrobić poprawnie.
Co do MkAvrKalkulatora, to bardzo łatwo można rozszerzyć jego funkcjonalność o korekcję opartą o model CIELab. W razie czego chętnie służę pomocą.
Pozwolę sobie jeszcze odnieść się do przytoczonego tekstu na blogu, gdzie załączone są charakterystyki prądowo-napięciowe diod LED. Owszem są one nieliniowe, ale przy użyciu PWM do regulacji jasności korzystamy zwykle ze źródła prądowego do zasilania diod (ewentualnie rezystora), więc jej jasność zależy tylko i wyłącznie od współczynnika wypełnienia PWM (pomijam wpływ zmian temperatury złącza, przy małych diodach i prądach jest pomijalny). Tak więc korekcję gamma czy nie-gamma stosujemy nie dlatego, że dioda świeci nieliniowo a dlatego, że wzrok człowieka działa nieliniowo.

Korzystam z 16 bitowego PWM z powodu tego, że przy 8 bitowym nie udawało mi się uzyskać ładnych przejść przy małych poziomach jasności. Wynika to z tego, że czułość oka ludzkiego na zmianę natężenia światła jest zależna od... samego natężenia

Chodzi o to, że bez problemu dostrzeżemy zmianę pomiędzy wypełnieniem np 2 a 12, natomiast zmiana pomiędzy 245 a 255 będzie trudna do zauważenia. Jest to szczegółowo opisane w drugim załączonym przeze mnie linku. W dużym uproszczeniu: obserwator zauważa zmianę natężenia jeżeli wynosi ona 1/64 pierwotnego natężenia (wartości tego ułamka są różne w zależności od źródła).
Moja korekcja jest o tyle przyjazna, że użyłem 256-elementowej tablicy, więc w efekcie użytkownik korzysta z niej jak z normalnego 8 bitowego PWM, tyle że już skorygowanego

Jeszcze małe porównanie (zawęziłem specjalnie zakres żeby było widać różnicę):

Napisałem kiedyś prosty kod testowy do obserwowania wpływu ilości bitów PWM na płynność zapalania się diody (symulacja bezwładności włókna żarówki). Jak go znajdę i posprzątam to dołączę, każdy będzie mógł się pobawić, bo wykorzystuje PWM sprzętowy na timerze.