Próbuję znaleźć skuteczny sposób obliczenia odwrotności na AVR (lub przybliżenia go).
Próbuję obliczyć okres impulsu dla silnika krokowego, aby móc liniowo zmieniać prędkość. Okres jest proporcjonalny do odwrotności prędkości ( p = K/v
), ale nie mogę wymyślić dobrego sposobu na obliczenie tego w locie.
Moja formuła to
p = 202/v + 298; // p in us; v varies from 1->100
Testując na Arduino, podział wydaje się całkowicie ignorowany, pozostawiając p
ustalony na 298
(chociaż być może byłoby inaczej w avr-gcc). Próbowałem także sumować v
w pętli, aż przekroczy 202
, i licząc pętle, ale jest to dość powolne.
Mogłem wygenerować tabelę odnośników i zapisać ją w pamięci flash, ale zastanawiałem się, czy istnieje inny sposób.
Edycja : Może tytuł powinien być „efektywnym podziałem” ...
Aktualizacja : Jak wskazuje pingwin, moja formuła mapowania okresu na prędkość jest nieprawidłowa. Ale głównym problemem jest operacja dzielenia.
Edycja 2 : Podczas dalszych badań podział działa na arduino, problem był spowodowany zarówno nieprawidłową formułą powyżej, jak i przepełnieniem int w innym miejscu.