Całkowanie w dyskretnej dziedzinie czasu sprowadza się do sumowania - upraszczając jeśli masz całkę od 0 do T w ciągłej dziedzinie czasu to w dyskretnej będzie to suma od 0 do T.
Zasadniczo ALU potrafi tylko dodawać (8 bitowe uC), odejmowanie to sumowanie liczb z przeciwnym znakiem, mnożenie to sukcesywne sumowanie. Czyli w wielkim uproszczeniu nie mającym przełożenia na asemblera 3*3 to będą 2 operacje sumowania 3+3+3. W układach 16 bitowych i wyżej sprzętowe mnożenie i dzielenie jest już standardem.
Czas wykonania programu można przyspieszyć poprzez dobranie właściwych długości zmiennych do żądanej operacji (nie dłuższych niż jest to niezbędnie konieczne), o ile się da nie stosowanie operacji zmiennoprzecinkowych (pochłaniają dużo mocy obliczeniowej), porządnie napisany kod - bez bezsensownych delay() itp.
Z resztą jeśli dopiero rozpoczynasz naukę to myślę, że bardzo pomoże Ci lektura
http://atnel.pl/mikrokontrolery-avr-jezyk-c.html. Książka naprawdę jest dobrze napisana, część zagadnień opisana wręcz "łopatologicznie" - ciężko ich nie zrozumieć. Sam nabyłem tą pozycję jak już przebrnąłem przez większość mniej przystępnych zagadnień i do dziś żałuje, że nie kupiłem jej wcześniej.
Tu masz przykładowy PID, tyle że ten kod nie jest w żadnym razie przenośny (wyliczony metodą kompensacji dynamiki obiektu regulacji), wymaga też operacji zmiennoprzecinkowych (był połączony z filtrem cyfrowym).
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.