To czeka Cię jeszcze dużo nauki. Pierwszy raz widzę floata jako zmienną sterującą w for, to na pewno przyspiesza, bo na pewno nie dało się i zrobić <(360*50) i uint16_t.
Odpalasz funkcje tego zadania co 100ms (? komentarz mówi co innego), gdzie funkcja trwa dzięki delayom 10x50x360=180s.
Tak napisane funkcje nie będą działać "równocześnie", bo funkcja musi ustalać czy ma coś do zrobienia po 10us trwania w loop i się kończyć, by inne mogły również sprawdzić swoje zadania, zadziałać lub nie i się zakończyć, zapamiętując co robiły, gdzie są i po co. I dopiero wtedy można ich wrzucić kilka w loop i zaobserwować "równoczesne" działanie wszystkich funkcji w loop (z punktu widzenia ludzkiego oka i mózgu).
Jak chcesz sprawdzić ile trwa wykonanie jednej linijki programu, to złap czas start=micros(), po funkcji koniec=micros(), wydrukuj na UART różnice z rzutowaniem na uint32_t.
Odpalasz funkcje tego zadania co 100ms (? komentarz mówi co innego), gdzie funkcja trwa dzięki delayom 10x50x360=180s.
Tak napisane funkcje nie będą działać "równocześnie", bo funkcja musi ustalać czy ma coś do zrobienia po 10us trwania w loop i się kończyć, by inne mogły również sprawdzić swoje zadania, zadziałać lub nie i się zakończyć, zapamiętując co robiły, gdzie są i po co. I dopiero wtedy można ich wrzucić kilka w loop i zaobserwować "równoczesne" działanie wszystkich funkcji w loop (z punktu widzenia ludzkiego oka i mózgu).
Jak chcesz sprawdzić ile trwa wykonanie jednej linijki programu, to złap czas start=micros(), po funkcji koniec=micros(), wydrukuj na UART różnice z rzutowaniem na uint32_t.
Miło być decenianym https://buycoffee.to/kaczakat