Warunek w if nie będzie spełniony bo raczej te kilka instrukcji w przerwaniu nie bedzie się wykonywać 20ms. Czas wykonywania tego ISR nie ma nic wspólnego z wartością _debounce_timer w momencie porównania.
1. Dlatego, że w przerwaniu od przycisku musisz zablokować to przerwanie i uruchomić timer, a w przerwaniu timera odblokować z powrotem przerwanie - to zajmuje jakieś z 8 linii kodu i wymaga dwóch przerwań. Obsługa przycisku w przerwaniu timera zajmuje 2 linie kodu i wymaga jednego przerwania dla dowolnej liczby przycisków. 2. Robi się to, kiedy jest...
Zapoznaj się z [url=http://mikrokontrolery.blogspot.com... dedykowanym dla STM32.
Witam, chciałbym napisać program. Urządzenie składa się z 1 przycisku i 1 diody po wcisnieciu przycisku raz dioda ma się zapalic na 3 min, po wcisnieciu tego samego przycisku w trakcie trwania tych 3 min powoduje zgaszenie diody i powrot do poczatku Próbowałem w C z przerwaniami od tego przycisku ale w zaleznosc od tego na jakie zbocze reaguje mikrokontroler...
Najprostsze rozwiązanie - w przerwaniu od czujki uruchom sprzętowy timer. Przerwanie od timera powoduje włączenie alarmu. Jeśli użytkownik wyłączy system przyciskiem, to w procedurze przerwania przycisku wyłączasz timer. Żeby wszystko działało jak trzeba, musisz zezwolić na zagnieżdżone przerwania (czyli żeby ISR od timera mógł się wykonać w momencie,...
https://obrazki.elektroda.pl/2553827400_... Cześć, pod tą niecodzienną nazwą tematu prezentuję projekt małego, automatycznego odtwarzacza muzyki do umilania posiedzeń na toalecie. Oczywiście to jedno zastosowanie, w innych sytuacjach pewnie też może się przydać ;) Głównym założeniem była niewielka złożoność, banalny interfejs, bezobsługowość...
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...
[syntax=basic4gl]Config Timer0 = Timer , Prescale = 1024 Enable Timer0 : On Timer0 Przerwanie0 Dim Tmp As Word Tmp = 0 Dim Ptimer1 As Word Ptimer1 = 0 Do If Klawisz = 0 Then If Ptimer1 = 0 Then Ptimer1 = 100 End If If Ptimer1 < 95 And Klawisz = 0 Then Tmp = 1 End If End If If Tmp = 1 And Ptimer1 < 85 And Ptimer1 > 70 Then If Klawisz = 1 Then...
http://obrazki.elektroda.pl/9745806300_1... Witam. Sesja się zbliża, więc tradycyjnie zacząłem już prokrastynować :D . Ostatnio zacząłem pisać bibliotekę do obsługi klawiatury PS/2 w C dla AVR i postanowiłem na szybko w godzinkę lub dwie stworzyć jakiś praktyczny projekt w celu jej przetestowania. Początkowo nie planowałem tego publikować,...
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...
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.
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ż...
KEELOQ + rolling code można wykorzystać w swoim projekcie DIY bez przeszkód? Oczywiście. Dodano po 33 Mogę zainteresowanym podać kod KEELOQ dla pilota i odbioru , oczywiście z innymi danymi pilota ;). PILOT: Dodano po 10 Bardzo ciekawy i użyteczny projekt, właściwie to prototyp, który może przekształcić się w produkt. A czego mu brakuje żeby już nie...
https://obrazki.elektroda.pl/7417895700_... Motywacja Jeden ze znajomych poprosił mnie, aby taki śmieszny pad na USB (kształtem przypominający dżojstik od konsoli NES) https://obrazki.elektroda.pl/5837949700_... https://obrazki.elektroda.pl/8178021400_... przerobić tak, aby dało się go podpiąć właśnie...
https://obrazki.elektroda.pl/1570592100_... Witajcie, zapraszam na relację z konstrukcji zegara na PIC18F2550 napisaną w formie tutoriala, wszystko krok po kroku. Pokażę tu jak i z czego tworzyłem prosty projekt DIY na prośbę jednego z czytelników. Wykorzystamy tu wyświetlacze 7-segmentowe, rejestr przesuwny, obsłużymy przyciski a...
Dzień Dobry Od jakiegoś czasu, po blisko 20 latach przerwy, wróciłem do majsterkowania i elektroniki i muszę przyznać, że zafascynowały mnie dzisiejsze możliwości jakie oferuje się hobbystom. Dostępne dla amatorów technologie, dostęp do wiedzy i możliwości zaopatrzenia się w narzędzia i materiały są zupełnie inne niż przed laty. Ostatnich kilkanaście...
http://obrazki.elektroda.pl/3092945800_1... Witam Nie jest to mój pierwszy projekt ( było ich już z kilkunaście ;) ) , jednak jestem z niego nieco bardziej zadowolony niż z innych; włożyłem w niego także więcej pracy dlatego postanowieniem go opublikować. Ponieważ postanowiłem podciągnąć/ sprawdzić swoje umiejętności programowania /...
Oczywiście to co pokazuję jest w C ale jestem otwarty na pomoc i propozycję rozwiązań mojego problemu z tego względu jest napisane powyżej, w moim poprzednim poście "...C/C++...". C czy C++ nie jest mi straszne i tym bardziej obce. Drgania wyeliminowałem jak na razie sprzętowo i tak zgodzę się odczyt odczyt przycisku w przerwaniu. Podpowiedzcie mi...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
http://obrazki.elektroda.pl/5385398300_1... Zaprezentować dziś chcę projekt lampki RGB który wykonałem na pracę zaliczeniową z systemów wbudowanych. Moim zdaniem osiągnięty efekt jest zadowalający więc może ktoś będzie zainteresowany wykonaniem urządzenia według mojego projektu. Jako, że jest to pierwszy zrealizowany przeze mnie projekt...
Nie będę sie rozpisywał: Dim T1 As Single , T2 As Integer ... T1 = -123.50 T2 = T1 'bez części ułamkowej T2 = Round(T1) 'zaokrągli zgodnie z prawami arytmetyki ... Pozdrawiam Piotrek
Witam ! (at)ElektrodaBot // Napisz Menu z Rc5 #include #include LiquidCrystal lcd(19, 18, 17, 16, 15, 14); #define LED 0 #define TSOP_PIN 3 RC5 rc5(TSOP_PIN); // co... Bezpośrednia odpowiedź na pytanie Poniżej znajdziesz kompletny, przetestowany szkic Arduino realizujący trzy-pozycyjne menu sterowane pilotem RC5. – Przycisk „+” (cmd 16) zwiększa odpowiednią...
http://obrazki.elektroda.pl/4622143800_1... Witam wszystkich. Przedstawiam swój kolejny projekt, tym razem jest to oświetlenie pod szafkami kuchennymi. Nie jest on zrobiony od zera, powstał na bazie wcześniejszego mojego projektu, oświetlenia schodów który można zobaczyć tu: http://elektronika.info.pl/2012/01/oswie...
No więc kombinowałem już wczesniej z tymi różnymi opóźnieniami. Wstawiałem je w kilka miejsc na wszelki wypadek i zmieniałem na bardzo duże. Niestety poległem ;) Często klawisze powtarzały się same, nawet bez wciskania przycisku :/ Nie wiem do tej pory co to było. Ale rozwiązałem już problem. Przynajmniej na razie wszystko działa jak powinno. ;) Zmieniłem...
Zafiksowany Kamyczku. Wykrycie naciśnięcia przecisku w przerwaniu timera - to 2 linijki kodu w C, wykonywane 50 razy na sekundę. Ty proponujesz rozwiązanie wymagające przerwania od przycisku, w którym to przerwaniu należy zablokować to przerwanie, ustawić znacznik/timer programowy, a następnie w przerwaniu timera odblokować przerwanie przycisku. Mamy...
http://obrazki.elektroda.pl/6783263600_1... Chciałbym przedstawić konstrukcję, która nie wnosi do świata elektroniki zupełnie nic nowego ponad standardowe połączenie kilku elementów, która powstała dla zabawy i żeby ładnie wyglądała, czyli zegarek binarny. Założeniem była budowa zegarka z widocznymi wszystkimi elementami i zasilanego...
Jest taka jedna święta zasada: w przerwaniu się NIE CZEKA. Na nic! Zgłaszanie przerwania od przycisku w zasadzie służy tylko do jednego - budzenia systemu z głębokiego uśpienia, co u Ciebie nie ma zastosowania. W każdym innym przypadku prawidłowa obsługa przerwania od przycisku jest znacznie bardziej złożona, niż obsługa przycisków w przerwaniu timera....
Rozwiązaniem jest obsługa przycisku na przerwaniu bądź to INT bądź PCINT
Proponowałby napisać program od nowa, małymi krokami, bez delay. Jak inaczej mam sprawić, żeby program przez określony czas utrzymywał led na HIGH? Użyj millis do odliczania czasu. Dodano po 1 Obsługa przycisku na przerwaniu tez nie jest najlepszym pomysłem, jeśli w przerwaniu nie używa się timera do likwidacji drżenia styków albo filtru dolnoprzepustowego...
To nie do końca odpowiedź na tytułowy problem, ale: - obsługa przycisku w przerwaniu jest bez sensu - w żaden sposób nie eliminujesz drgań styków. Wpisz w wyszukiwarce hasło keyhist - znajdziesz post kolegi BlueDraco z przykładowym kodem obsługującym przyciski w przerwaniu timera. - procedura obsługi przerwania, w której jedynie ustawiasz flagę też...
Obsługa przycisku w przerwaniu jest niezbyt wskazana. Owszem przycisk uruchomi przerwanie ale do tego należy również doliczyć drgania styków. Jak wiadomo opóźnienia w przerwaniu to niepożądane zjawisko. Dobrym sposobem jest dodanie kondensatora który będzie się ładował i rozładowywał tym samym eliminując drgania styków.
Teraz sprawa jest prosta. Zapomnij o resetowaniu procesora w przerwaniu i zacznij od nowa. Najpierw obsługa przycisku (nawet w pętli głównej bez przerwań) i sterowania kolorowymi diodami (też w pętli głównej). Dodano po 4 Problem pojawia się w momencie, w którym podczas procedury włączania wzmacniacza, która trwa notabene ponad 30 sekund ktoś wciśnie...
Umieść obsługę przycisków w przerwaniu timera. Pomogło. Tzn. nie do końca ponieważ nie mam możliwości uruchomienia sygnałów PWM jeżeli timer nie pracuje (czyli f wcześniej nie jest zadeklarowane na 10, 20, 30, 40 lub 50) - wtedy nie działa obsługa przycisku znajdująca się w przerwaniu. A jeśli ustawisz na stałe 10 lub 30? Ostatnio mam problemy z jasnowidzeniem...
Witam serdecznie, Walczę z przerwaniami już jakiś czas i niestety bezskutecznie, dlatego zwracam się o pomoc. Pod PIND2 (odpowiedzialny za przerwania) podpinam przycisk podciągnięty do plusa. Pod Portem B mam LEDY. Chce aby przyciśniecie przycisku gasiło dany LED a puszczenie przycisku go z powrotem zapalało. Przerwania wykrywam na zmianę stanu logicznego....
Mam płytkę ST32F746-Disco i uczę się obsługi na podstawie tego poradnika (Bardzo ułatwia pojęcie działania SMT32, świetna robota). Męcząc tą płytkę napotkałem problem z przerwaniami. Oto kod: Proszę zakładać swój wątek, a nie doklejać postów do wątków niezwiązanych tematycznie z poruszanym problemem.
Załóżmy, że obsługujemy klawisz w przerwaniu zewnętrznym i ustawiamy flagę, że został naciśnięty. W pętli głównej sprawdzamy flagę i toglujemy diodą na wyjściu wysyłając jednocześnie po uarcie info - dioda ON/OFF. :idea: - taki przykład dla początkujących :D Osobiście zrobiłbym to zupełnie inaczej. Obsługa przycisków przy użyciu przerwania zewnętrznego...
W przerwaniu mam zamiar uruchomić timer1, w którym wykorzystuje Input Capture by zatrzasnąć kolejne zbocze opadające Timer powinien sprawdzić stan pinu za jakiś czas np 30ms. Powinieneś to jeszcze połączyć z wykrywaniem zarówno zbocza opadającego jak i narastającego. Zależnie od tego, które zbocze wywołało przerwanie zwiększasz lub zmniejszasz zmienną...
Piotrek1970 - całkowicie się z tobą zgadzam jeśli chodzi o wartość developerską Arduino. Ja miałem na myśli, że w miarę proste konstrukcje, przy odrobinie doświadczenia, można a nawet warto zrobić "od strzału", z dedykowanymi rozwiązaniami. Początkującym jak najbardziej polecam rozpocząć z gotowym hardware. Hanslik - jeśli wolno mi zaproponować, wejdź...
Przykład obsługi przerwania od przycisku poziomem niskim: [syntax=c] //**************************************... // // File Name: 'main.c' // Title : AVR DDS2 signal generator // Author : Scienceprog.com - Copyright (C) 2008 // Created : 2008-03-09 // Revised : 2008-03-09 // Version : 2.0 // Target MCU: Atmel AVR...
Napisałem się, napisałem... a tu wylogowało i przepadło a wstecz w przeglądarce nie przywróciło :( ale postaram się odtworzyć. W wyżej zaproponowanym sposobie musisz mieć przycisk podpięty pod zewnętrzne przerwanie. Ja zrobiłbym to inaczej. Obsługę przycisku zrobiłbym w przerwaniu timera. Przerwanie wywoływał co kilka milisekund. W przerwaniu najpierw...
Inaczej projektuje się zegar dla zasilania z baterii, a zupełnie inaczej dla zasilania z zasilacza. Jeżeli mikrokontroler ma być zasilany z baterii, to projekt musi drastycznie zminimalizować zużycie energii. Aby to zrobić należy zmniejszyć radykalnie napięcie zasilania i zmniejszyć częstotliwość zegara F_CPU. Należy także usypiać mikrokontroler ......
tak, przyciskiem. Po przerwaniu na czas jego wykonania wyłącz przerwania przez CLI a potem włęcz ponownie przez SEI. niestety nie pomogło. Dodam jeszcze że te przerwania się właściwie potem wykonują... teraz dopiero to zauważyłem. Przykładowa sytuacja 1) Licznik odlicza w górę. Przerwanie. Następuje zmiana kierunku licznika 2) Licznik odlicza w dół...
Ja mam program, który się długo wykonuje. Odczyt 4x INA219, 4x DS19B20 (a będzie więcej), obsługa Nokia 5110. Odczyt z 4 portów ADC (100-500, albo więcej próbek). Używałem biblioteki [url=https://github.com/0xPIT/encoder/tr... do encodera obrotowego, bo w jednej bibliotece miała wszystko. Wywoływana była z pomocą Timera i odczyt...
Obsługa tego w przerwaniu wynika z tego, że układ będzie zasilany bateryjnie i będzie pozostawał w uśpieniu do czasu wywołania przerwania INT. Aby uniknąć drgań styków mam zamiar zastosować kondensator. Mój aktualny pomysł wygląda następująco: [syntax=c] volatile char click=0; ISR(INT0_vect,ISR_NOBLOCK){ timer=0; // click++; while(timer<100 &&...
Co do procka to LordBlick ma racje. W LV wywal tą strukturę sekwencyjną i te "prymitywną synchronizację". Daj lepiej w zwykłej pętli while odczyt i zapis. Jak wejdziesz w przerwanie ustaw flagę informującą procke o wysłaniu danych po wyjściu z przerwania. Procek wychodzi z przerwania i wysyła info do LV. Jak coś wpiszesz do rejestru to wyślesz, LV odbierze...
Fajny przykład jak nie pisać programu reagującego na przyciski... ;) Trzy zbędne znaczniki, zbyt długie oczekiwanie itd. Przecież wystarczy w jednej linijce kodu wywoływanego w przerwaniu timera wykryć zmianę stanu przycisku przy pomocy jednej dodatkowej zmiennej, a pod if() umieścić całą reakcję na przycisk. Kod wklejam tu mniej-więcej raz na miesiąc,...
Zupełnie inaczej. Obsługa przerwania, która tylko ustawia znaczniki, zupełnie nie ma sensu. W przerwaniu timera zgłaszanym np. 50 (20..100) razy na sekundę, czy poprzednio przycisk był zwolniony, a teraz jest wciśnięty. Jeśli tak - ustaw znacznik do ew. wykorzystania w ew. pętli zdarzeń (to dość nieszczęśliwe rozwiązanie, ale w Bascom i u początkujących...
Witam, co do wyboru procka, to przy jednej szt. prototypowej i to jeszcze przy małym doświadczeniu w pisaniu oprogramowania, to czym większy tym mniej problemów w trakcie realizacji. Gdy już mamy powiedzmy działający program w całości, wtedy można rozważyć zmianę na mniejszy, ale tylko wtedy gdy jest to uzasadnione, np. nowa mniejsza płytka lub wykonanie...
Inkrementację zmiennej i jej porównanie z inną - nie ma problemu. Ale nie potrafię sobie wyobrazić reszty. Załóżmy, że będę inkrementować zmienną w przerwaniu o 0.1, w pętli while(1) porównuję tę zmienną z długością impulsu(np. 1.5). Co będzie mi odmierzać okres 20ms? Z jaką częstotliwością musiałbym zrobić przerwanie?
...co prawda pop i push nie dziala ... Instrukcje push i pop muszą działać, bo one głównie do tego służą. Trzeba tylko pamiętać, żeby, po odłożeniu na stos używanych w obsłudze przerwania rejestrów instrukcją push, przywracać je przed zakończeniem (tejże obsługi) instrukcją pop dokładnie w odwrotnej kolejności. Standardowo wygląda to tak: ... dziala...
W trakcie obsługi przerwania przychodzi następne i czeka w kolejce. I czekać będzie nie ważne jak bardzo zostanie "przeciągnięte" przerwanie.
sprawdzanie przycisku przerwaniu obsługa klawiatury przerwaniu bascom obsługa przycisku
wideo poradniki próbnik przebicia wpływem ciepła
smartfon aplikacje smartfon aplikacje
Zablokowane pasy bezpieczeństwa po zderzeniu z sarną – działanie SRS, napinacze, diagnostyka Unitra PW-8010 – moc wyjściowa na kanał, ile wat RMS i muzycznej przy 8 Ω