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...
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.
[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...
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...
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.
Drgania styków: http://mikrokontrolery.blogspot.com/2011... A drugi problem, to nie podałeś typu mikrokontrolera stąd nie wiemy, czy posiada rezystory pull-up, pull-down, a może oba rodzaje. Od tego zależy kierunek podłączania przycisku.
Jeżeli używasz liczb zmiennopozycyjnych, to problem drgań przycisków masz automatycznie z głowy. Zastosowanie tutaj zmiennego przecink to chory pomysł - te operacje zajmują większość czasu procesora i większość pamięci Flash. Mopesz np. trzymać temperaturę jako liczbę całkowitą w dziesiątych częściach stopnia.
Zapoznaj się z [url=http://mikrokontrolery.blogspot.com... dedykowanym dla STM32.
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...
Wystarczy jak dasz typową wartość np10k. Jeśli ten układ ma sterować sygnałem zegarowym to musi być jeszcze układ usuwania drgań styków przycisku.
O i dzięki schematowi od razu widać błąd: http://obrazki.elektroda.pl/6463515500_1... Przyciski podłącz do GND, a nie Vcc, a w programie włącz pull-up, i ustaw reakcję INT na zbocze opadające. Tylko czy wiesz dlaczego Twój układ nie działał? Osobna sprawa do drgania styków przycisku: http://mikrokontrolery.blogspot.com/2011...
Można też wlutować pomiędzy styki przycisku kondensator. Ja stosowałem 100nF, ale możliwe, że trzeba będzie poeksperymentować z wartością.
W sumie najbardziej mnie interesuje czy do eliminacji drgań styków przycisku większa pojemność nie zaszkodzi... Z tego co czytam, nic się nie stanie :)
Brak oczekiwania na zwolnienie przycisku i eliminacji drgań styków.
Układ z pierwszego schematu nie koniecznie będzie pracował poprawnie z powodu braku układu eliminacji drgań styków (przycisku). I jeszcze może takie pytanie trochę nie na miejscu, ale czy podłączyłeś zasilanie do układu 4013 (nóżka 7 i 14) ?
ż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.
Kiedyś czytałem i zostało w głowie. Zerknij http://mikrokontrolery.blogspot.com/2011... Własnie o Reset poczytaj.
Hint: timer, przerwanie timera. drgania styków, denouncing Dodano po 1 http://mikrokontrolery.blogspot.co.uk/20...
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ń...
Witam, W tym temacie jest coś właśnie w tym rodzaju. http://www.elektroda.pl/rtvforum/topic11... Jeżeli wejście zegarowe będzie wyzwalane przyciskiem to trzeba zadbać o eliminację drgań styków tego przycisku, by nie występowało przełączanie tego licznika w sposób nie przewidywalny. Wejście reset tego licznika w Twoim przypadku należy połączyć...
Z tego co piszesz może wynikać, że powinieneś wykrywać zmianę stanu "był puszczony - jest wciśnięty" (albo odwrotnie), tak czy siak należy zamaskować drgania styków.
Na kostce 4013. Na wejscie koniecznie dodaj kondensator i opornik jako układ odkłucający drgania stykow.
Drgania występują również przy zwalnianiu przycisku, stąd chwile zapalenie wszystkich diod.
Powodem są zapewne drgania styków przycisku. Dodanie kondensatora 10nF równolegle do przycisku powinno załatwić sprawę.
W realu dasz przekaźnik bez rezystora i będzie ok. Ale w realu może pojawi się za to inny problem związany z drganiami styków twojego przełącznika (przycisku). Tego na na wejściu przerzutnika. A przez to niepoprawne przełączanie się przerzutnika.
Odpowiedzią na twoje kłopoty jest instrukcja DEBOUNCE, gdyż: 1. Potrafi wywoływać podprogramy przy dowolnym stanie linii portu, 2. Przycisk raz naciśnięty i puszczony wywołuje podprogram tylko jednorazowo, 3. Filtruje drgania styków przycisków które potrafią narobić niełego bigosu początkującym, 4. Jest elegancka, pewna i uszyta "na miarę". PS. Atmega...
Wykonałem prosty układ przekaźnika z podtrzymaniem. Coś tu się nie zgadza. Jeśli przekaźnik jest z podtrzymaniem, to drgania styków przycisku nie mają znaczenia. Po pierwszym impulsie ma się załączyć i trzymać.
(at)ElektrodaBot Napisz kod dla arduino uno w którym będziemy przełączać kolejno 3 wyjścia d1,d2 i d3 jednym przyciskiem podłączonym do wejścia d6 wraz z zapobieganiem przed drganiem przycisku. Program musi posiadać pamięć ostatniego stanu po wyłączeniu zasilania.
No i co z tym automatem? Jestem pewien, że można wyeliminować wpływ drgań styków przed odpowiedni projekt automatu. Np: state Initial { entry/set_led(orange); button_yellow and button_blue -> RandomWait; } state RandomWait { entry/set_led(red); entry/set_timer(500ms + random()); exit/clear_timer();...
Przez UART nie możesz przesyłać danych bez żadnych przerw - musisz co jakiś czas odczekać. W TWoim przypadku sensownie byłoby czekać do zmiany położenia enkodera i transmitować nową daną po wykryciu zmiany. Przy zmianach położenia możesz mieć wahnięcia podobnie jak przy drganiu styków przycisków - wypadałoby to programowo odkłócić. Poza tym zwróć uwagę...
Witam. Układ na dowolną ilość przycisków (z umiarem :D ) można zrobić na przerzutnikach typu D wyzwalanych zboczem (4013). Podobne tematy były już na forum, a to moja najnowsza propozycja: http://obrazki.elektroda.net/54_12375784... Narysowałem tylko trzy przyciski, ale układ można oczywiście rozbudować "dokładając" kolejne przyciski i przerzutniki....
Na temat debouncingu poczytaj [url=http://www.elektroda.pl/rtvforum/to... temat. Warto.
hmmm a wiesz jak się programowo obsługuje zwykły przycisk ? jak się eliminuje skutki drgań styków ? bo przecież tam własnie stosuje się opóźnienia. Wykorzystaj to.
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...
Raczkuje z programowaniem PLC dlatego pytam jak najlepiej napisać program w S7 dla przycisku START aby wykluczyć drgania własne przycisku. Czy program poniżej jest wystarczający? czy byście go zmodyfikowali? Poniższy program nie zadziałał :( ktoś ma jakiś pomysł. A I0.0 // start z pushbutton L S5T#8s SF T2 A ( O T2 O I0.1 // start z panela ) = M 300.1...
... i pakowanie 16 kondensatorów - można, ale lepiej zrób to programowo. http://mikrokontrolery.blogspot.com/2011...
Pewnie to przez drgania styków.Program to interpretuje jako kolejne naciśnięcia przycisku i wychodzi z tego losowe wypełnienie.
Można jeszcze dać kondensator aby sprzętowo eliminować drgania styków.
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;)
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.
Ad.1. W linku, który wskazałem odczytujesz stan pinu: [syntax=c] val = digitalRead(inPin);[/syntax] przypisując zmiennej val stan pinu. Stan pinu może być HIGH lub LOW wiec sprawdzasz zmienną na przykład tak: [syntax=c]if (val == LOW) { // gdy przycisk wciśnięty }else{ //gdy przycisk nie jest wciśnięty. }[/syntax] Kod dla przycisku zwierającego do GND...
Drgania przycisków załączających uzwojenie nie mają wpływu na dzialanie przekażnika, gdyż bezwładność kotwicy jest bardzo duża w porównaniu z drganiami styków załączających uzwojenie przekażnika.
Programy do symulacji nie uwzgledniaja drgan stykow. Daj na wejscie 4017 tzn za dioda uklad odklucajacy. Opis problemu i przykladowe rozwiazania np tutaj http://mikrokontrolery.blogspot.com/2011... Druga sprawa - diode do tlumienia przepiec z przekaznika podlacza sie rownolegle do cewki katoda diody do plusa.
Może to być spowodowane drganiami przycisku. Spróbuj przycisk podłączyć tak http://1.bp.blogspot.com/-T13A998oTOs/Tq... Wartość R8 10kΩ.
Jest to normalne w przypadku przycisków... Drganie styków powoduje pojawienie się więcej niż jednego zbocza... Poczytaj na forum o niwelacji drgań styków...
tzw drgania styków. daj kondensator 100nF między -wejściem sygnału z przycisku do scalaka- a masą.
[syntax=c]while(1) { if(naciśnięto_przycisk) { n = n + 1; if(n > 14) n = 0; //tej linijki brakuje u Ciebie i n przekracza 14 . .//wyświetlasz liczbę . _delay_ms(50); //drgania styków po wciśnięciu while(przycisk_jest_wciśnięty); //czekamy aż przycisk zostanie zwolniony _delay_ms(50); //drgania styków po zwolnieniu } }[/syntax] Oczywiście musisz trochę...
Musisz zastosować dzielnik przez dwa https://www.electronics-tutorials.ws/cou... . Kolejne naciśnięcia przycisku, wyzwalają na przemian działanie przekaźników z podtrzymaniem. Będą potrzebne dwa tranzystory, dwie diody, układ scalony przerzutnika D CD40174 albo 74HC74, trzy rezystory i kondensator zapobiegający drganiom przycisku. Z jakiego...
Ja bym sprawdził kwarc i kondensator który jest do kontroli drgań przycisku można założyć większy, Co do wsadu i płytki US51 posiadam wsad który sam napisałem działa w 100% Pozdrawiam elektrolab.pl
Wydaje się, że powinieneś w pierwszej kolejności prawidłowo zrealizować maskowanie drgań przycisków, czyli za pomocą timera. Niestety timery będą mi potrzebne do innych celów Timery dość spokojnie mogą realizować kilka różnych funkcji.
Za to tym, co na pewno należy zrobić w przerwaniu timera, jest badanie stanu i eliminacja drgań przycisków. Eliminacja drgań styków w przerwaniu timera i na dodatek na pewno. Kiepska idea. Albert
przycisk zwierał do masy Przycisk nie daje jednego impulsu - są drgania styku.
Zliczanie impulsów z drgań przycisków, które zwykle są eliminowane w procedurze debouncingu, można wykorzystać do realizacji ziarna generatora pseudolosowego. Stanowi to jakiś nieprzewidywalny element zależny od warunków fizycznych. Nie rozumiem po co umieszczasz w tytule swoich projektów "Układ za 1zł" skoro tak nie jest. Poza tym, to kojarzy się z...
Możesz równolegle do przycisku dać kondensator kilkadziesiąt nF. Zapobiegnie zakłóceniom i drganiom styków przycisku.
Witaj. Zacznij od na przykład tego: http://mikrokontrolery.blogspot.com/2011... i zaglądnij także do spisu treści oraz oczywiście datasheet mikrokontrolera. 1. Nie jeśli jest zasilany także z 5V. 2. tak, ponieważ włączasz wewnętrzny rezystor pull-up, który wymusza jedynkę na wejściu (pinie). Zwierając przyciskiem pin do...
Witam :) A ja nie będę kolegi odsyłał do żadnych linków, tylko zaproponuję układ, który "na szybko" narysowałem... http://img354.imageshack.us/img354/2885/... Dodatkowo zabezpieczyłem układ przed drganiami styku przycisku. Zaraz po uruchomieniu układ 4017 podaje prąd na wyjście 1, a po złączeniu pinu 14 do masy przez switch'a,...
Ad.1 - Najprościej podłączyć go tak, jak opisano np. tutaj: http://mikrokontrolery.blogspot.com/2011... Ad.2 - Poprawne, o ile zapewnisz wewnętrzne (programowe) podciągnięcie pinu (pull-up). Ad.3 - Moim zdaniem - jest "dziwne", choć teoretycznie poprawne to rzadko stosowane. Po co ten rezystor? Zapewnia zewnętrzne...
Switche możesz podłączyć bezpośrednio, tak aby zwierały pin procesora do masy. W porcie P0 (lub P1 - nie pamiętam) nie ma rezystorów podciągających, więc należy zastosować rezystory (np. 10k) po między +5V a pinem procesora. Drgania łatwo wyeliminować programowo, wystarczy sprawdzić, czy przycisk jest wciśnięty. Jeśli tak, to po około 50ms należy powtórnie...
Ponieważ masz podłączony kondensator do pinu RESET warto dodać do przycisku szeregowo rezystor około 330Ω oraz diodę do Vcc: tutaj wyjaśnienie dlaczego
Pierwszy schemat nie pokazuje jak przyciski są podłączone (nieopisane połączenia z lewej strony schematu). Na dolnym opisałeś je jako +5V i masa. Czy tak mamy rozumieć pierwszy schemat? Jeżeli tak, to nie trzeba żadnych tranzystorów, a jedynie napisać odpowiednio program dla pierwszego schematu. Ale musisz poznać zjawisko zwane drganiem styków i jak...
wykluczyc drgania mozesz za pomoca funkcji debounce, albo tak: if s1=0 then 'przycisk jest wcisniety waitms 45 ' czekaj az mina drgania if s1=0 then ' gdy przycisk jest nadal wcisniety to zrob: end if end if Pokaz (najlepiej na schemacie) lub wyltumacz jak masz podlaczony przycisk do procesora. Poza tym wytlumacz mi, co dokladnie ma robic twoj kod...
podczas odczytywania napięcia wejściowego z pinów analogowych (GPI: 34,35,36,39) Te GPIO nie mają wbudowanych wewnętrznych rezystorów pull-up czy pull-down, więc mogą pracować tylko w trybie INPUT. Jeżeli chcesz podłączać do tych wejść przyciski, to muszą być one wstępnie spolaryzowane przez użycie zewnętrznych rezystorów pull-up do 3V3 lub pull-down...
W takim przypadku ja zrezygnowałbym z INTów i przeszedł na zwykłe skanowanie klawiatury za pomocą timera i przerwania z niego - łatwo zrobisz eliminację drgań styków.
Zadziałało, wszystko zapisało się w pamięci głównej. Dlaczego sposób się nie sprawdzi? Dodałem do niego jeszcze opóźnienie 20ms eliminujące drgania fizyczne przycisku i wszystko działa jak należy.
w tym kawałku należy po jednokrotnym dodaniu sprawdzic czy przycisk wrócił do stanu wyjściowego main: sbis PIND, 0 rcall dodaj loop1: ;tu przydałoby się jeszcze opóźnienie eliminujące trochę drgania przycisku sbis PIND,0 rjmp loop1 rjmp main
W INT0 - STARTUJ dodałbym DISABLE INT0, a dopiero potem w INT1 komendę ENABLE INT0 Drgania styku "startującego" spowodują ci wielokrotne wywołania INT0 i zerowania timera i fałszowanie czasu. Drgania przycisku stopującego nie wpływają na pomiar i można je zignorować.
Chce się podłączyć w środku. Niby klasycznym, ale jednak nie do końca. Przypuszczam, że drgania takiego "przycisku" na tarczy mogą być większe niż zwykłego mechanicznego naciskanego palcem.
Robi się to po to, żeby spoczynkowo na wejściu procesora panował stan wysoki, który zmieni się na niski po wciśnięciu klawisza, który zwiera pin MCU do masy. Jest to układ zwyczajowy, gdyż większośc mikrokontrolerów posiada możliwość programowego włączenia rezystora podciągającego do Vcc - w takim układzie na zewnątrz potrzebny jest tylko klawisz do...
Czy nie ma tam problemu z drganiami zestyków przycisków? Jak to zostało rozwiązane?
A może jest to kwestia drgań przycisków? - niby konkretnie wciskamy dany przycisk, a gdyby obejrzeć pod oscyloskopem stan danych pinów to pokazały by się "szpilki" zamiast ładnego zbocza opadającego/narastającego. Problem raczej dość powszechny ;) Można programowo to próbować skorygować, np: [syntax=c] ... unsigned int a=0x0000; while { a=a<<1;...
Enkoder to mechanicznie zwykły przycisk. Ma też wszystkie wady przycisku, czyli np. drgania styków. Wiele enkoderów na jeden "przeskok" generuje 2-4 impulsów i oczywiście czasy trwania poszczególnych faz zależą od szybkości kręcenia. Przejrzyj darmowe przykłady do książek w mojej stopce - masz tam przykłady obsługi enkoderów w oparciu o ATMega i XMEGA.
Po pierwsze jak podłączony jest przycisk - napisz dokładnie, bo tutaj prawdopodobnie leży Twój problem.. Po drugie zapoznaj się z drganiami styków: http://mikrokontrolery.blogspot.com/2011...
Układ prosty jak drut, tylko jedno ale, jak wygasza drgania styku, przycisku ? Pozdrowka
Nio zobaczymy. Doszlismy wkoncu do wniosku ze zliczanie bedzie poprzez port uC a wyswietlanie w przerwaniu timera zeby nie migotaly wyswietlacze. Przy zliczaniu przez timer zlicza on wszystkie drgania przycisku czy przekaznika a RC sie nie sprawdzi bo musi to byc bardzo uniwersalny licznik.
Tak dla upewnienia się: Drgania styków przycisków masz rozwiązane?
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...
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...
https://www.youtube.com/watch?v=v8KXa5uR... w tym filmie jest wyjaśnione jak budować taką funkcję ze switch case na przykładzie przycisku i eliminacji drgań styków. Do przycisków akurat jest też mnóstwo gotowych bilbliotek, polecam np. OneButton - obsługuje wciśnięcie, podwójne, przytrzymanie i jego czas.
No i przede wszystkim czekaj na zwolnienie przycisku bo w pętli odbierze go kilka razy. I nie zapomnij o drganiach zestyków przycisków.
Da się zrobić przyciskiem. Podłączasz na stałe do napięcia stanu wysokiego przez opornik, oraz przyciskiem zwierasz do masy. Albo odwrotnie - opornik do masy, przycisk do wysokiego. Różne układy CMOS mają różne poziomy napięć stanów. Prosty przycisk może mieć drgania styków przy włączaniu/wyłączaniu co spowoduje podanie kilku impulsów (H, L, H, L, ...)...
Dobrze a jeżeli użyłem przycisku fizycznego który jest podłączony do pinu D4. To jak napisać kawałek kodu (Arduino IDE) który po przyciśnięciu przycisku odejmie od zmiennej x jeden? W skrócie: - jeśli wykryłem wciśnięcie przycisku to... - sprawdzić czy x nie jest już wartości 0, jeśli nie to... - zmienna x = x - 1 lub po prostu x-- - wyświetl nową...
Poza tym zakładam, że siłownik/klapa otwiera się do odcięcia krańcówki, następnie idzie w drugą stronę po naciśnięciu przycisku. Ale wtedy nie katujesz napędu bo wyłączyła go krańcówka. Proszę schemat; https://obrazki.elektroda.pl/9685258300_... I objaśnienie; Po włączeniu zasilania 4017 dostaje zasilanie przez stabilizator na diodzie...
Ok , a tak bez analizy mógłbyś mi powiedzieć jaki wpływ na działanie Atmegi8 mają delaye :( programy są napisane w taki sposób że ich działanie przynajmniej w symulatorze jest poprawne, w wersji rzeczywistej program uruchamia sie po wciśniciu jak napisałem i przelatuje przez wszystkie podprogramy wszystko świeci jak ma świecić tylko nie działa to w...
Pomiędzy pinem PD3 a masą jest 5,06V przy nieprzyciśniętym, 0V przy przyciśniętym, natomiast prąd po zwarciu przycisku ≈ 0,14mA. Funkcję obsługi przerwania zrobiłem taką: ISR(INT1_vect) { LED_ON; //dioda na PD5 przerwanie=1; } Nawet jeśli wystąpi zjawisko drgania przycisku, to chyba dioda powinna tak czy siak się zaświecić?
"Wykrywany kod naciśniętego przycisku"? Chyba kod wykrywający naciśnięcie przycisku. Nie bardzo rozumiem jak to ma działać. Są 3 zmienne pomocnicze. Temp0, M1 i M2. I z tego co widzę to jedynie gwarantuje jednorazowe wykonanie się Gosuba podczas trzymania przycisku. A do tego wystarczy jedna zmienna. Ale to nie ma zabezpieczenia przed drganiami przycisków....
(at)R-MIK Pisz jaśniej, bo nikt nie wie o co ci chodzi. ISR bez atrybutów nie odblokowuje przerwań. Jawnie musisz zadeklarować NO_BLOCK, aby kompilator wstawił sei na początek. W tym przypadku jest to kompletnie bez sensu, bo skończymy ze względu na drgania przycisku z wielokrotnie wywołanym ISR, a cała funkcja będzie musiała być napisana z umożliwieniem...
Kolego do przycisku użyj funkcji debounce i nie będziesz miał problemu z drganiem styków przycisku. Może napisz jak ma działać to urządzenie bo według mnie masz dziwny ten kod
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...
Matryca z komparatorami jest jakimś matrycowym dzielnikiem napięcia Nie. Jest to układ stricte cyfrowy. Dla uproszczenia narysowałem tylko jeden przycisk i częśc komparatorów. W stanie spoczynkowym napięcia na wejściach są jak na rys. i na wyjściach są "1" logiczne. Po naciśnięciu przycisku na wejściach od strony przycisku ustawia się połowa zasilania,...
Nie ten dział. uC są nieco wyzej :) Zrób opóźnienie wykozystując Timer. Konkretnie dodaj zmienna, jesli ma np wartosc 0, po wcisnieciu przycisku dzieje sie jakies tam zdarzenie, a zmienna przybiera inna wartosc. Po zadanym czasie przerwanie Timer'a przywraca stan zmiennej na '0' i mozna klikac od nowa.
Ok. Ale jest jeszcze jedna sprawa, otóż w układzie tam gdzie są przyciski od nastawiania czasu występuje coś takiego chyba jak drgania styków, przyciski podłączyłem wg. tego schematu po prawej: https://obrazki.elektroda.pl/3630341200_... jednak przy rozwartym przycisku minuty lub godziny zmieniają wraz z sekundami a przy wciśniętym...
Nie wiem, czy Twoja metoda obserwacji sygnałów jest poprawna, ale podłączanie przycisku bez eliminacji drgań pod wejście przerwania jest przepisem na kłopoty. Jeśli chcesz testować tego typu układ, to musisz sobie zrobić generator czystych impulsów. Przykładowo: przycisk pod PB4, generacja impulsu na PB3, które zwierasz z PB1. W pętli głównej odczytujesz...
Tak dla rozjaśnienia: http://mikrokontrolery.blogspot.com/2011... To co opisujesz wygląda na strasznie skomplikowane, a w rzeczywistości jest baaaardzo proste. Nie liczymy ilości drgań bo na pewno jest przypadkowa, ale czas w którym styk jest stabilny na jednym stanie. Jak długi czas? To już zależy od styków albo...
jeszcze jedna uwaga do kodu: ISR(INT0_vect) { ... for(a=0; a<500; a++) if (bit_is_clear(PINB, 2)) count++; if(count>=150) switch_mode(); ... } Poradziłeś sobie z drganiami przycisku, ale na przyszłość wystrzegaj się czekania w przerwaniu, gdyż stopujesz cały mikrokontroler na ten czas....
Powodem zliczania zbyt dużej ilości impulsów są drgania zestyków przycisku. Poszukaj na sieci na temat eliminacji tego zjawiska :)
... i o deboucing-u, czyli drganiach styków w przycisku.
Zrobiłem już dwa schematy to przedstawię obydwa. http://obrazki.elektroda.net/29_12310208... Tranzystory MOSFET, to tak żeby się nie rozwodzić to w praktyce są bardziej korzystne przy większych mocach (prądach). A Ty stosując żarówki 15W będziesz miał prąd 2,5A. Stosując tranzystory bipolarne trzeba by było dawać po dwa tranzystory w układzie...
Możesz spróbować użyć filtrów RC. Ale programowo pewnie też da radę. Poszukaj tematów o eliminacji drgania styków przycisków, było wiele razy.
Może zadziałać taki układ ale musi zależy czy w urządzeniu gdzie jest ten przycisk jest jakiś mikrokontroler albo układ eliminacji drgań syków i wykryje że nie ma zwarcia tylko po drodze jest spadek napięcia szczególnie pryz układach zasilanych z niskiego napięcia ja stosuje w takim wypadku układ 4066 jako klucz.
Użyć przycisku który nie posiada drgań albo zrobić filtr tłumiący te drgania.
drgania przycisku kondensator zabezpieczenie przycisku zapalarka przycisku
odblokować telefon samsung galaxy prosty regulator oświetlenia honda accord gaśnie
lodówka haier a3fe742cmj parkside szczotki
Jak naprawić wagę Radwag RN 10D? Przekładnia pasowa: Jak osiągnąć 1500 RPM z 15 RPM?