Witam
Czasem zdarza się zamigać ledem w jakiejś częstotliwości którą odczyta ludzkie oko, po prostu najzwyklejsze miganie. Okazuje się że przykłady w większości oparte są na delay który marnuje czas - a ja chciałbym zaprezentować trochę inne podejście nie marnujące czasu.
Najlepiej na przykładzie pokaże o co mi chodzi:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wyżej popularne podejście do migania ledem co sekundę.
...a teraz z wiejskim makrem:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Tak można fajnie mierzyć jakieś nie precyzyjnie odstępy czasowe nie zatrzymując głównej pętli aplikacji, w makrze BEGIN... argument pierwszy jest nazwą zmiennej pomocniczej i przy okazji nazwą sekcji kodu który ma się wykonać co zadany czas w argumencie drugim, jak nie trudno się domyślić są to milisekundy tzn co ile milisekund ma zostać wykonany kod pomiędzy BEGIN_WAITMS a END_WAITMS .
To wszystko, a prostych zastosowań jest bardzo wiele, jak np wygaszanie LEDa po jakimś czasie, wyłączenie piszczyka po jakimś czasie itd itd.
A to właśnie te makra:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Bardzo dobrze się to sprawdza na mikrokontrolerach ARM gdzie praktycznie standardowo mamy przerwanie generowane co 1ms w celu inkrementacji SysTickCount, natomiast w AVR też to jest możliwe uzyskać taką zmienną.
Pozdrawiam
XBary