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



Teraz jest 29 sty 2025, o 02:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 17 lip 2014, o 11:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2013
Posty: 104
Pomógł: 0

Witam.
Mam problem z obsługą przycisku typu micro switch. Czytałem poradnik na blogu pt. "Drgania styków ? - to BAJKI". W części drugiej tego poradnik był przedstawiony prosty program do obsługi takiego klawisza. No więc wgrałem prosty program do migania diodą. Co się okazało ... U mnie programowy PULL-UP nie daje sobie rady. Gdy dotykam paluchem pinu przycisku to dzieją się różne rzeczy. Dodam, że filtrowanie mam również takie jak opisane na blogu. Dopiero jak zastosowałem sprzętowy PULL-UP (rezystor 4,7k) to problemu już nie było, ale ... klawisz nie zawsze reaguje tak jak powinien. Wiem, że to też zależy od klawisza. Użytkownik sunriver testował ten program i na chińskich switchach był problem, ale na tych lepszych było ok. Również użytkownik rezasurmar testował ten program na zestawie ATB i nie było problemu. Co może być nie tak? Dodam jeszcze tutaj ten prosty kod.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2014, o 17:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Bardzo możliwe, że pojawiają się szumy skoro linia PD5 jest w stanie wysokiej impedancji (Z).
Podciąganie ma dotyczyć tego właśnie pinu:

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

Natomiast PB7 nie jest podciągany do VCC, a ustalany jest na nim stan wysoki (to oczywiście moje "czepialstwo" w sprawie komentarza ;) ).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2014, o 17:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2013
Posty: 104
Pomógł: 0

atmel tak, wiem, ale jeśli ustawię:

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


to nadal są problemy. Kod który pokazałem na początku jest dla sprzętowego podciągania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2014, o 19:24 
Offline
Użytkownik

Dołączył(a): 22 mar 2014
Posty: 38
Lokalizacja: Bydgoszcz
Pomógł: 4

czemu masz: key_lock++, nie powinno być key_lock=0; ?

------------------------ [ Dodano po: kilkunastu sekundach ]

no i to ozcywiście PORTD |= (1<<PD5);

------------------------ [ Dodano po: 2 minutach ]

i jeszcze PORTB |= (1<<PD5);

------------------------ [ Dodano po: 2 minutach ]

miało być PORTD |= (1<<PD5); oczywiscie

------------------------ [ Dodano po: 4 minutach ]

i jeszce DDRD |= (1<<PD5)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2014, o 20:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

A jakim rezystorem podciągasz wejście do VCC ?
To co jest w środku w MCU ma kilkadziesiąt k. Daj 10 k do VCC. Jeśli przy takim podciągnięciu nadal jest problem, to znaczy że w kodzie jest źle.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2014, o 23:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2013
Posty: 104
Pomógł: 0

Jak to w kodzie jest źle jak kod jest praktycznie taki sam jak na blogu Mirka.
Dokładnie tutaj:
http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

Dodatkowo 2 osoby z forum testowało ten kod i działało dobrze na zestawie ATB. :)

Rezystor mam 4,7k, pisałem w pierwszym poście.

Przy każdej nóżce uC mam kondensator 100nF oraz 10uF. Zasilam to z lm7805i na wejściu mam 100uF oraz 100nF, na wyjściu to samo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2014, o 00:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Niepokojące jest to, że piszesz o niedziałaniu tego wbudowanego rezystora pull-up. Nigdy nie spotkałem się z tym, żeby to wewnętrzne podciąganie było za słabe do celów obsługi przycisku. Oczywiście, może w jakiś sposób ten fragment procesora może być uszkodzony... Jeśli tak jest to może i reszta komponentów tego portu jest uszkodzona. Proponuję spróbować na innym pinie, albo nawet na na innym porcie MCU. Bo jeśli jest uszkodzony to problem może nie tylko dotyczyć rezystora, ale innych funkcji portu też.

Efekt jaki opisujesz (zmiana stanu po dotknięciu palcem) jest charakterystyczny dla pinu w stanie HI-Z (wysokiej impedancji). Jest to tak jakby tej linii PORTD |= (1<<PD5); nie było.

Mnie przychodzą do głowy dwie rzeczy:
1. Uszkodzony pin (lub cały port).
2. Jeśli używasz Ecplipse i w oknie gdzie są projekty kursor stoi na innym projekcie niż to co masz w oknie edycji i tak na prawdę wgrywasz nie ten plik co chcesz.

Absolutnie nie obrażaj się za ten drugi punkt. To się czasem dzieje, ja tak miałem wiele razy i przez jakiś czas zastanawiełem się "o co kaman". :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2014, o 10:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2013
Posty: 104
Pomógł: 0

Sprawdzałem na nowym uC - to samo.
Projekt na pewno wybrałem dobry przy wgrywaniu. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2014, o 10:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Zmierz napięcie na pinie podciągniętym programowo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2014, o 11:19 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

pavel0910 napisał(a):
Gdy dotykam paluchem pinu przycisku to dzieją się różne rzeczy.


A mnie mocno niepokoi właśnie to ....

Chyba że czegoś nie rozumiem to wyjaśnij albo doprecyzuj mi paweł ok?

swa krótkie pytania ...


1. czy gdy nie DOTYKASZ PALUCHEM pinu procka do którego jest podłączony klawisz - to działa poprawnie ?

2. jeśli w przypadku nr.1 działa poprawnie - to po jaki gwincik dotykasz paluchem pinu ??? przecież powinieneś klikać palcem w główkę klawisza (sam przycisk) a nie pin procka czy ścieżkę pinu procka itp

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2014, o 15:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2013
Posty: 104
Pomógł: 0

Jeśli normalnie klikam w klawisz to raz działa, raz nie. Raz się dioda zaświeci i od razu zgaśnie itp.
Przecież nie ma takiej opcji żeby po podciągnięciu pinu do vcc programowo były problemy przy dotykaniu procka. Jak podciągnę rezystorem 4,7k to nie ma tego problemu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lip 2014, o 15:40 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27351
Lokalizacja: Szczecin
Pomógł: 1042

Dobra - ale ja mam taką zasadę - w ogóle nie dyskutuję o problemach gdy ktoś mówi o dotykaniu palcami bo to jest kompletnie bez sensu, i nawet nie chce mi się opowiadać dlaczego - szkoda tracić czas - lepiej poświęcić go na normalne rozwiązywanie problemu.

Za to to co piszesz, że przy programowym podciąganiu raz działa a raz nie (ale przy normalnym klikaniu bez żadnego tam paluchowania) to ok ... rozumiem problem i dlatego dopytam i podpowiem kolejną sugestię

- próbowałeś tego drugiego kodu z bloga z tego linku CZ.2 ..... gdzie zmienna key_lock jest 16-bitowa czyli uint16_t ???

bo wyraźnie tam piszę i pokazuję - że mogą się zdarzyć mikrosłicze dla których będzie trzeba znacznie wydłużyć ten czas i do tego jak można to zrobić ...

więc napisz czy to testowałeś czy nie ? a jeśli tak to pokaż ten swój kod poprawiony

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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