Pomiędzy układ który podałem, a licznik włącz bramki Schmitta. Przykładowo dwie szeregowo połączone z układu 4093 (ze zwartymi wejściami), albo dwa inwertery z 40106.
1HZ to troche za wolno, nawet dla flegmatyka :). Podziel te swoje 12MHz tak bys dostal okres okolo 10ms. Tyle mniej wiecej wynosi okres drgania kiepskich zestykow. Typowo wejsie styku robi sie tak, ze w stanie nieaktywnym na wejsciu masz logiczna '1'. Gdy przycisniesz przycisk, wejscie to zwierane jest do poziomu '0'. zatem by wykryc ze przez okres...
Jeśli wyeliminujesz drgania przycisku, to najprościej to zrealizować podając wyjście przycisku na wejście zegarowe jednego timera (bedzie on zliczał ilość wciśnięć), a drugi timer wykorzystać do odmierzania czasów 1s - dokładnie co 1 s należy kasować licznik pierwszego timera. Ot i wszystko.
Weź pod uwagę takie problemy: 1. zminimalizuj drgania styków przycisków (tzw. debouncing) programowo lub sprzętowo używając kondensatorów 2. przerwanie od enkodera wywołuj stanem FALLING lub RISING (Ty masz LOW co jest bardziej podatne na drgania przycisku zwieranego do masy) 3. zmienna globalna "time" użyta w przerwaniu powinna być typu volatile (Ty...
To co starasz się osiągnąć robi się eliminując drgania styku przycisku. Jak nie chcesz się w to zagłębiać to po prostu instalujesz gotową bibliotekę, jest ich od groma - bounce2, easy button, analog button, przy okazji nie będziesz musiał robić resetu całego układu tylko po to by zrobić kolejne cyknięcie zgrzewu. W zamian za ignorancję z obsługi drgań...
tzw drgania styków. daj kondensator 100nF między -wejściem sygnału z przycisku do scalaka- a masą.
żeby program działał tak jak napisałeś musisz wyeliminować drgania styków przycisku (poprzez np. dodanie opóźnienia) w przeciwnym razie tak na dobrą sprawę będzie loteria (po każdym włączeniu przycisku wyjście się załączy i wyłączy kilka razy i nie wiadomo czy stanie zostanie ostatecznie włączone czy wyłączone). Co do ASM to nie jestem w tym biegły.
Odczyt stanu przycisku powinieneś realizować kilkukrotnie w przerwaniu, aby wyeliminować drgania styków. Twoim problemem jest fakt iż podczas zdarzenia wywołanego przyciśnięciem przycisku, cały czas sprawdzasz jego stan i znowu wywołujesz akcję. Skorzystanie z dobrodziejstw przerwań rozwiąże problem.
Niestety takie coś nie zadziała ponieważ jest toś takiego jak drgania styków. Podczas wciskania/puszczania przycisku wygeneruje się wiele przerwań. Temat tego typu pojawia się raz w tygodniu więc rozwiązania szukaj tam. Już pomijam to, że nigdzie w pętli główenej/przerwaniu nie masz wyłączania diody;)
Pewnie to przez drgania styków.Program to interpretuje jako kolejne naciśnięcia przycisku i wychodzi z tego losowe wypełnienie.
A Twój program nie chce działać? Jaki jest problem. To co w programie masz nieprawidłowo to odczyt stanu przycisku. Procedura odczytu przycisku powinna przewidywać takie sytuacje jak drgania styków lub przypadkowe zakłócenia na linii przycisku. Jedną z możliwość odczytu przycisku jest: [syntax=basic4gl]If Wejscie = 0 Then Waitms 100 If Wejscie = 0 Then...
Drgania. Przy takich prądach styki nie mają prawa iskrzyć. :) Wydaje się, że przy takim prostym schemacie gry, poprawna maszyna stanów wyeliminuje problem drgań styków sama z siebie (drgania bedą tutaj równoważne "niezdecydowaniu" graczy). Rozrysuj dokładnie maszynę stanów, uwzględniając wszystkie możliwe zachowania graczy (naciśnięcie/puszczenie przycisku...
Witajcie, W oparciu o Atmegę8 zrobiłem sobie prosty sterownik. Odczytuję temp. z dwóch czujników ds18b20 i na jej podstawie steruje elektrozaworem. Chciałbym dodatkowo wprowadzić obsługę 3 przycisków. Problem w tym, że sam odczyt temp. z czujek powoduje pewne opóźnienia np. czas konwersji jest dosyć spory bo 750ms w związku z tym reakcja na przyciśnięcie...
Użyj przerwania timera (CTC) ustawionego na 5, 10 ms. W przerwaniu próbkuj przyciski n-razy. Np. 20x co 10 ms. Jeżeli stan przycisku w tych próbkach się nie zmieni - masz stan stabilny. To pozwoli wyeliminować drgania styków.
Metoda jest taka ze w momencie nadejscia przerwania od przycisku odpalasz timer, ktory odmierza kilka milisekund, po czym sprawdza czy przycisk nadal jest wcisniety. Jesli tak, to znaczy ze impuls pochodzi od faktycznego nacisniecia a nie od drgania po nacisnieciu. Dla pewnosci mozna zamiast 2 dokonywac 3 sprawdzen. Czas timera musisz dobrac doswiadczalnie.
Jeżeli boisz się przekaźników, to zastosuj przerzutnik (dowolny) połączony jako licznik modulo 2 (pierwsze naciśnięcie ustawi wyjście przerzutnika w stan wysoki a drugie w stan niski i tak w kółko). Na przycisku trzeba zastosować układ eliminujący drgania styku bo przerzutnik będzie szalał. Zależnie od tego co chcesz załączać to pewno i tak nie obejdziesz...
zaluzmy ze klawiatura jest podlaczona pod p1 w1-w2-w3-w4 pod p1.0 do p1.3 a l1-l4 pod p1.4-p1.7 ja ustawil bym mov p1,0xf0; mov r0,p1; mov p1,0x0f; mov r1,p1; add r0,r1; dodaj r0+r1 w r0 masz teraz kod przycisnietego przycisku jezeli beda same 11111111 to nic nie bylo wcisniete wyeliminuj drgania styków np przez kilku krotne sprawdzenie wcisnietego...
Ten schemat z diodą LED - tak nie robi się przycisku zmieniającego stan pinu uC. Założę się, że chyba wszyscy czytający post #8 mieli na myśli przycisk z jakąś rozbudowaną opcją sprzętowego tłumienia drgań. A Ty wstawiłeś LED i dziwisz się, że całość działa dziwnie. Zrób to tak: z pinu rezystor 10k do +5V (wiem - masz już w programie włączony pull-up...
500ms to trochę za dużo jak na drgania styków. To jest microswitch czy jakiś przycisk przemysłowy? Spróbuj wyzwalać przerwanie stanem niskim a nie zboczem opadającym. Ustawiając inny zegar nie spalisz chipu. Co najwyżej ustawiając niższy zegar niż dotychczas możesz mieć problemy z zaprogramowaniem jeśli nie zmienisz też częstotliwości w programatorze....
Koniecznie zadbaj o to, żeby wychodząc z tego przerwania jego flaga była wyzerowana, a wtedy to o czym kolega _marek_ mówi nie będzie miało miejsca. --- Podczas puszczania przycisku są zdecydowanie mniejsze drgania styków niż podczas jego przyciskania i o to mi chodziło. Poza tym reagujesz wciąż na zbocze opadające a tylko czekasz z powrotem na narastające,...
Mi chodziło o sytuację że dopiero po wciśnięciu dowolnego przycisku zostaje uruchomione opóźnienie. Ciągle w programie go nie ma, tylko przy odczycie klawiszy. Nie musi być duże, ale coś tam powinno być ze względu na drgania styków i nierówność wciśnięcia dwóch przycisków naraz. Trzeba zrobić parę prób co do jego długości. Ważne jest jak mówiłem sprawdzanie...
Witaj patrząc na schemat masz standardowe podłączenie przycisku pod procesor. Czyli switch jest z jednej strony podłączony do procesora a z drugiej strony do masy. Więc stan aktywny to niski, kondensator 100p jest równolegle do switcha w celu eliminacji drgania styku. Dodatkowo pin podciagnięty jest rezystorem R255 100k(ohm). Czyli na switchu powinneś...
Jeśli to jest dokładny schemat, to działa jedynie przypadkiem, a te diody tak podłączone w końcu spalą port lub same siebie. A sam problem może wynikać z drgania styków lub z tego, że się układ resetuje z braku filtrowania i ogólnie kiepskiego zasilania wynikającego z niepodłączenia wszystkich pinów.
Twoj problem w większości wynika z drgania styków. Maskowanie drgań styków jest dobrą (albo nawet niezbędną) praktyką ale problem jest chyba inny kiedy naciskam przycisk pętla while wykonuje się kilka razy No i prawidłowo, while "kręci się w kółko" kiedy warunek jest spełniony, czyli przycisk jest wciśnięty. Powyższa uwaga autora sugeruje, że instrukcje...
To 0V i 5V to zaciski zasilające (5V). Układ jest przystosowany do napięcia zasilającego zasilania od 3 do 15 V, jednak skoro w motorze masz takie napięcie jak opisujesz to powinieneś najpierw dokonać jego stabilizacji. Układ może posiadać do 10 wyjść. Po chwilowym naciśnięciu przycisku napięcie na danym wyjściu utrzymuje się aż do ponownego naciśnięcia....
Jj_Johnys : Wcisniecie przycisku daje ok. 100ms sygnalu? Rozne przyciski maja rozne dlugosci sygnalow? Jak dla mnie to przycisk zwiera w zaleznosci jak dlugo sie go przytrzyma, po za tym przy wciskaniu przycisku nastepuja drgania stykow ktore daja duzo szpilek i napewno nie osiagniesz zadnego konkretnego sygnalu o konkretnej dlugosci. Jesli chodzi...
Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
A co się stanie gdy ktoś włączy równocześnie UP i DOWN? Czy tak naprawdę możliwe jest jednoczesne naciśnięcie przycisków. W praktyce to nastąpi przełączenie stanu licznika w trudnym do określenia kierunku. Tak dokładnie to ten układ wejść UP DOWN nie jest jeszcze dokończony. On powinien być jeszcze wyposażony w układ eliminujący drgania styków. Bez...
Co do petli to czy przypisujesz przed nią zmiennej A wartosc 1? Czyli A=1 for A=1 to 5 .... Next A Jesli w petli masz poustawiane czekania, to przycisk za kazdym razem musi czekec az one miną i chyba stąd ten problem. Najprościej chyba zrobic petle sprawdzającą stan przycisku i potem to co sie ma wykonac. do if przyciskwcisniety then exit do else loop...
co do wejścia z pullup: kasujesz odpowiedni bit w DDR (ustawiasz jako wejście), a odpowiedni bit w PORT ustawiasz. co do kodu: losowo? może to być spowodowane przez 2 rzeczy: po pierwsze nie masz żadnego eliminowania drgania styków (jeśli takowe mogło by się pojawić), po drugie sprawdzasz nie przejście 1->0 tylko sprawdzasz, czy przycisk jest naciśnięty...
Witam, Fragment kodu to najprawdopodobniej opóźnienie czasowe 150 ms aby programowo zniwelować drgania styków przełącznika dołączonego bezpośrednio do portu IO mikroprocesora. Przydatne w rzeczywistym układzie w symulacji jest bezużyteczne i można usunąć. Częstotliwość mrugania diody jest w sekcji gdzie i =15000 oraz i=1000 ustaw tylko tam odpowiednie...
Witam. Wypróbuj to: [syntax=basic4gl]Ddrb = &B11111111 : Portb = &B00000000 Ddrd = &B1100000 : Portd = &B0011000 Dim Pomoc As Byte 'zmienna zliczająca wciśnięcia przycisku Do Debounce Pind.4 , 0 , Wlacz , Sub Debounce Pind.3 , 0 , Wylacz , Sub If Pomoc = 1 Then Portb.0 = 1 'w zależności od stanu zmiennej pomoc If Pomoc = 2 Then Portb.1...
Załóżmy, że to też błąd przy wklejaniu kodu (inaczej asembler zgłosiłby błąd). Powinno być R21 , a nie R121 . Być może to też błąd przy wklejaniu. Bity WGM12 , CS12 oraz CS10 nie znajdują się w rejestrze TCCR1A tylko w TCCR1B . Istotne jest jednak to, że ustawiając tylko bit WGM12 ustawiasz TIMER1 w tryb 4, czyli tryb CTC, w którym timer liczy od 0...
obsługa przycisku już jest wyżej, musisz tylko pamiętać o poprawnym skonfigurowaniu pinu do którego będzie podłączony przycisk: po uruchomieniu procesora każdy pin jest ustawiony jako wejście czyli wystarczy włączyć wewnętrzny rezystor podciągający "set portX.X". schemat będzie wyglądał tak (kondensator 100nF, żeby drgania styków nie przeszkadzały w...
Układ 1 podrasowany: http://obrazki.elektroda.net/92_12429334... Inwertery U1A i U1B tworzą przerzutnik dwustanowy. Inwerter U1C steruje przez rezystor R6 tranzystor włączający diodę LED i przekaźnika RL1. Przekaźnika nie można sterować bezpośrednio z wyjścia inwertera gdyż inwerter ma zbyt małą wydajność prądową (stąd też nagrzewanie się układu...
Radykalną metodą jest eliminacja drgań przez zastosowanie bramki Schmidta z obwodem RC eliminującym drgania.Dołączenie C równolegle do styków też może rozwiązać problem,ale skuteczność bardzo zależy od oporności źródła i obciążenia. Można też stosować uniwibratory,rejestry przesuwne itd. W dołączonym pliku wartości RC są przykładowe. Przyjmuje się że...
Witam, Mam pewien problem, mianowicie nie mogę sobie poradzić z czymś takim: mam podłączony przycisk pod PORTE.0 chcę, aby wyeliminować efekt drgania styku, chcę aby po naciśnęciu klawisza funcja umieszczona w pętli nieskończonej wykonała się tylko raz podczas pojedyńczego wciśnięcia klawisza, i do momentu kiedy klawisz jest wciśnięty nie wykonywała...
A co zrobić żeby kolejne kliknięcie zmieniło x na zero? To nie zadziała zbyt dobrze, bo przytrzymanie przycisku będzie ciągle zmieniać stan x na przeciwny. Zresztą taką zmianę szybciej można zrealizować za pomocą x^=1; Stąd też najlepiej PINC przypisać do jakiejść zmiennej tymczasowej i sprawdzać czy od ostatniego sprawdzenia stan przycisku uległ zmianie....
Musisz po wykryciu wciśnięcia przycisku czekać w pustej pętli na jego puszczenie. ...uprzedzając pytanie "jak" wrzucam moją propozycję kodu, przejrzyj, przemyśl, dorzuć do swojego programu. [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 Config Lcd = 16 * 4 Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7...
Jak chcesz łatwo wyeliminować drgania styków to musisz mieć opóźnienie, 50ms powinno wystarczyć np. możesz zrobić taką funkcję do odczytu klawiszy: #define KBD_IN P3 ///tu definiujesz tylko gdzie masz podpięte przyciski i ich nazwy #define do_gory P3_4 #define do_dolu P3_3 #define prgm P3_6 #define SW3 P3_5 //np SW3 podpięty pod pin 5 portu P3 #define...
Teraz spłodziłem coś na chacie w bascomie ;-) Może w końcu ta koncepcja ruszy.... uwzględnia drgania styków, działa na innej zasadzie... powinna byc odporna na wszelkiego rodzaju czasy między puszczeniami wciśnięciami itp... w przerwaniu co 10ms sprawdzamy stan przycisku zadziałanie przycisku następuje najwcześniej po 10 jego sprawdzeniach (po 100ms)...
Twój układ reaguje na puszczanie przycisku ze względu na to, że przycisk zwiera do masy i dodatnie zbocze powodujące zliczenie pojawia się na wejściu zegarowym drugiego przerzutnika dopiero w momencie puszczenia. Pierwszy przerzutnik jest wykorzystany jako bramka nienegująca bez możliwości uzyskania negacji, więc żeby to zmienić, przycisk musi zwierać...
Dziękuje za takie zainteresowanie moją skromną osobą:) DS18B20 do pomiaru może być? Może, mierzy do 125 stopni czyli ma zapas. Oczywiście będzie on montowany na zewnątrz naczynia i wypadało by porównać jego wskazanie z termometrem zanurzonym w w wodzie by zobaczyć jaka jest różnica wskazań i ewentualnie uwzględnić poprawkę. Czy dobrze rozumie że w...
https://obrazki.elektroda.pl/9337556500_... Pewna wyjątkowa osoba zasługiwała na równie wyjątkowy prezent, a że nie jestem fanem kupowania niespodzianek, postanowiłem "zrobić" coś własnym rękami. 1. Wstęp, motywacja 2. Zarys konstrukcji 3. Płytka z diodami - projekt (łączenie diod) 4. Płytka z diodami - projekt (zatrzaski) 5. Eagle...
https://obrazki.elektroda.pl/3666007400_... Dziś na tapecie znajdzie się dzwonek do drzwi o nazwie kodowej MIK64, który nabyłem dawno, dawno temu, nie wiedząc do końca nawet, co to jest. Niedawno osoba, od której go wtedy kupiłem odezwała się do mnie z prośba o zbadanie go z uwagi na całkowity brak informacji w sieci, więc postanowiłem...
[syntax=c] #define Button (1<<PB0) #define Button_PORT PORTB #define Button_PIN PINB #define Button_DDR DDRB volatile _Bool Key_Pressed = 0; // flaga wciśniętego przycisku [/syntax] [syntax=c] Button_DDR &= ~(Button); //port - wejście Button_PORT |= (Button); //włącz pull up [/syntax] [syntax=c] ISR(TIMER0_OVF_vect)//przerwanie wywoływane...
Powodem są zapewne drgania styków przycisku. Dodanie kondensatora 10nF równolegle do przycisku powinno załatwić sprawę.
Jeśli masz taki sam objaw jak w poście#8 to przyczyna tkwi w wysuwającym się akumulatorze - zaczep już dobrze nie trzyma i w takich pozycjach przy wierceniu z udarem drgania powodują lekkie wysunięcie aku i brak zasilania urządzenia. Przy dociśnięciu aku wszystko wraca do normy i maszyna działa poprawnie.
http://obrazki.elektroda.pl/4662811600_1... Kolejnym prostym projektem, jaki postanowiłem opublikować, jest higrometr do ultradźwiękowego nawilżacza powietrza.W zeszłym roku podczas mrozów wilgotność spadała tak mocno, że mimo mojej generalnej odporności na różne dziwne warunki, stawało się to nieznośne. Ciągłe uczucie zapchanego nosa,...
https://obrazki.elektroda.pl/1761046600_... Pokażę tu jak uruchomić z Arduino czterocyfrowy wyświetlacz 7-segmentowy sterowany poprzez rejestr przesuwny 74HCT164 i cztery tranzystory BC546. Płytka z wyświetlaczem znów będzie odzyskana z elektrośmieci. Będzie to już kolejny temat, w którym uruchamiam wyświetlacz, gdyż omawiałem już...
drgania przycisku kondensator zabezpieczenie przycisku zapalarka przycisku
przetwornik pomiarowe skrypty openocd system dostęp wejście
ładowarka makita ładowarka makita
Jak działa układ mute w odtwarzaczu CD? Bull 624 ESA - Błąd U1.02, brama nie przesuwa się