https://obrazki.elektroda.pl/3221612800_... Witajcie moi drodzy. Zapraszam na relację z postępów prac nad otwartym firmware dla BK7231T. Temat ten napisany będzie w formie tutoriala, przedstawię tu krok po kroku jak opracowałem własny, wieloplatformowy (działający na Windowsie i BK7231T) mini-serwer HTTP, system konfiguracji pinów...
Witam, ostatnio (po zmianie dysku) zaczeły się dziwne problemy (wczesniej też miałem ale nie takie ;-) ), co jakiś czas wyskakuje powiadomienie o błędzie : DEVLDR: devldr32.exe Błąd aplikacji Instrukcja spod "0x77f67f28" odwołuje się do pamięci pod adresem "0x00060003". Pamięć nie może być "written". Kliknij przycisk OK, aby przerwać działanie aplikacji...
Odczyt ze SMART zawsze się do diagnozy przyda ;) 1.Proszę podać dokładny model laptopa z naklejki z tyłu obudowy, oraz wejść do biosu i podać jego wersję. 2.Na czas diagnozy, odinstaluj następujące programy: Deamon Tools, Adobe Reader X, AVG PC TuneUp 2015, oraz sterownik Qualcomm Atheros AR3012 Bluetooth 4.0 + HS (w logu są zmianki że się posypały,...
https://obrazki.elektroda.pl/4950580000_... Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka...
W przerwaniu przycisku blokujesz przerwanie przycisku i uruchamiasz timer sterujący wyświetlaniem, który kiedyś tam, gasząc wyświetlacz, włącza przerwanie przycisku. To "czekanie 20 ms" i powtórne sprawdzanie przycisku to jakaś magia i nie ma ani trochę sensu.
Błędów całe mnóstwo. 1. Nie robi się przerwań od przycisków. Zrób przerwanie timera np. 100 Hz, w nim sprawdzaj stany przycisków. 2. __attribute__ ((interrupt)) jest zbędne. 3. Znacznik przerwania kasuje się na początku, nie na końcu obsługi przerwania. 4. Do zmiany stanu linii portów służą rejestry BSRR- jeden zapis zmienia stany dowolnie wybranych...
Mikrokontroler mega.2560. Arduino Mega, czy sam "czysty" mikrokontroler, bez środowiska Arduino? Pierwszym projektem jaki się robi podczas nauki na mikrokontroler jest miganie diodą. Drugim projektem jest włączanie diody przyciskiem. Stan przycisku możesz sprawdzać poprzez przerwanie zewnętrzne (tylko na niektórych portach), cykliczne sprawdzanie w...
Klawiszy (poza wyjątkowymi sytuacjami typu wybudzanie uC) nie robi się na przerwaniach INT. Delaye w przerwaniu to nieporozumienie. Twoje przerwanie realizuje się tylko po wciśnięciu przycisku, więc trudno by było, aby zwróciło informację o jego zwolnieniu. Zrób przerwanie zegarowe co 25-50ms i cyklicznie sprawdzaj stan klawiatury. Opanujesz w ten sposób...
Jaka jest aktualna częstotliwość zegara? Jak często uruchamiane jest przerwanie? Ile trwa naciśnięcie przycisku? Musisz zmieniać opcje tylko kiedy przycisk został naciśnięty, nie przytrzymany. Dodaj do przerwania warunek sprawdzający poprzedni stan przycisku. Pomyśl nad wyeliminowaniem delay.
Do kolegi arktik1 dlaczego kolega namawia do sprawdzania w petli danego pinu skoro luki55 ma w programie sprawdzac tylko ten przycisk to lepiej go dac w przerwanie zewnetrzne a do glownego do__loop wstawic nop. Jesli juz taki "duzy" procesor stosowac to wykorzystac go przynajmniej tyle ile sie da i ile ulatwi zycie. P.s. Attiny13 tez bylby za duzy :D
1. Nie wykluczyles drgan na przycisku s1 2. Zebys wykonac to co chcesz zrobic bedzie ci potrzebne przerwanie. 3. Dziwie sie, ze sprawnie dziala ci ten kod (chyba, ze specjalnie robisz sprawdzanie przycisku w petli, zeby nie bylo przerwania i wykonal kod do konca, a pozniej sprawdzil czy przycisk jest wcisniety. W tym przypadku przepraszam)
1. Zrób zmienną globalną (boolean) np. o nazwie: Przerwij. 2. W pętli sprawdzaj jej wartość:[syntax=delphi]Przerwij:=false; While costam1<>costam1 do begin // //twój kod tutaj // Application.ProcessMessages; if Przerwij then break; end;[/syntax]2. A w zdarzeniu onClick tego przycisku, który ma zatrzymywać pętlę, daj:[syntax=delphi] Przerwij:=true;[/syntax]
eee... a po co tu licznik? program twoj ma robic jednoczesnie 2 rzeczy: 1. zajmowac sie wyswietlaniem czegos na wyswietlaczu (przerwanie od timera moze byc) 2. sprawdzac, czy nie jest wcisniety jakis przycisk jesli jest wcisniety pierwszy, to zwieksza cyfre, a nastepnie sprawdza, czy cyfra przekroczyla 9, jesli tak, to zeruje ja. jesli drugi, to z grubsza...
samo menu wielopoziomowe ze zmianami parametrów już jes dość rozbudowana częścią kodu. Samo sprawdzanie przycisku nic nie zmienia. kwestia jak kolega te pomiary zczyta i jak zrobi menu. jak zrobisz zle to czy przerwanie czy nie i tak sie zacznie mylić
Witam. Wydaje mi się że w tym przypadku to nie pomoże. Przewód pewnie robi za antenę i sciąga jakieś śmieci. Kolega Tomson pewnie impuls na INT0 traktuje jako wciśnięcie przycisku. W takim przypadku każdy impuls (rzędu pewnie nawet ns) wywoła przerwanie. Cała obsługa powinna wyglądać trochę inaczej. Otóż nawet krótkie wciśnięcie przycisku zwiera jego...
1. Sprawdzasz stan przycisku co jakiś czas, co przerwanie timera, np. 10ms (w przepełnieniu licznika np. Timer0 Overflow można regulować czasem pomiędzy przerwaniami, wpisując na początku obsługi przerwania odpowiednią wartość licznika, oraz wybierając preskaler w odniesieniu do częstotliwości zegara systemowego {1; 8; 64; 256; 1024}). Procedura timera...
Jak wyrzucisz z przerwania obsługę przycisków- to będzie krótkie. Jak masz przerwanie co 10ms to daj flaga++ kasowanie w głównej pętli co 3-4 przerwania- 30-40ms. w linkach -nie pamiętam. Ale niektórzy zamiast napisać "wykorzystując przerwanie" piszą "w przerwaniu" Ja napisałem tak: "Wystarczy w przerwaniu ustawiać jeszcze jakąś flagę. Potem w głównej...
Postanowiłem odświeżyć temat. Wymiana przycisków nie pomogła. Płytka sprawdzana, ścieżki nie przerwane. Co to moze być? Przyciski nadal niesprawne. pozdrawiam
Faktycznie aktywnym stanem jest zero i wtedy ten fragment kodu nie powinien dać żadnego rezultatu, ale co dziwne cokolwiek nacisnę i tak się wykona. Znaczy, dlaczego nie. Jak wcisnąłeś przycisk 0, a sprawdzasz 2, to przerwanie sie wygeneruje, ale na dwójce jest stan wysoki, to warunek (pierwszy) zadziała. Jak sprawdzam czy stan jest równy zero to też...
Powinieneś rozdzielić sprawdzanie przycisków od wykonywanej czynności. Najlepiej sprawdzanie przycisków wrzucić w jakieś przerwanie (chociażby portu) i przy okazji zrealizować debouncing. Po sprawdzeniu ustawiasz odpowiednio flagę - każdy przycisk ma swój nr. Dzięki temu dopóki nie naciśniesz kolejnego przycisku flaga będzie miała wartość odpowiadającą...
Gdy już usuniesz wewnętrzną pętlę do..loop to zwróć uwagę, że stan przycisku będzie sprawdzany raz na 60s. Możesz zrobić sprawdzanie np. tak (co 1 sek.): dim x as byte ... do 'sprawdź przyciski if x=60 then x=0 toggle ... end if wait1 incr x loop end Albo wykorzystać timer lub przerwanie.
Każdy z przycisków wywołuje przerwanie INT0. W obsłudze przerwania sprawdza się, który z nich został naciśnięty. Diody są po to, aby przyciski wywoływały przerwanie, ale nie zakłócały się nawzajem.
2. Takie ogólne pytanie gdzie w kodzie należy umieszczać obsługę przycisków, pomiar czasu, pomiar temperatury, obliczenia (przerwania czy w pętli while(1) ) czy może jeszcze gdzieś indziej ? Z jednej strony w wielu postach jest napisane aby w przerwaniach było jak najmniej instrukcji z drugiej strony gdzieś to wszystko trzeba przetworzyć. W przerwaniu...
ustaw sobie przerwanie od np. TIMER2 co 10ms i sprawdzaj 4 ostatnie stany przycisku. teoria: http://mikrokontrolery.blogspot.com/2011... powyższe zaadoptowane do A8: [syntax=c] //**************definicja przycisku************** #define _Key _BV(PD7) #define Key_PIN PIND #define Key_DDR DDRD #define Key_PORTPORTD...
gdyby zatrudnić przerwanie do sprawdzania stanu przycisku to odpadłby problem sprawdzania przycisku w każdym obrocie pętli :-)
Moim zdaniem jak zrobisz prawidłowe procedury debouncingu (chociaż może nazwa nie jest idealnie trafiona), to żadne zakłucenia nie powinny tutaj przeważyć. Jeżeli np ustawisz tak timer, że przerwanie będzie sie "uruchamiało" co 10ms, następnie sprawdzasz wszystkie kolumny (czy tam wiersze). Tam gdzie wykryjesz wciśnięcie przycisku zwiększy wartość licznika...
Nic sobie nie robi z naciskania guzika bo właśnie obsługuje przerwanie. Ja bym to zrobił w ten sposób. Przerwanie od czujki uruchamia jakiś timer i kończy się obsługa przerwania. Timer odmierza czas i po jego upłynięciu sprawdza jakąś zmienną i w zależności od niej uruchamia alarm bądź nie. I tak jeśli przed przyjściem przerwania z tego timera naciśnięty...
Witam, w dobrym kierunku idziesz, ale to ci nie zadziała bo jak? skoro na początku programu tylko raz ustawiasz piny klawiszy jako wejścia oraz pin przerwania INT0 też jako wejście. Więc co ma tutaj wymuszać stan niski na wejściu INT0? nic!. Aby ten sposób zadziałał - musisz jeszcze pomyśleć o zmianie kierunków portów wtedy gdy trzeba. Generalnie założenie...
To moja propozycja pomoże. Jest tylko kwestia drgań styków oraz zakłóceń. Przycisk powinien być sprawdzany w przerwaniu timera co np 50ms. W obecnej wersji możesz dodać niewielkie opóźnienie po wyłączeniu zgrzewarki i buzzera a sprawdzeniem pinu.
Oto rysunek z pomysłem. Wciskasz raz przycisk, tym sposobem zasilasz mikrokontroler, który ustawia bit na linii która steruje tranzystorem. Po puszczeniu przycisku układ jest już zasilony. Kolejne wciśnięcia w kwestii zasilania nic nie zmieniają ale na linii przerwania ustawia się poziom wysoki i zanika, wykorzystujesz to jako przerwanie dla mikrokontrolera,...
Problem to jest np. zwykły debouncing, czyli masz przycisk który powinien generować IRQ przy zmianie z 1 na 0 potem kiedy przerwanie jest obsługiwane sprawdzam stan linii od przycisku i ona nie jest zero tylko 1. Więc teoretycznie przerwanie zostało wygenerowane nie poprawnie.
Przejrzyj setkę wątków na forum poświęconych temu, dlaczego do przycisków nie uyżwa się przerwań portów, a potem zrób to w przerwaniu timera, np. tak, jak w tym artykule: http://ep.com.pl/files/10324.pdf Samo programowanie prtzerwania też masz ciut bez sensu - najpierw uruchamiasz przerwanie, potem programujesz linię portu, która ma je zgłaszać. Zanim...
to z tym ne to układ znacząco nadmiarowy, w wypadku uC układ zamykałby się w 2kondensatorach, rezystorze, attiny13 i ew stabilizatorze(i 2kondensatorach do niego). Najbardziej łopatologicznie to sprawdzać stan przycisku w pętli do czasu przerwania z licznika który zerujesz / uruchamiasz w czasie pierwszego wykrycia zmiany stanu i zmienić stan wyjścia...
W przerwaniach masz _delay()- to wielki błąd. A _delay() w pętli- to duzy błąd. Masz Timer i masz go ustawić na przerwanie co 20ms. W tym przerwaniu ustawiasz sobie tyle flag ile trzeba i je zwiększasz. W głównej petli sprawdzasz czy flaga1==1, zerujesz i wykonujesz jakiś warunek. Potem sprawdzasz czy flaga2==5, zerujesz i robisz to co ma być robione...
Generalnie przy LEVEL przerwania są tak długo emitowane, aż zniknie ich przyczyna, w efekcie wywoływane jest ISR i natychmiast zgłaszane jest kolejne przerwanie. Musiałbyś więc po zmianie z LEVEL na RISING jawnie kasować flagę przerwania. W większości przypadków się więc nie używa LEVEL. Piszesz strasznie skomplikowany kod - nie prościj dać BOTH_EDGES...
W zakładce I/O View wybierasz port, potem u dołu pokazują się powiązane rejestry w których możesz zmieniać ich zawartość. Ale i tak ten while nie sprawdza przycisku tylko sprawdza czy przerwanie zmniejszyło już odpowiednio wartość - więc dopóki nie upewnisz się, że przerwanie jest w porządku to raczej lipa. W kursach często zaczyna się od migania diodami...
1. Można wykorzystać przerwanie sprzętowe. 2. Umieścić pętlę w pętli głównej, która sprawdza tylko jeden klawisz w zależności od flagi, którą ustawisz on/off , jeśli on pętla wykonuje się jeden raz a tym samym wykonuje się pętla główna, jeśli off pętla wykonuje się dopóki nie naciśniesz klawisza i ustawisz flagę na on
Badaj w pętli stan przycisków. Możesz wcisnąć case() do pętli. Poczytaj Książkę Kernighana i Richie'go, tam takie fikołki są dobrze opisane. Teraz twoja pętla liczy sobie zwiększając i (i++) i czeka trochę. Wciąż nie sprawdzasz tego, co przychodzi z pilota. Pętla for powinna wyglądać mniej więcej tak for(i=0;i<255;i++) { jeśli w pilocie wciśnięty...
Wiec tak: W ogóle wyrzuciłbym zmienna/flagę F. Nie jest potrzebna tutaj. W programie głównym zamiast sprawdzania F, sprawdzaj A, czyli warunek IF z przerwania przenieś do programu głównego, łącznie z zerowaniem A. W przerwaniu zwiększaj tylko A. Zamiast: If F = 1 Then Cls Locate 2 , 1 Lcd "przerwanie" Wait 1 Cls F = 0 Enable Int0 End If zrobilbym...
Jeżeli sprawdzasz przycisk podłączony do masy, to czemu przerwanie Timer ma być wyzwalane zboczem rosnącym ? Config Timer0 = Counter , Edge = Rising
Czy po wciśnięciu przycisku program ma wykonywać w kółko wybraną sekwencję? Pewne tak, a wtedy: jak w trakcie wykonywania sekwencji program ma reagować na wciśnięcie przycisku? Ma dokończyć wykonywaną sekwencję, czy ją przerwać? Jeśli program ma rozpoznawać wciśnięcie przycisku w czasie wykonywania sekwencji, to zamiast _delay_ms() trzeba wstawić własną...
Przerwać delay możesz tylko przerwaniem. Jeśli chcesz mieć możliwość normalnie przerwania delay to rozbij je na sekwencje kilku mniejszych opóźnień pomiędzy którymi sprawdzaj stan przycisków. A najlepiej zrobić to przy pomocy timerów i przerwań.
Jaki byście podali powód niedziałania ogrzewania tylnej szyby? 1. Przycisk działa świeci się, słychać że przekaźnik pyka jak się włączy czyli jakby prąd do chodzi czyli bezpiecznik ok. 2. Nie są przerwane grzałki na szybie dokładnie sprawdzałem latarką, nie widać żeby była przerwana. 3. Kabel wygląda ok jest w osłonie oryginalnej czarnej. Co można jeszcze...
Czyli wiemy że UPC działa i reaguje na komendy w sieci CAN oraz że kompresor i jego okablowanie jest sprawne. :D Obstawiam, że gdzieś w instalacji jest przerwane. Nie bardzo. :D Teraz pytanie - czy przewody z przycisku od klimy idą bezpośrednio do UPC, czy po drodze jest jeszcze coś? Przewody z przycisku klimatyzacji idą do modułu zespolonego UCH który...
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)...
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...
Muszę to chyba oddać do elektryka. Samemu mając multimetr można coś podziałać? Rozumiem, że trzeba byłoby ściągnąć boczny plastik drzwi kierowcy i sprawdzać napięcie? Chociaż może wówczas byłoby widać jakieś przetarcie, przerwanie tam, gdzie przewody "pracują" przy otwieraniu/zamykaniu drzwi.
Już Ci ktoś tłumaczył w innym temacie, że _delay_ms(i) gdzie i się zmienia nie zadziała tak jak trzeba. Jak widać nauka poszła w las... W Twoim przypadku dzieją się tylko 2 rzeczy równolegle: 1) sterujesz silnikiem (z odpowiednim opóźnieniem między impulsami, od 4 do 1000 ms) 2) sprawdzasz stan przycisków (co 30 ms). Dlatego ustawiasz sobie timer na...
Witam. Szczęśliwie dla użytkowników praktycznie wszystkie wyświetlacze alfanumeryczne LCD obsługuje się tak samo. Ich chipy sterujące są zgodne z HD44780. W skrócie obsługa LCD'ka wygląda tak: - inicjalizacja (zestaw komend sterujących, ustawia się min. sposób podłączenia 4/8 bit, ilość linii itp itd.). Sprawa dosyć dobrze opisana w większości datasheet'ów...
Czyli jeśli masz zewnętrzny przycisk to nie ma problemu - konfigurujesz go tak, aby generował przerwanie i już. Nie musisz wybudzać procesor, nic nie musisz sprawdzać. Ktoś wciśnie przycisk -> procesor się wybudza i robi co chcesz. Jeśli energia jest problemem to M88 zużywa jej na dzień dobry 2xmniej przy normalnej pracy.
Naprawiłem MSI PR600, nie działała kamera, po wciśnięciu przycisku P1 (kamera) wyskakiwało okienko wyszukiwania plików w komputerze. Komp nie znajdował kamery (sterowniki do kamery pobiera z Windowsa u mnie xp, producent tak wymyślił). Przyczyna usterki - przerwane dwa kabelki (czerwony i czarny) łączące kamerkę z płytą główną. Wszystkie przewody (łącznie...
Prawie wszystko jest nie tak - oczekiwanie w przerwaniu, brak eliminacji drgań. To nie tak się robi - potrzebujesz przerwania timera zgłaszanego ze stałą częstotliwością, np. 100 Hz, i w nim robisz wszystko - sprawdzasz stan przycisku i odmierzasz czasy impulsów.
Warto zacząć od uwzględnieniu sytuacji awaryjnych: 1. Co jeśli czujnik się odczepi, uszkodzi. Brak światła? 2. Co jeśli bateria pod wpływem wstrząsów chwilowo straci kontakt a mikrokontroler zasilanie. 3. Skoro to mikrokontroler, to może warto dodać stan baterii? Natomiast kolejne wciśnięcie switcha podczas ściecenia LED nie resetuje licznika czasu....
1. Definiujesz stałe w pamięci RAM, zamiast w ROM. 2. Niepotrzebnie używasz przerwania WDT i portu. Wystarczy jedno przerwanie timera o częstotliwości rzędu 100 Hz, w którym sprawdzasz przycisk, odliczasz czasy i zmieniasz światła.
Sprawdzam czy przycisk zostal puszczony i dopiero wtedy kończę przerwanie. Czy tak trzeba robić ?? niekoniecznie, oczekiwanie na puszczenie klawisza można zrobić w progu glównym, lub spróbuj wogóle to pominąć, teoretycznie powinno dzialać bezblędnie z opóźnieniem na drgania styków. Nie skasujesz INTF oraz RBIF, bez odczytania stanu portu, a bez tego...
Te typy "tak mają" i problem rozwiązuje się sam po określonym czasie od ponownego załączena zasilania. Ten czas zależy od tego, w jakim momencie (temperatura, odladzanie, ciśnienie) zostało przerwane zasilanie do płyty głównej komputera lodówki. Dobrym objawem jest pulsowanie LED wcześniej ustawionych temperatur, wystarczy wcisnąć dowolny przycisk w...
Jak masz jakieś pojęcie o programowaniu to nie powinno być problemu. Najlepiej zrobić to na timerze i przerwaniach. Sam program byłby dosyć prosty w działaniu. Ja zrobiłbym tak. Przerwanie z timera przychodzi jakieś 100 000 razy na sekundę. Robisz 1 zmienną na liczenie przerwań i porównujesz z 2 zmienną która określa jasność świecenia. Przez wszystkie...
Miałem Ci odpisać wcześniej, ale czasu nie starczyło. Więc najlepiej użyj jakiegoś timera generującego przerwanie np. co 100ms. Następnie w przerwaniu od tego timera, sprawdzaj stan przycisku, a dokładniej licz czas wciśnięcia. W momencie zwolnienia przycisku, sprawdzasz ten czas i jeżeli przycisk był wciśnięty poniżej 1sek, to robisz to co było zapisane...
Racja. Dlatego jedną, jedyną flagę przecież sprawdzam (w pierwszym poście jest kod o którym mówię). W przerwaniu ustawiam kilka zmiennych i między innymi też tą flagę ustawiam na warunek zakończenia funkcji samplującej. Nie chcę natomiast sprawdzać dodatkowej flagi od przycisku i stąd mi się wzięło to przeklęte przerwanie generowane przez przycisk.
O przepraszam, nie zauważyłem 24V. Ogólnie od mocy żarówki zależy maksymalny prąd jaki może pójść w elektronikę. Zakładam że odkurzacz od razu nie startuje, tylko coś tam sobie wyświetla, obsługuje przyciski i jeśli nie ma twardego zwarcia to to powinno zadziałać - jakaś reakcja na przyciski. A jeśli jest twarde zwarcie, to się zaświeci, ale przynajmniej...
Zależy od programu. Jeżeli np. sprawdzasz stan przycisku na starcie a późnej program wchodzi w while do można w ogolę nie sprawdzać. Natomiast jeżeli układ ma działać szybko i np. naciśnięcie przycisku wywołuje przerwanie to trzeba dać sprzętową. Ja stosuje if(PINA&(1<<PA0)... { ... while(PINA&(1<<PA0)...
Adaptacje robisz przyciskiem od podnoszenia/opuszczania szyby a jak szyba ci nie działa trzeba sprawdzić dlaczego. Zaczął bym od sprawdzenia instalacji idącej od słupka do drzwi w harmonijce gumowej, czy kable nie przerwane tam też przy okazji można sprawdzić czy jest zasilanie, masa i can to tak na początek bez większego rozkręcania, następnie to chyba...
No to tak: Jakaś funkcja: ...kod.... //chce, aby wystąpiło przerwanie Warunek ...kod... ....kod... ....kod... //chce, aby wystapiło przerwanie Warunek .....kod... Funkcja main //pętla główna I napisałeś, że warunek ma być sprawdzany w pętli głównej.
W setup() powinieneś zainicjować zmienne przycisk_czas oraz uzbrojenie_czas. Podpięcie przerwania do PRZYCISK powinno być również setup(), w funkcji zmiana() możesz sprawdzać stan alarmu (przycisk_czas < millis()) i wykonywać dalszą część kodu. W obecnym stanie, w pętli loop() nie wiadomo ile razy podpinasz przerwanie pod PRZYCISK i co z tego wynika,...
na wszystkie linie wystawiasz zera, potem przerwanie wykrywa przyciśnięcie i procek szybko sprawdza juz normalnie jaki to był przycisk. Chyba że masz palce szybsze od procka ;) lub inne modyfikacje tego
Ja zrobiłem coś w rodzaju matrycy. np. 4 przyciski podłączone do 4 linii i przez diody do przerwania. Przerwanie wywoływane jest dowolnym przyciskiem,a w podprogramie sprawdzałem (po pewnym czsie)jaka liczba wychodzi z tych 4 bitów (przycisków). Dzięki temu mogłem zrobić kombinacje naciśnięć kilku przycisków jednocześnie. Opóźnienie odczytu liczby było...
Może być wiele rzeczy. Zacznij od miernika, test diody i sprawdzaj po kolei cały obwód. Wiertarkę oczywiście odłączasz od zasilania. Sondy do bolców wtyczki. Druga osoba niech manipuluje wiertarką - np. wciśnie przycisk (albo użyj blokady wyłącznika). Powinieneś mieć wtedy niską oporność, równą oporności wewnętrznego uzwojenia wiertarki. Jeżeli nie...
Nie sprawdzałem wcześniej bo uwierzyłem ci na słowo, że sprawdziłeś rejestry ATMega8. W rejestrze TIMSK przerwanie overflow dla timera0 to TOIE0 ale jest to bit 0 a nie 1. W związku z tym inicjacja powinna wyglądać tak: TIMSK=0x01 lub jak wspomniałem wcześniej zdefiniować bit TOIE0: #define TOIE0 0 wtedy zadziała TIMSK=(1<<TOIE0) Bardzo polecam...
Nie programuje w arduino, ale pisałem program w C, w którym używam 3 przycisków, przy czym za pomocą każdego z nich mogę wykonać 3 różne akcje. Ustaw przerwanie od wybranego timera np.co 10[ms], następnie sprawdzaj stan przycisku, jeżeli wykryjesz naciśniecie przycisku to zwiększaj jakąś zmienną będącą licznikiem. Gdy przycisk zostanie zwolniony, to...
Przerwania to nic innego jak wywoływanie konkretnej funkcji, gdy wystąpi określone zdarzenie (np. przepełnienie licznika, odebranie danych z UARTA, zmiana poziomu na pinie INT0) Polecam zapoznać się z datasheetem od uC, którego używasz. Tam znajdziesz informacje o przerwaniach, m.in jakie przerwania są dostępne, jakie rejestry odpowiadają za odblokowanie...
Mam problem ze wzbudzeniem ze stanu SLEEP_MODE_PWR_DOWN poprzez przerwanie od INT0 (PIN D2). Aby wzbudzenie działało poprawnie, muszę "obudzić" Arduino sygnałem LOW. Odbiornik podczerwieni niestety daje sygnał cyfrowy 1 (HIGH). Jak "oszukać" Arduino, inaczej, jak w łatwy sposób zanegować dany sygnał, aby w prosty sposób wzbudzić Arduino ze stanu czuwania?...
A po co 8 pętli do obsługi 4 przycisków? Przerwanie nie przerywa pętli tylko wstrzymuje ją na czas wykonania programu przerwania. Wystarczy jedna pętla główna w której sprawdzasz stan całego portu do którego są podpięte przyciski, wtedy w tej samej chwili masz odczytany stan przycisków. Jak rozumiem z opisu robisz pętle do obsługi każdego przycisku?...
Zacznij od napisania, jak są podłączone przyciski. Zupełnie nie rozumiem czemu w celu zapisu bajtu do rejestru DDR używasz pięciu operacji logicznych na tym rejestrze zamiast napisać po prostu: DDRC = Wyjscie; To samo z PORTC. Dalej . sprawdzasz, czy przyciski są zwolnione, ale nie sprawdzasz, cza są wciśnięte. Przy takiej realizacji - pętla i delay...
Dzięki za rady :) Póki co sobie tylko sprawdzałem czy mi jakiekolwiek przerwanie zewnętrzne zadziała ;p jutro mam cały dzień wolny to zajmę się timerami ;p
Ja się z Mirkiem nie zgodzę, książek o C są tysiące. Oczywiście nie po Polsku. Podstawowy błąd jaki ludzie popełniają to założenie, że C na mikrokontrolery jest jakieś inne niż C na komputery. Nic bardziej mylnego. Zresztą dobrym przykładem jest ten wątek. Przecież gdyby autor chciał coś takiego zrobić na PC, tylko zamiast diod zrobić kolorowe kropki...
Przy tym dysku przycisk smart jest nieaktywny.. Mam też program Victoria i tam też nie da się sprawdzić smart(Error reading smart) :/
Nie miałem na myśli obsługi przycisku w przerwaniu tylko o przycisk, który wykonuje przerwanie w którym jest wysyłanie komendy lub odbieranie (SLAVE). Nie wiem, czy dobrze to rozumiem, ale na wszelki wypadek. Nie wpadnij czasem na rozwiązanie, aby przycisk generował przerwanie. To raczej kiepskie, ale jeśli już, to pamiętaj o debouncingu przycisku...
Jak rozumiem ma być czytane przerwanie z klawiatury ( miedzy innymi ) , a czemu nie zrobić przerwania z jakiegoś timera które będzie cyklicznie sprawdzało pin podłączony z tym klawiszem ( przyciskiem ).
Dziwić się temu może tylko ten, co nie zagłębia się w sprzęt. Skoro przerwanie jest ustawione, to i się wykonuje... Dodatkowe uwagi: - Przyciski z kondensatorami nie łączy się bezpośrednio, kondensator w szeregu powinien mieć 100Ω, bo inaczej za jakiś czas będzie nie dwa wywołania przerwań, tylko 100 z powody wypalenia się styków prądem uderzeniowym...
Momentami odnoszę wrażenie, że nie wiesz co piszesz. Do pomiaru długości nie potrzebujesz dodatkowego timera oprócz tego t0. Wystarczy, że będziesz sprawdzał co określony czas, jeśli na wejściu będzie ten sam stan co poprzednio, to będziesz zwiększał pomocniczą zmienną. Jeśli stan się zmieni, to dopiero zapiszesz wartość do np.tablicy, żeby później...
A w obsłudze przycisku w timerze nie uświadczę drgań styków? To fizyczne zjawisko. Jak obsłużyć przycisk w timerze? Podobnie jak z przykładu poniżej? Obsługę przerwania robiłem w ten sposób: [syntax=cpp]SIGNAL(SIG_INTERRUPT1) { przycisk++; _delay_ms(20); } [/syntax] Delay załatwił drganie styków. W while-u sprawdzałem ile było wciśnięć i zapalałem diodki....
Oczywiście, że pomieszałeś, bo pod PD3 jednocześnie masz podłączone sterowanie anodą wyświetlacza i przycisk - jak wciśniesz przycisk, to odpowiednia cyfra wyświetlacza będzie zawsze aktywna... Użyj Timer1 w trybie CTC do odmierzania 0.01s - przy F_CPU = 1MHz chcesz mieć przerwanie z f=100Hz czyli odliczasz do 10000-1. To będzie za mała częstotliwość...
niestety nie da się obsłużyć przerwania z tego miejsca. Możesz tylko na bieżąco sprawdzać czy nie zmienił się stan przycisku lub czy nie jest on przyciśnięty i tyle. ewentualnie podłączyć go w inne miejsce
1. Podprogram obsługi przerwania "Przerwanie" musi kończyć się instrukcją "Return" 2. Wciśnięcie przycisku z tego co widzę łapiesz przerwaniem zewnętrznym INT0, w takiej sytuacji równolegle z przyciskiem przydałby się kondensator rzędu 100nF lub większy (trzeba popróbować), inaczej będziesz miał trzaski i w efekcie wielokrotne pojawienie się przerwania...
Nie znam Bascoma Odpalasz timer, tak żeby generował przerwanie co 50 ms. W tym przerwaniu sprawdzasz stan portów i to w zasadzie wszystko. W pętli głównej monitorujesz ten stan i odpowiednio reagujesz.
Mam uszkodzenie tego typu, że ciągle jest włączony głośnik i aparat oczywiście zawiesza linię. Wybierać oczywiście można ale nie możemy się już rozłączyć. Uszkodzenie bardzo typowe. Sam już nawet zamieszczałem podobne uszkodzenia w dziale usterki. Mam schemat, który ściągnąłem z Elektrody, ale jest nieczytelny. Jest tam także instrukcja serwisowa z...
Mam takie pytania związane z opóźnieniami reakcji RTOS'a na zdarzenia. Tak czytając ten fragment odniosłem wrażenie że omawiasz opóźnienie związane z reakcją na przerwanie, a nie na reakcje samego wątku. W końcu są elementy, tak wolne że można zrealizować dla nich osobny wątek (np sprawdzanie stanu przycisku), czy wtedy jednak opóźnienie będzie wynosiło...
Funkcja SprawdzNorme powinna zwrócić False, jeżeli norma nie jest spełniona, aby można było przerwać dalsze sprawdzania już przy pierwszym błędzie i uniknąć klikania dziesiątek przycisków OK. Nie możesz dodać w tej funkcji kolejnego sprawdzania, które może zwracać inne wyniki. Dodatkowo, miesiąc sprawdzasz zawsze od 11 wiersza i wystarczy to zrobić...
Do sterowania użyjmy portu B. Przycisk do zmiany efektów to pin D.2, będzie działać na przerwaniu. Potencjometr to pin C.0, przetwornik. No to prawie że gotowiec: $regfile = "m8def.dat" $crystal = 8000000 Config Portb = Output 'Wszystkie linie portu D jako wyjściowe Dim Opoznienie As Word 'opóźnienie między przełączeniami, liczba do 65535...
http://obrazki.elektroda.net/47_12742125... Witam wszystkich. Chcę zaprezentować automat dolewania wody do mieszalnika mieszanki betonowej. Sercem automatu jest sterownik oparty na mikroprocesorze AVR ATmega8. Do sterownika podłączona jest sonda rezystancyjna odczytująca aktualną wilgotność mieszanki i impulsowy licznik przepływu wody. Sterownik...
Ja to robię tak: Do If Flaga = 1 Then 'gdy jest przerwanie od Timer0- co 237us -czyli w zasadzie pętla wykonuje się co 237us aż do flaga=0 If Pinb.0 = 0 Then 'i jest wciśnięty przycisk PIND.2- ustawianie kierunku jednym przyciskiem Incr Opoznienie_odczytu 'no bo przycisk ma drgania dłużej niż 237us- niech zwiększy 'to sprawdzanie powtórne do 17ms If...
W zasadzie nie potrzebujesz JP13. To chyba taki ukłon w stronę 8051 z dwoma przerwaniami zewnętrznymi. AVRy mają przerwania PCINT na prawie wszystkich pinach i w momencie jak wciśniesz przycisk i tak możesz wywołać przerwanie. Niemniej w ogóle nie powinieneś robić tego na przerwaniach zewnętrznych (poza wyjątkową sytuacją gdy wprowadzasz uC w głębokie...
hmmm jeżeli chodzi o klawisze proponowałbym zrobić tak: linie z PCINTX podciągnąć rezystorem 1M do stanu wysokiego a następnie dać na przycisk który byłby zwierany do masy(linie jako wyjście) PCINT reaguje na każda zmianę stanu na pinach (wybranych) także zwierając linię do masy wywołujesz przerwanie w którym sprawdzasz stan portu
Co do odświeżania masz gotowy kawałek w moim drugim poście. Po co sprawdzanie stanu przycisku co 4 ms? Jak chcesz pomiar temperatury co 1s, to dorzucasz odpowiednio skonfigurowane przerwanie z timer1. Zczytywanie co 100ms masz przecież zrobione flagą chyba że nie działa. co do przyciska masz w moim pierwszym poście. Jeżeli coś jest nie zrozumiałe to...
Witam. Mam podobny problem z Parrotem CK3100. Kłopot polega na tym, że pomimo braku sparowanych telefonów, podczas wgrywania nowego oprogramowania, wyświetla się komunikat o pełnej pamięci i instalacja przez BT zostaje przerwana. O tyle jest to dziwne, że przed rozpoczęciem wgrywania nowego softu sprawdzałem w urządzeniu i z komunikatu wynikało, że...
Twojego programu nie analizowałem, nie chciało mi się, albowiem od razu Ci powiem, że ja bez przerwań w ogóle bym się za to nie zabierał i dotyczy to nie tylko enkodera ale także zwykłych przycisków. Tak jak napisał tmf , każdy zestyk ma tendencję do drgań, a więc enkoder również, jest to opisane w książce Pieńkosa i Turczyńskiego "Układy scalone TTL...
Możesz zrobić tak: W tabelce zdefiniowana długość poszczególnych elementów (piknięć i przerw). W timerze zdefiniowana maszyna stanów - na podstawie jej stanu aktualnego (wartości timer'a) wybierasz określony "punkt programu" - czyli przerwę lub "piknięcie". Co się tyczy przycisków, to możesz zdefiniować albo przerwanie zewnętrzne, albo w przerwaniu...
Kierownica nie działała prawidłowo (klikały się przyciski samoczynnie, praktycznie wszystkie, które były na kole kierownicy), natomiast po zlutowaniu jednego kabla, który był przerwany (jasny niebieski) i skręceniu kierownicy, wszystko działało w porządku, gdyby nie to, że odczuwalne było rażenie prądem przy dotykaniu pedałów. Sprawdziłem niestety próbówkę...
A AVRach oprócz nowej serii Xmega nie ma priorytetów przerwań. Obsługa przerwania blokuje wszystkie przerwania. Rozwiązaniem jest timer. Nie zwykłem wykorzystywać przerwań zewnętrznych do przycisków. Lepiej wykorzystać timer. Sprawdzając co np 100ms ich stan. 2x wykrycie kolejno mamy akcję. Dodatkowo w ten sposób łatwo zrealizować inna funkcje przycisku...
No niestety trzeba będzie trochę popracować... :D Proponuję tak (attiny13): 0. konfigurujesz porty, włączasz pullupy na pinach z przyciskami 1. procesor czeka w uśpieniu na pin change interrupt 2. po obudzeniu sprawdzasz jaki kod wysłać, wyłączasz przerwanie pin change 3. w pętli wysyłasz kolejne bity włączając i wyłączając PWM (opis kodu RC5 [url=http://www.ustr.net/infrared/index....
sprawdzać przerwać przerwać przycisk przycisk przerwać
uszkodzona grzałka kuchenki testy akumulatorów transceiver kenwood
philips 58pus schemat instalacji fotowoltaicznej
Novox PBT-305 – dioda gaśnie po włączeniu, brak sygnału z mikrofonu, diagnostyka zasilania Jak sparować pilot dekodera 4K Multi z telewizorem Samsung?