Witam
Piszę program obsługi dla TDA7318 i utknąłem przy wyliczaniu wartości dla nastaw niskich i wysokich tonów.
Wartości zmieniają się wg następującej tabelki:
Wartość bajtu wyliczam prosto
Bass = 96 + Wart
Teb = 111 + wart
gdzie wart to wartość wynikająca z bitów C3...0
Problem jest w tym, że dla wartości decymalnej 0 (przeliczone z bitów) wartość wynosi -14dB i tak sobie implementując zmienną wszystko jest ok do wartości 0dB = 7 (dec)
bo potem 8 dec = 14dB, 9 dec = 12db i tak do 15 dec = znów 0dB
Jak napisać funkcję która to ładnie wyliczy?
Myślałem o select case i przypisywać konkretnej wartości zmiennej odpowiednią wartość do wysłania ale to mało eleganckie rozwiązanie i szukam lepszego
Piszę program obsługi dla TDA7318 i utknąłem przy wyliczaniu wartości dla nastaw niskich i wysokich tonów.
Wartości zmieniają się wg następującej tabelki:
Wartość bajtu wyliczam prosto
Bass = 96 + Wart
Teb = 111 + wart
gdzie wart to wartość wynikająca z bitów C3...0
Problem jest w tym, że dla wartości decymalnej 0 (przeliczone z bitów) wartość wynosi -14dB i tak sobie implementując zmienną wszystko jest ok do wartości 0dB = 7 (dec)
bo potem 8 dec = 14dB, 9 dec = 12db i tak do 15 dec = znów 0dB
Jak napisać funkcję która to ładnie wyliczy?
Myślałem o select case i przypisywać konkretnej wartości zmiennej odpowiednią wartość do wysłania ale to mało eleganckie rozwiązanie i szukam lepszego