Cóż, nie wiedziałem jak dokładnie zatytułować wątek więc napisał jak napisałem...
Mikrokontroler to Atmega32 taktowana zewnętrznym kwarcem 8MHz
Mam taki oto szkielet programu w którym w pętli Do zagnieżdżona jest pętla While
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wiadomo, że jeśli warunek nie jest spełniony to program cały czas krąży w pętli while.
Równocześnie z pętlą while program wykonuje inne zadania - m.in.:
- obsługa wyświetlacza
- zwiększanie pięciu liczników (co sekundę)
- pomiar i uśrednianie ADC na jednym kanale
Te 3 zadania wykonuję w przerwaniu od TIMER0 - co 1 sekundę
Wszystko działa, ale nadszedł czas na modyfikację programu.
Musiałem dodać obsługę klawiatury oraz...komunikację przez UART...
Dodałem obsługę tych dodatkowych instrukcji w przerwaniu od timera0 i działa, ale wydaje mi się, że za dużo tego się dzieje w tym przerwaniu.
Pytanie do Was:
Jak usprawnić cały program i urządzenie żeby trochę odciążyć ilość tych operacji w tym przerwaniu?
Czy dodanie kolejnego przerwania od TIMER2 i wrzucenie tam niektórych funkcji coś pomoże?
Chciałbym zwiększyć częstotliwość taktowania do 16MHz - czy to dobry pomysł?
Czy jest jakaś inna możliwość usprawnienia działania takiego programu?