Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 wrz 2024, o 02:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 1 ] 
Autor Wiadomość
PostNapisane: 19 wrz 2012, o 19:38 
Offline
Użytkownik

Dołączył(a): 17 mar 2012
Posty: 74
Lokalizacja: Okolice Gdańska
Pomógł: 3

Witam,

wczoraj wpadłem na pomysł stworzenia na AVR zalążka zbioru funkcji obsługujących zadania pracujące "w tle".
Całość opiera się o timer i flagę inkrementowaną w przerwaniu.

Głównym celem stworzenia funkcjonalności była obsługa termometrów DS18B20, przy obsłudze których jesteśmy zmuszeni w pierwszej kolejności rozpocząć przetwarzanie danych a następnie po pewnym czasie odczytać pomiary.
Pewnie tą funkcję później wykorzystam do obsługi odświeżania menu w konsoli i na wyświetlaczu LCD.
Dzięki temu pętla główna będzie bardziej przejrzysta, na jej początku będzie można włączyć wszystkie wymagane zadania a w założeniu, w kolejnym etapie, poprzez np. terminal możliwe będzie sprawdzenie które zadania aktualnie są wykonywane - prosty task manager.

Kod jest jedynie pomysłem, pewnie będę dalej go modyfikował, zmieniał i poprawiał, ale to uzależnione jest od wolnego czasu.

task.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


task.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W pętli main należy dodać pętlę wykonującą poszczególne zadania.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zadania dodajemy w prosty sposób:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Natomiast w przerwaniu od timera inkrementujemy naszą flagę, dobrze by było nie korzystać ze zmiennych globalnych i stworzyć funkcję do inkrementacji zmiennej lokalnej i na jej podstawie sterować funkcjami. (np. zmienna lokalna ms1000).

Strukturę zawierającą informację o zadaniu można dowolnie zmodyfikować, przechowywać w niej warunki, nazwę funkcji w stringu, wyniki zadania itp.

Prosił bym o opinie dotyczące pomysłu. Wszelkie uwagi i porady mile widziane :)

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 1 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO