malarz87 napisał(a):
Przecież będzie działało z pełną prędkością procesora,
Niestety masz rację tylko po części. Przełączanie będzie się wykonywało z pełną prędkością ale tylko wtedy, gdy będzie wykonywane w głównej pętli, a procesor nic poza tym nie będzie miał do roboty. Wystarczy głupie odczytanie czujnika temperatury i zaczynają się schody, których nie potrafisz obejść. A pomyśl teraz jakbyś miał obsłużyć ze 20 czujników, wyświetlacz TFT i jeszcze np kartę SD. i co? i klapa!!!
Przerwanie zapewnia, że przełączanie się wykona poza kolejnością i zawsze! Nawet jak procek wysyła jakiś długi tekst czy obrazek na lcd, to na chwilkę wyskoczy poza funkcję i szybko załatwi przełączenie w przerwaniu aby wrócić do obsługi lcd.
Fakt, że jeżeli sobie w pętli głównej tylko przełączasz cyfry i nic poza tym to program będzie szybszy o parę taktów zegara niż z przerwaniami ale....
.... po pierwsze nie potrzebujesz tak szybko przełączających się cyfr - oko dostrzega migotanie tylko do około 60Hz, Ty chcesz przełączać w MHz - po co?
.... po drugie jak procek ma coś jeszcze do roboty - cokolwiek - to Twój soposób bardzo szybko stanie się wolniejszy bo pętla wykonuje wszystko po kolei nie zważając co jest ważne czasowo a co zajmuje wieki. Robi swoją robotę linijka po linijce, bajt po bajcie.
i jeszcze jedno: zapis
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
czyli przełączanie wyświetlaczy po takim warunku wcale nie jest szybsze niż obsługsa w przerwaniu. Wierz mi.
p.s. Przepraszam za tak skrótową podpowiedź w pierwszym poście. Sądziłem, że wystarczy aby naprowadzić na właściwe tory.
Rozumiem, że zatrzymywanie przemiatania to jedyny problem a sam odczyt temperatury działa?