Mam problem do rozwiązania. Potrzebuję w mojej aplikacji przemnożyć wartość z zakresu 0-4095 przez wartość zmiennoprzecinkową z zakresu 0-2,00 wprowadzaną przez użytkownika. Wymyśliłem sobie, że wartość zmiennoprzecinkową będę reprezentował za pomocą trzech zmiennych uint8_t odpowiadającym trzem cyfrom (setki, dziesiątki, jedności), następnie zsumuję cyfry, przemnożę przez wartość 0-4095, a następnie podzielę przez 100. Zmienna wynik jest typu uint16 i przechowuje wartość z ADC z zakresu 0-4095. Po przemnożeniu chciałbym aby zmienna wynik była nadal typu uint16.
Przykładowy kod:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Istotne jest dla mnie, żeby uzyskać możliwie najkrótszy czas mnożenia i dzielenia. Na ile da się ten przykład zoptymalizować? Jak na razie jestem daleki od założonych ram czasowych wykonywania tego fragmentu kodu. Te trzy linijki kodu wprowadzają ok 40 us opóźnienia. Natomiast zapasu na to mam ok 7 us. Procesor pracuje na 16 MHz.