http://obrazki.elektroda.pl/3089511800_1... Witam, dziś prezentuje swój bezprzewodowy termometr pracujący na częstotliwości 433 MHz. Urządzenie składa się z nadajnika i odbiornika. Nadajnik odczytuje temperaturę pieca C.O. i wysyła ją do odbiornika. W odbiorniku mamy możliwość ustalenia górnego i dolnego progu załączenia alarmu, który...
Proszę bardzo. Napisany w 20 minut więc błąd mógł się wkraść. Timer co minutę daje znać i wtedy odliczane są minuty do włączenia bądź wyłączenia wentylatora. Przyciski są dwa. Kiedy naciśniesz jeden z nich to od razu powinien włączyć się wentylator (można w ten sposób zawsze wymusić start wentylatora). W programie u góry podaje się czasy wyrażone w...
Jeśli nie szkoda Ci zmiennej typu Byte i masz jeszcze miejsce na programowy licznik w swoim programie to możesz zerknąć jak ja rozwiązałem badanie przycisku w tym temacie http://www.elektroda.pl/rtvforum/topic22... Zapewniam Cię, że rozwiązanie to jest bardziej odporne na zakłócenia (drgania) i przede wszystkim przelotowe (żadnych wait) niż jakiekolwiek...
Druga możliwość, to wykorzystanie przerwania od timera. Ustawiasz sobie przerwanie co np. 10ms i w przerwaniu badasz stan klawiatury i zapamiętujesz. Jeżeli ten nowy stan jest inny, niż zapamiętany poprzednio, to np. wpisujesz sobie wartość opóźnienia (do eliminacji drgań styków) do zmiennej. Jeżeli stan się nie zmienił, to zmniejszasz zmienną i jeżeli...
Niestety, to nie pomogło, usunąłem wszystkie wait'y które tam były i dalej jest to samo. Może macie jakieś inne pomysły? Wszystkich nie usnąłeś - zostało 25ms z debounce. Poza tym konfiguracja przerwania jako Low level powoduje, że jest ono generowane raz za razem dopóki jest stan niski na pinie. Przerwanie nie zdąży się obsłużyć, bo debounce potrzebuje...
Nie wiem czy chcesz się nauczyć czy potrzebujesz program. Na początek te uwagi: 1. Nie wiem co tam robi dyrektywa $eeprom. Jest niepotrzebna w tym kodzie 2. Zmienna Ds jest zwiększana w przerwaniu niezależnie od tego czy jesteś w Menu czy nie. Tak więc po powrocie z Menu już na pewno nie zdążysz załapać się na warunek If Ds = 2 i wyzerować jej wartość....
Witam. Z góry zaznaczę, że w arduino to właściwie mój pierwszy program. Próbuję sklecić sobie program który liczy impulsy z enkodera inkrementalnego (500 impulsów na obrót), i co zadaną ilość impulsów (która będzie czasami zmieniana), włączy przekaźnik na określony czas (na początek 500ms a później jak ma też być ten czas regulowany w pewnych widełkach)....
Najlepiej jakbyś wklejał kod nad którym pracujesz , aby można było na bieżąco sprawdzać postępy jakie robisz . Do '_______________ Menu _______________________ If Enter = 1 Then If Gora = 1 Incr Menu End If End If If Menu = 6 Then Menu = 0 End If Select Case Menu Case 0 : Lcd "Temp zadana:" ; Tempzadana ; "'C" Debounce Enter...
Debouncing w przerwaniu - tylko nie mów, że robisz to przez aktywne oczekiwanie wewnątrz przerwania. Jeśli tak, to zauważ, że to, że skasowałeś flagę przerwania i jesteś w przerwaniu wcale nie oznacza, że flaga nie może zostać ustawiona ponownie. Możliwy jest taki scenariusz: wciskasz przycisk, pojawia się zbocze opadające które ustawia flagę a więc...
czy klawisze moga sie powtarzac po sobie? Tzn czy np naciskasz jeden klawisz - program czeka i naciskasz drugi klawisz(czy moze byc ten sam co pierwszy?) i potem jeszcze trzeci? Jezeli mozesz to uzyj funkcji debounce i jakiejs krotkiej przerwy miedzy kolejnymi petlami: do -debounce pind.x,0,klawisz_jeden,sub loop waitms 100 do -debounce pind.y,0,klawisz_dwa,sub...
Spróbuj ten kod /* Ver. 1.02 - 2020-03-29 Kod emulujący kierownicę Thrustmaster TMX Pro, umożliwiający podłączenie Arduino do bazy TMX Pro i emulację naciśnięć przycisków. */ #include <Arduino.h> byte wheelState[8]; // Stan przycisków volatile byte next_byte; volatile byte next_byte_idx; // Zmienne do debouncingu byte lastState[2] = {0xFF, 0xFF};...
wynik końcowy faktycznie za każdym razem jest inny. (at) emarcus możesz podpowiedzieć jak powinien wyglądać serwis int1? Popatrzyłem troche bliżej na twoj kod. Z jakiego powodu potrzebujesz otrzymać wynik ("Czas_2") z dokładnocią aż do 9 miejsc decimal? Jeżeli jeden z czynników iloczynu (rozdzielczość timera) jest liczbą wymierną z dokładnościa do...
0. Dioda podłączona jest do PA0 i do masy czy plusa? 1. Wskazane jest jawnie ustawić g inicjalnie na 0. 2. Pętla główna powinna ustawiać g ponownie na zero po wykonaniu akcji. 3. Bit PA0 nie ma wartości 2 tylko 1 (to chyba główny problem). 4. Poczytaj o eliminowaniu efektów drgań styków (debounce).
Witam. Podłączę się do zamkniętego tematu: https://www.elektroda.pl/rtvforum/topic3... Jestem w takiej samej sytuacji jak brinktomasz22. 1. Początkujący ... albo bardziej ... 2. Zgrzewarka z projekt: https://majsterkowo.pl/zgrzewarka-do-ogn... Również zależy mi na tym, aby przycisk chwilowy zadziałał tylko raz...
(at)ElektrodaBot Jak skonfigurować rejestry MCP23017, aby nasąpiło przerwanie na INTB. Port B bit 0_4 to wejscia klawiszy, normalnie stan wysoki. Stan niski powinien wywołać przerwanie na INTB. Bezpośrednia odpowiedź - Dla RB0..RB4 jako wejść (normalnie “1”), przerwanie INTB ma wystąpić przy przejściu któregokolwiek z nich na “0”. Minimalny, pewny...
Może coś w tym guście: uint8_t keys; static uint8_t old_keys = 0xff; // valid keys from previous keypress static uint8_t scan_keys = 0xff; // last keyboard scan state static uint8_t debounce_cnt = 0; /*...*/ //read keys keys = KBD_INP_PORT & KBD_INP_MASK; if (keys ^ scan_keys) { // key state change from previous scan // start debounce delay...
Z tym kondensatorkiem, to wiem, masz rację. Obawiam się, że będę miał małe problemy. Zrobić klawiaturkę w przerwaniu, to nie jest problem. według pierwszego, czy też drugiego schematu. Gorzej jednak będzie z tym "dłuższym trzymaniem". Wpadł mi do głowy jeszcze inny pomysł, zamiast "długie trzymanie" naciśnięcie dwóch klawiszy równocześnie. To też jest...
Jak zmodyfikowac piniższy program. $regfile = "attiny2313.dat" $crystal = 8000000 'kwarc 1MHz $prog &HFC , &HE4 , &H9F , &H00 ' generated. Take care that the chip supports all fuse bytes. Config Timer1 = Timer , Prescale = 64 'timer1 jako licznik 15536 Config Int0 = Rising 'detetor zera '"0"-wejście "1"-wyjście Config Portd...
To może tak na wszelki wypadek dorzucę materiały szkoleniowe dot deboucing-u: http://www.ganssle.com/debouncing.htm http://www.labbookpages.co.uk/electronic... http://www.ikalogic.com/debouncing.php [url=http://www.google.com/images?q=Debo...
Byłby ktoś w stanie mi z tym pomóc? Miałoby to wyglądać tak: * sterowanie wentylatorami czasowo * sterowanie poprzez odczyt temeratury 2 osobne funkcje (działa albo jedno albo drugie). Do tego co mam dołożenie wł/wył czasowego (w zupełności wystarczy najprostsze z możliwych) OK, Popatrz na swój program; sterujesz ustawienia trzema przyciskami, z których...
Zbudowałem układ, który mierzy temp. z trzech ds18b20 i wyświetla na lcd. Problem zaczyna się gdy włączę przerwania od timera0 (który tylko w tle odmierza sobie odcinki czasu po 8ms), a mianowicie mierzona temperatura jest nie prawidłowa a później zaczyna się krzaczyć lcd. Ma to być sterownik pieca CO więc potrzebuję odliczać krótkie odcinki czasu na...
Witam. W petli glownej programu musisz sobie napiac jakas procedurke wyboru podprogramow. Np mozesz uzyc do tego 3 przyciskow - jeden do zwiekszana zmiennej np wybor , drugi do jej zmniejszania atrzeci przycisk do potwierdzenia "enter" . Nie pamietam juz dokaldnie skladni w Bascomie ale moze to byc np tak: DDRB=&b11111000 // - piny 0 1 i 2 portu...
Akurat w przypadku tego kodu przycisk wyjątkowo zwierał do plusa. Jeśli zwiera do masy, to powinno się porównywać z wartością 0b11111110. Na ogół nie ma sensu rejestrować aż 8 stanów - wystarczy wymaskować zmienną keystate maską złożoną z 2..3 jedynek i porównywać z odpowiednią maską, np. 0b110. keystate jest typu uint8_t. Wyglądałoby to np. tak: if...
Witam Bawię sie ostatnio taka ciekawa funkcją do eliminacji zestyków i niestety nie potrafię jej zmusić do działania. #include <avr/pgmspace.h> #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/signal.h> // definicje SIGNAL, INTERRUPT #include "HD44780.h"...
pier - twój program działa bardzo dobrze, dokładnie tak jak go napisałeś. A że napisałeś go badziewnie to taki masz efekt. Błędy: 1) W przerwaniu INT0 wyskakujesz z niego GOTO do głównego programu, tak nie można. Wyjdź z przerwania komendą RETURN, ale na jego końcu a nie przez podmianę GOSUB. Powinno być: If Sw = 1 Then Powerdown i RETURN na koncu....
Zastanawiam się jeszcze, czy przerwania od INTx nie zastąpić sprawdzaniem pinu. Instrukcja DEBOUNCE w sumie ma eliminować drgania zestyków i jeśli będzie odpowiednio skonfigurowany czas Debounca (CONFIG DEBOUNCE) to DEBOUNCE pinx.y, 0, przerwanie, sub powinno zadziałać chyba dokładnie tak jak On INT1 przerwanie Jedyna wada jest taka, że jeśli procesor...
Ja bym stawiał na brak debounce. Skoro sprawdzany jest stan przycisku to pewnie on do czegoś służy. Może do wyświetlenia informacji na wyświetlaczu. Jeżeli brak debounce to przerwanie to wywoła się pewnie z kilkanaście razy. Może być tez tak ze przepełnia się stos, kilkanaście razy 32 bajty.... i koniec RAM, procek sie resetuje. Ale to tylko zgadywanie...
Witam, Zmagam się z problemem przerwania w Atmega 8. Bez zagłębiania się w szczegóły mojego projektu, dajcie mi prosze znac czy to normalne zachowanie: 1. Przycisk S1 oraz Impulsator z przyciskiem S2. Impulsatorem "chodzę" sobie po menu i klikam przycisk impulsatora S2, który akurat w tej pętli nic nie robi, przerwania sa wyłączone cli(); ale uruchomione...
maximus - cls nie ma tu NIC do rzeczy bo nawet LCD nie używasz. Podejrzewam że program wywala ci się na deklaracji SUB, tym bardziej że używasz debounce jako GOTO a nie GOSUB, i potem próbujesz wracać returnem. No i SUB, a GOSUB to nie to samo :-) Zrób test - program powinien ci się wywalić gdy wciśniesz któryś z 2 przycisków, natomiast RC5 powinno...
2. Na temat czasu między odczytami i wartościami elementów w filtrze RC się nie wypowiadam, bo nie wiem jak długie impulsy mają włączyć przerwanie, a jakie nie. Moga byc dlugie - w koncu to po nacisnieciu klawisza - powiedzmy 200ms a nawet 500ms. Czyli np. 100kOhm*4,7uF = 470us 3. Jeżeli przy innych przerwaniach jest OK, to może masz jakiś błąd w programie?...
Nie- jak wchodzisz w przerwanie to blokujesz inne przerwania. Jak uniknąć drgań styków- to jest parę sposobów oprócz _delay() No ale jako potępieniec nie mam prawa nic o tym powiedzieć- spytaj mirka o debounce.
przerwanie funkcji xxx i natychmiastowe przejście do funkcji bbb. Jak sam piszesz przerwac mozesz tylko przerwaniem.
regfile = "m8def.dat" $crystal = 8000000 Config Pinb.0 = Input Config Pinb.1 = Input Config Pinb.2 = Input Config Pinb.3 = Output Config Pinb.4 = Output Config Pinb.5 = Output Config Aci = On , Compare = Off , Trigger = Rising On Aci Przeciazenie Enable Interrupts Gora Alias Pinb.1 Dol Alias Pinb.0 Zatrz Alias Pinb.2 Wlacz Alias Portb.3 Wej1...
Witajcie. ... Program jest oczywiście przykładowy. Gdy zamiast przerwania etkietę Przerwanie: wołam przy pomocy funkcji Debounce wszystko jest OK. ... Naprawdę nie wiem gdzie popełniam błąd. Będę wdzięczny za wszelkie sugestie. Pozdrawiam Krzysiek To mi wygląda , na zbyt mały stos.Zwiększ parametr HW Stack na 100 i sprawdź , czy pomogło. Piotrek
napisz program do poprzedniego układu powodujący gaśnięcie diody, która to będzie włączona od początku, po kliknięciu guzika 5 razy Wstępna ocena dostępnych informacji Analiza podanych przez użytkownika danych: - Płytka Arduino: Duemilanove. - Poprzedni układ: - Zewnętrzna dioda LED podłączona do pinu PWM (np. pin 9 ). - Przycisk podłączony do pinu...
Ok wybrałem nadpisywanie całej pamięci flash przy wgrywaniu sketchu, dzięki za podpowiedź. Chyba chodzi o watchdog? Musisz zatrzymać monitor szeregowy, kiedy się pojawiają logi i wkleić tutaj informację o przyczynach WD - zwykle jest to dość pomocna informacja. Pod tym linkiem masz informację na temat diagnozowania przyczyny wystąpienia WD w ESP8266:...
Witam, Wielokrotne zapisy to drgania styków. Żeby się o tym przekonać zrób eksperyment - co sekundę zapisuj zmienną, którą zwiększasz przy każdym wywołaniu INT0 - przekonasz się, że musisz zrobić sobie jakiś programowy "debouncer" (opóźnienie ~20ms). Co do "cofających się" zmiennych to nie mam za bardzo pomysłu. Na pewno jednak nie zaszkodzi zmiana...
Zrób _porządny_ debouncing, nie takie " Żeby to zadziałało to przerwanie musi zostać odpalone przynajmniej 2 razy na naciśnięcie przycisku. ", tylko coś jak w listingu 2 tutaj: https://www.embedded.com/my-favorite-sof... gdzie, cytuję, " It offers protection from both bounce and EMI. "
Koledzy znając życie to pewnie problem wynika z mojej niewiedzy. Mam podprogram Który ma mi zliczyć czasu załączenia pompy. W tym celu wykorzystałem sobie przerwanie które generuje mi przepełnienie co 500ms. W warunku Flagi 500ms jest zmienna (kala(n))która jest zwiększana co 500ms jeśli pompa jest załączona. Załączam sobie pompę np na 3,5s czyli zmienna...
Podczas moim przygod z bascom nie musialem dawac zadnych kondensatorow bo Debounce na drodze programowej usuwalo drgania. Teraz chce zrobic to samo. Zrobilem tak ze odczekalem 50 ms, i sprawdzilem czy przycisk jest nadal wcisniety, jednak czasem jak nacisne, przytrzymam i puszcze to dioda tez zmienia stan, mimo ze nie powinna ( przerwanie jest tylko...
olo_3 -> to jest cały kod? ten który tu pokazałeś????? po pierwsze - gdzie masz pętlę główną po części inicjalizacyjnej programu ??? DO ... LOOP - chyba że ślepy jestem czy jak? (jeśli rzeczywiście jej nie masz to nie dziw się, że twój program wariuje bo po z tego co widać po inicjalizacji odrazu program leci do obsługi przrwania i się zapętla na śmierć)...
Witam. Jestem początkujący w programowaniu więc proszę o wyrozumiałość. Potrzebuje program sterowania klapą (otwieranie i zamykanie dwie krańcówki góra dół i silnik lewo prawo). Chce aby jazda w gore lub w dol odbywała się w momencie zmiany stanu pewnej zmiennej zewnętrznej konkretnie zboczem rosnącym. Wyczytałem, że w Bascomie można zrealizować t...
Bardzo bym sie zdziwil gdyby ten program w jego oryginalnej postaci lub nawet z pozniejszymi poprawkami mogl funkcjoniwac! Po pierwsze: Jest on nie pelny, nie tylko brak jak juz ktoz zauwazyl, deklaracji rodzaju, typu uC i jego cyklu pracy (czestotliwosci). Pomimo faktu ze nie ma w programie pomiarow czasu to ta informacja nie moze byc pominieta. W...
Chętnie poczytam wyjaśnienia dlaczego działa poprawnie mimo drgań styków. Bez analizy całego programu nie można jednoznacznie odpowiedzieć na Twoje pytanie. Na filmie, który pokazałem wyżej wykorzystany jest timer do zliczania impulsów w tym drgań. To bardzo dobry sposób, by pokazać to zjawisko, którego Ty w swoim algorytmie nie uwzględniasz. Opóźnienia...
Witam Właśnie piszę program do sterowania diodami na dyskotekę tzn. wąż świetlny. Projekt jeszcze nie jest skończony ale niby działa i niestety pojawił się problem. Przycisk Sv1 Alias Pind.3 służy jak na razie do wyboru programu (zwiększa o jeden) Na razie jest 6 programów. Owy przycisk działa na zasadzie przerwania od przepełnienia timer0, które to...
NP tu jest to świetnie zrobione: http://www.elektroda.pl/rtvforum/topic10... Albo tu kilka rozwiązań: http://hackaday.com/2010/11/09/debounce-...
Getencoder: Waitus Debouncetime ... Waitms 1 ... Takie kwiatki programowe w przerwaniach!? Gdzie cię uczyli programować? :(
Witam Kiedyś pisałem że nieda sie uruchomić przerwań rs w bascomie. Ostatnio usiadłem nad tym i jakoś mi sie udało ale nie ze standardowymi komendami tylko zoperacjami na rejestrach - coś jak asm. Ale spoko wszystko jest jasne i proste. Doszedłem do tego że jeżeli w programie niema komendy print w jakiej kolwiek formie to kompilator wogóle niezainicjalizuje...
Witam. Jestem w fazie pisania programu z zegarem DS3231 i atmegą16. Mam podłączone wejście INT0 atmegi z wyjściem INT/SQW DS-a. Podciągnięte rezystorem 10k do 5V. I nie wiem co robię źle ale procesor nie reaguje na sygnał przerwania z DS-a. Powiem szczerze że nigdy nie korzystałem z przerwań zewnętrznych ale znów ustawienie tego nie jest skomplikowane...
Dorzucam wersję z porządnym debouncingiem. Ten z BASCOMa jest zbyt uproszczony i nie nadaje się do profesjonalnych zastosowań. Po wciśnięciu jednego przycisku naciśnięcia innych przycisków są ignorowane do czasu puszczenia tego pierwszego. Zauważ autorze, że nie ma już nigdzie w kodzie czekania na cokolwiek (brak wywołań funkcji WaitMs()). Wszystko...
debounce debounce przerwania debounce przerwanie debounce
hamulec kosiarka elektryczny panasonic świecić czerwona dioda sterownik silnika pojazd
suszarka samsung suszarka samsung
Napięcie 230V przed licznikiem, 50V w mieszkaniu - przyczyny Uszkodzony rozrusznik lub alternator a brak paliwa na wtryski LT 2.5