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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 31 lip 2025, o 12:16


    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 ] [ Zaznacz wszystko ]
    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