eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika74HCT245 jako port wejściowy - nie działa, choć powinienRe: 74HCT245 jako port wejściowy - nie działa, choć powinien
  • Data: 2020-08-23 15:38:45
    Temat: Re: 74HCT245 jako port wejściowy - nie działa, choć powinien
    Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Z ciekawości wykonałem nową wersje modułu, w którym układ 74HCT245 jest
    podłączony dokładnie tak samo, jak w tym drugim, działającym urządzeniu.
    Przy okazji poprawiłem trochę sposób prowadzenia ścieżki zasilania i
    pola masy. Okazało się jednak, że to nie tutaj leżała przyczyna.

    Zacząłem jeszcze raz analizować sytuację i nagle mnie olśniło - byłem w
    stanie odczytywać wartość portu i to nie powodowało problemów. Jednak
    gdy tylko stosowałem swoją bibliotekę (która również czyta z tego portu)
    urządzenie zaczęło działać niestabilnie i resetować się. Istniała jednak
    jeszcze jedna różnica - testowa funkcja odczytująca wartość portu była
    wywoływana raz na sekundę. Natomiast funkcja sprawdzająca wartość
    przycisku jest wywoływana w każdym przebiegu pętli.

    Zrobiłem więc eksperyment - ustawiłem programowy timer, powodujący
    wywoływanie funkcji key_update() co jakiś 40 ms. Okazuje się, że problem
    przestał występować. Nie pojawiają się też "fałszywe" wciśnięcia
    przycisków. Na dobrą sprawę mógłbym to tak zostawić, nawet upraszczając
    bibliotekę, bo to opóźnienie załatwia sprawę debouncingu.

    Tyle tylko, że sprawa nie daje mi spokoju. Dlaczego tak się dzieje?
    Dlaczego w drugim urządzeniu, opartym na tej samej architekturze, mogę
    wywoływać funkcję key_update() z pętli głównej i nic się nie dzieje, a w
    drugim występują takie problemy i trzeba stosować timer?

    Mogę od razu obalić teorię, która w pierwszym momencie przychodzi do
    głowy - to działające urządzenie ma jeszcze mniej "zajętą" pętlę główną,
    więc nie ma tam niczego, co mogłoby robić za naturalne opóźnienie.

    I jeszcze jedno: funkcja key_update jest wywoływana kilkukrotne - za
    każdym razem przyjmując jako argument adres do struktury odnoszącej się
    do jednego z przycisków. Przy każdym wywołaniu sprawdzany jest port.
    Jednak wielokrotne wywołania nie są najwyraźniej problemem same w sobie,
    bo wspomniany wcześniej timer programowy również wywołuje funkcję
    trzykrotnie.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: