AVR wyrobi a jak program napisany źle, to i 1GHz nic nie zmieni. Na Z-80 dałbym radę zrealizować zadania, które realizuje robot bo robi niewiele.
Należy zacząć od tego, jak często wykonują się przerwania?
Pokaż rozwinięcie asm procedury obsługi przerwania.
Dalej, moc CPU jest zabijana przez delay i to bardzo długie. Stąd pozorne wrażenie, że przerwania czekają w imaginowanej kolejce. Wystarczy w przerwaniu "tachlować" sobie jakimś pinem GPIO i zobaczyć na oscyloskopie, że przerwania wykonują się natychmiastowo. Przy okazji bedzie widać ile czasu zostaje na program główny.
Dlaczego zliczanie kroków jest realizowane programowo? Timerów zabrakło?
Po co liczby zmiennoprzecinkowe? Po co double? W AVR double i float to jedno i to samo!
Ciekawostka: Kiedyś "long" i "long long" było 32-bit teraz na szczęście już nie ale i tak AVR-GCC wymaga wielu protez bo uwiązał się do 16-bit w wielu operacjach dlatego nie nadaje się do poważnych zastosowań, chyba, ze ktoś ma dużo czasu na pisanie softu.
Należy zacząć od tego, jak często wykonują się przerwania?
Pokaż rozwinięcie asm procedury obsługi przerwania.
Dalej, moc CPU jest zabijana przez delay i to bardzo długie. Stąd pozorne wrażenie, że przerwania czekają w imaginowanej kolejce. Wystarczy w przerwaniu "tachlować" sobie jakimś pinem GPIO i zobaczyć na oscyloskopie, że przerwania wykonują się natychmiastowo. Przy okazji bedzie widać ile czasu zostaje na program główny.
Dlaczego zliczanie kroków jest realizowane programowo? Timerów zabrakło?
Po co liczby zmiennoprzecinkowe? Po co double? W AVR double i float to jedno i to samo!
Ciekawostka: Kiedyś "long" i "long long" było 32-bit teraz na szczęście już nie ale i tak AVR-GCC wymaga wielu protez bo uwiązał się do 16-bit w wielu operacjach dlatego nie nadaje się do poważnych zastosowań, chyba, ze ktoś ma dużo czasu na pisanie softu.