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 w 2025? 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 7 kwi 2025, o 01:04


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 30 gru 2015, o 07:48 
    Offline
    Nowy

    Dołączył(a): 19 sty 2013
    Posty: 22
    Lokalizacja: Pruszcz Gdański
    Pomógł: 0

    Muszę zweryfikować sygnał wejściowy PWM - obecność/wypełnienie, i w zależności od wyniku dalsze operacje.
    Pytanie tyczy się czy robię to prawidłowo i czy są prostsze sposoby, jeżeli tak to czy mogę liczyć na podpowiedź.
    W dotychczas budowanych układach robiłem to tak:
    Sygnał wejściowy to PWM 100Hz z wypełnieniem 80% (8ms=1, 2ms=0) - jeżeli pojawi się taki sygnał to
    wykonuję dalsze operacje, jeżeli pojawi się pojedynczy impuls (diagnostyka)
    trwający 3ms nie podejmuję dalszych czynności.


    Kod:
    If PIND.1=1 AND A=0 THEN                                               'sprawdzam czy pojawia się sygnał wejściowy
    A=1                                                                    'zmienna A służy do określenia stanu operacji
    AL=0                                                                   'zmienna AL to licznik czasu, inkrementacja odbywa się
    END  IF                                                                  'w przerwaniu co 1ms
    IF PIND.1=0 AND A=1 THEN A=0                                           'jeżeli sygnał jest zbyt krótki zeruję procedurę - A=0
    If PIND.1=1 AND A=1 AND AL>4 THEN                                      'jeżeli sygnał wejściowy jest dłuższy od 6ms to uruchamiam
    A=2                                                                    'dalsze procedury
    PORTC.1=1                                                              'włączam przykładowy kanał C.1
    END IF
    IF PIND.1=0 AND A=2 THEN                                                'sprawdzam czy nie zanika sygnał PWM
    A=3
    AL=0                                                                    'zeruję licznik AL
    END IF
    IF PIND.1=1 AND A=3 THEN A=2                                            'jeżeli występuje PWM wracam do poziomu A=2
    IF PIND.1=0 AND A=3 AND AL>4 THEN                                       'jeżeli sygnał wejściowy na D.1=0 powyżej 6 ms
    A=0
    PORTC.1=0                                                               'wyłączam kanał C.1
    END IF


    Mam nadzieję że jest to zrozumiałe i w miarę przejrzyste.
    Do kontroli jednego wejścia z PWM wykorzystuję dwie zmienne i zaprzęgam przerwanie do inkrementacji
    licznika AL. W sytuacji gdy mam pięć kanałów do obróbki to robi się 10 zmiennych do samej ich obsługi.
    Czy jest jakiś prosty sposób na realizację takich operacji?



    Ostatnio edytowano 5 sty 2016, o 09:35 przez Bras, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 gru 2015, o 11:55 
    Offline
    Moderator zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 18 lip 2012
    Posty: 3225
    Lokalizacja: Kraków - obok FAB5 ATMEL'a
    Pomógł: 91

    topic7402.html

    _________________
    http://www.jaglarz.info



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 gru 2015, o 12:12 
    Offline
    Nowy

    Dołączył(a): 19 sty 2013
    Posty: 22
    Lokalizacja: Pruszcz Gdański
    Pomógł: 0

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



    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: 3 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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