-
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.
Następne wpisy z tego wątku
- 23.08.20 16:09 Atlantis
- 23.08.20 18:43 Atlantis
- 25.08.20 18:00 Atlantis
- 25.08.20 18:42 J.F.
- 25.08.20 20:36 Atlantis
- 28.08.20 11:03 J.F.
Najnowsze wątki z tej grupy
- Pytanie o transformator do dzwonka
- międzymordzie USB 3.2 jako 2.0
- elektronicy powinni pomysleć o karierze elektryka
- jak szybko plynie prad
- Płytki Milkv-Duo
- Światłowód między budynkami
- POtrzebny bufor 3.3<>5V, jedonkieruowy, trójstanowy, wąski
- retro
- Bezprzewodowe polączenie Windows z projektorem
- rozklejanie obudowy
- Prośba o identyfikację komponentu
- Smart gniazdko straciło na zasięgu wifi?
- Smart gniazdko straciło zasięg wifi?
- nurtuje mnie
- dziwna sprawa...
Najnowsze wątki
- 2024-11-08 Belka
- 2024-11-09 pierdolec na punkcie psa
- 2024-11-09 Warszawa => Sales Executive <=
- 2024-11-09 Wrocław => SAP BTP Consultant (mid/senior) <=
- 2024-11-09 Warszawa => ECM Specialist / Consultant <=
- 2024-11-09 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-11-10 TVN donosi: Obywatelskie zatrzymanie policjanta (nie na służbie)
- 2024-11-08 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-08 Warszawa => Key Account Manager <=
- 2024-11-08 Szczecin => Key Account Manager (ERP) <=
- 2024-11-08 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-11-08 Wrocław => Senior PHP Symfony Developer <=
- 2024-11-08 Warszawa => QA Engineer <=
- 2024-11-08 Warszawa => QA Inżynier <=
- 2024-11-08 Warszawa => Key Account Manager <=