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...
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...
Wiem o tym, czytałem te wszystkie wywody na temat jaki to Bascom jest plugawy , ... Zastanów się młody człowieku co czytasz i piszesz. ... stąd też przy tym głupieję ( sam fakt, że muszę w tym Bascomie operować jest dość... ). :) ... ale nie mam wyboru - z przyczyn ode mnie niezależnych muszę go jakoś okiełznać... (a przynajmniej w stopniu podstawowym)...
http://obrazki.elektroda.pl/6844642700_1... Witam wszystkich serdecznie :) Jakiś czas temu luba poprosiła mnie o zrobienie włącznika do światła na pilota bo nie chce jej się wstawać z łóżka by je zgasić - no cóż, pięknym kobietom się nie odmawia :D Po chwili w głowie powstał wstępny projekt i prototyp opierający się na zasilaczu beztransformatorowym...
Czy na płytce są sprzętowo wyeliminowane drgania styków ? A jak obsługujesz ten enkoder ? Masz jakiś przykładowy kod ?
Drgania styków i ich eliminacja - poszukaj, poczytaj. Domniemam że impulsy nie pochodzą z innego układu cyfrowego ale z przycisku;-)
Powoli myślę nad Atmega64 ponieważ cały czas kręcę się w okolicach 95% pamięci Flash. Czy na pewno nie ma innego sposobu? Sposób jest bardzo prosty ... zmień język na C lub assembler. W drugiej kolejności zastanów się nad zewnętrznym flashem, bo jak sądzę tę pamięć zajmują Ci próbki dźwięków, a nie program. Przerwania zarezerwowane. Timery i ADC także?...
ustawiasz licznik tak by generował przerwanie co 50ms w tym przerwaniu sprawdzasz swoje sygnały (przyjmijmy ze wyzwalanie jest zerem) w przerwaniu sprawdzasz czy sygnał jest = 0 jeśli tak ustawiasz sobie jakaś zmienna bitową flagę (znak ze sygnał jest). w następnym przerwaniu (flaga ustawiona) sprawdzasz znów sygnał jeśli jest 0 np włącz silnik. dodatkowym...
albo rozbij oczekiwanie, wstawiając przy okazji procedurę sprawdzania klawiery, nie musisz zmieniać istniejącej płytki drukowanej (jeśli jest :) )i przy okazji pozbywasz się problemu drgania styków cum bajszpil: dim D as byte, dim U as byte D = 10 ' czekamy 200ms for U = 0 to D waitms 20 if <przycisk + wciśnięty> then incr D enidif if <przycisk...
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...
aha rozumiem juz czytam o przyciskach i to waitms 45 to ma ominąć drgania styków w takim razie będe musiał czekać 9 sekund zeby sprawdziło przycisk to musze z przycisku zrezygnować bo to za długo a zrobie zeby np po przejsciu pętli for next zamigało strobem pare razy i od nowa pętle
janbernat --> tak na pierwszy rzut oka to w tym rozwiązaniu do obsługi klawiatury nie ma jednak żadnego mechanizmu eliminacji drgań styków i stąd może być to wrażenie, że niepewnie się przełącza itp moim zdaniem. Zobacz, naciskamy klawisz - rozpoczynają się drgania (zawsze występują prawda?) u ciebie od razu na pierwszy sygnał drgania styku reaguje...
Witam wszystkich Nie mam pojęcia o Bascomie a muszę napisać przykłady , Proszę o pomoc szybkość 9600 rezonator 110952 Mamy 8 klawiszy od (P1.0 do P1.7) oczywiście zwierane do masy naciskam klawisz np. (P1.0) i uzyskuję na RS232 komunikat (#70, #13) naciskam klawisz np. (P1.1) i uzyskuję na RS232 komunikat (#71, #13) naciskam klawisz np. (P1.2) i uzyskuję...
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...
Dzień dobry, Popełniłem prosty programik na ATtiny2313. Przy naciśnięciu któregoś z guzików (Pind.0 lub Pind.1), zmienia się wartość rejestru Pwm1a - porównywanie ze stanem timera1. Dzięki temu uzyskujemy efekt rampy i rosnącą częstotliwość na wyjściu. Niestety program działa o tyle dziwnie, że czasami się zacina - tzn czasami zmiana częstotliwości...
no ja to też jestem głupi. Kolega ma oczywistą rację. Kod poprawiony $regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portb.1 , Rs = Portd.7 Config Pind.3 = Input Config Pind.2 = Input Portd.2 = 1 Portd.3 = 1 Dim C As Byte Dim Ja As Byte...
Dalej nie Stop Ac, ale chyba miałeś na myśli Config ACI = Off. Według pomocy Bascoma, to polecenie wyłącza komparator w uP. Ustawiłeś nowym procesorom BODLEVEL na 2.7V (czy jakoś tak) i BDOEN = enable? Nie. Spróbuję ustawić. Disable INT0 w przerwaniu nic złego nie zrobi. W dodatku jeszcze to Disable INT0 wewnątrz samego przerwania INT0 (w Bascomie...
Witam! Program działa poprawnie. Testowałem z 3-4 programy do obsługi tego czujnika ciśnienia. Wyniki są złe, porównaniem z innym ciśnieniomierzem zaniża o 30..40hPa. Zasilanie BMP180 3.3V, ATMEGA32, 8MHz. Czy ktoś się spotkał z takim problemem? [syntax=vbnet] '----------------------- '| Test modułu BMP085 | '----------------------- 'Uwaga: pomiar jest...
Jaki to enkoder? Jeśli mechaniczny to rzucam hasło pt. drgania styków.
To ma zliczać impulsy z enkodera. A nie można zastosować czegoś takiego do eliminowania drgań na stykach?
Bez sensu, po co pierwsze zmieniasz rejestr port, po ro by go odczytać? Pozatym gdzie eliminacja drgań styków?
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.
Uruchom przerwanie od Countera (najlepiej od porównania wartości zliczonej z ustawioną) i zmień stan portu w podprogramie obsługi przerwania lub prościej, ale mało elegancko zmień [syntax=basic4gl]If Counter1 = 100 Then ...[/syntax] na [syntax=basic4gl]If Counter1 >= 100 Then ...[/syntax] Nie tak jest to, że w chwili zliczenia setki nasz if może się...
Ok, czyli efektów powodowanych przez drgania styków wcale nie uwzględniłeś w programie. Dobrze zrozumiałem? Każdy mechaniczny styk w momencie przełączenia, na skutek drgania (sprężystości) styku generuje kilka załączeń/rozłączeń. Musisz to uwzględnić w programie i odfiltrować. Przeszukaj sobie elektrodę pod hasłem "drgania styków".
Podciągnij PinA.6 do VCC: Porta = &B01100010 Przekaźnikiem zwieraj PinA.6 do masy a stan sprawdzaj za pomocą: If Pina.6 = 0 Then ps. Zadbaj o eliminację drgań styków przekaźnika !
W kodzie nie napisałeś "crystal = ...". W tej linijce do ustawiania programatora możesz wpisać jak podała instrukcja. Switchów się tak nie podłącza do portów wejściowych. Kabuto15 - Możesz mi powiedzieć dlaczego nie można tak podłączać przycisków? W kodzie dajesz tylko Set Portx.y I przycisk działa jak powinien (pomijając kwestie drgania styków).
(at)woszu - wydaje mi sie ze powinienes to uwzglednic - bez znaczenia jest czy wtrysk zalaczany jest masa czy nie - zawsze pojawia sie drgania stykow. http://devil.siedlce.net/~luuki/?body=Te... Tu masz troche o drganiach styku.
Fusebit C powinien być disable. A jest enable i procesor chodzi na 1Mhz. Wszystko normalne, tak jest fabrycznie ustawiony. W programatorze wchodzisz w zakładkę fusebits i ustawiasz fusebit C na disable. NIE RUSZAJĄC INNYCH FUSEBITÓW! P.S Sprawdzony program wysłałem Ci w mailu. Ale jest on przeznaczony do pomiaru czasu z fototranzystorów a nie z przełączników-...
w bascomie jest gotowa instrukcja "encoder" , czy nie byłoby ci łatwiej jej użyć ? , ja w swoim projekcie co 2,2 ms wchodzę do podprogramu z obsługą encodera i nie mam żadnych problemów z drganiem styków
Akurat takich mam dostatek, jednak nie bardzo rozumiem, jak wykożystac sprzętową obsługę w bascomie W helpie jest opisana funkcja ENCODER(), zatem może warto najpierw te parę zdań przeczytać? W obsłudze przerwania sprawdzasz stan wejść i porównujesz z poprzednim stanem Nie zapominajmy o drganiu styków. Jeszcze nie spotkałem enkodera mechanicznego,...
Nie wiem co jest nie tak, nie bardzo mogę sobie z tymi LED-ami poradzić. Próbuje i próbuje i nic z tego. Dodatkowo mam jeszcze mały problem z drganiami styków. Wiem że w bascom jest DEBOUNCE, ale nie wiem jak to zaimplementować do mojego programu (gdy próbowałem to cały program sie wykłada) Ma może ktoś jakiś pomysł jak to zrobić ??
W celu eliminacji drgań styków należy użyć przerwania licznika, by odczytywać stan przycisku tylko raz na około 10 ms . Nie używamy funkcji Debounce i delay_ms ! Czy przycisk został naciśnięty sprawdzamy w zmiennej globalnej dostępnej w programie głównym.
Diodę gaś tak jak ją zapalasz. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 1000000 Config Portb.0 = Input Config Portb.1 = Input Config Portd.5 = Output Przycisk1 Alias Pinb.0 Dioda Alias Portd.5 Przycisk2 Alias Pinb.1 PORTB.0 = 1' to jest podciąganie do Vdd - działaj w tym celu na rejestrze 'PORTX lub PORTX.Y PORTB.1 = 1 Reset Dioda Do If Przycisk1...
Niech Kolega poczyta co to są drgania styków - to one powodują generowanie przerwania w nieodpowiednich momentach.
Może dodasz jakieś małe opóźnienie (20-80 ms) w celu eliminacji drgań styków przy sprawdzaniu stanu S3 ?
1. Czy w kodzie do tej karty, aby dodać przyciski to wystarczy podać który pin jest wejściem i co program ma zrobić po wykryciu sygnału czy jeszcze coś trzeba zmienić ? 1. Ustawić piny jako wejścia. 2. Sprawdzać ich stan w głównej pętli 3. Przemyśleć sprawę wyeliminowania drgania styków 4. Zmienić stan portów sterujących. 2. Czy tak mają wyglądać wejścia...
Prawdopodobnie będziesz się męczyć z drganiami styków (jak wiele początkujących osób) więc użyj komendy Debounce lub odczekuj chwilę podczas detekcji wciśnięcia.
jeszcze raz dzięki, programik już działa - faktycznie, że przerwania bez sensu w takim przypadku - zastosowałem się głównie do rad euromatica o zamianie zmiennej typu byte i jest ok. drgania styku wogóle nie występują. Pozdrawiam Przemo
Zapomniałem dodać że program ma być w bascom i czy kolega dr.hannibal mógłby podać przykład w bascom.
Takie powtarzanie ma na celu eliminację drgań styków a co za tym idzie niechcianych przypadkowych uruchomień.
Może jest to spowodowane drganiami styków klawiszy? Spróbuj przylutować kondensatory(1nF-100nF) równolegle do przycisków. U mnie takie coś pomogło. Pozdrawiam Yakuza
Po za tym do obsługi klawiszy używaj Debounce . Wyeliminujesz wtedy drgania styków. Możesz także dodać do nich aliasy, wtedy będzie o wiele prościej i przejrzyściej.
Witam. Jeżeli konfigurujesz pin jako wejście to używaj instrukcji : Config Pinc.0 = Input zamiast : Config Portc.0 = Input Jak wykrywasz zmianę stanu przycisku i wysyłasz dane przez RS to wstaw małe opóźnienie aby uniknąc drgania styków.
Bascom posiada instrukcję "debounce" do eliminacji drgań styków i standardowo sprawdza styki powtórnie po 25ms . nie zdarzyło mi się żeby to nie zadziałało poprawnie. fakt, że zawsze z mikroswitchami, ale przy dwupozycyjnym wyłączniku raczej nie ma niebezpieczeństwa zbyt krótkiego załączenia, więc mozna wstawić większy kondensator( opornik) bez żadnych...
Wystarczy jedno wejście I NTx , które będzie wykrywało ten impuls. Ale jeśli to będzie impuls "z ręki" jakiś klawisz to bez sensu - ze względu na drgania styków a potrzebny minimalny czas np 1ms. Jeśli to będzie impuls z jakiegoś wyjścia cyfrowego to ok. Założenia: - wykorzystamy tylko jedno wejście INTx - wykorzystamy tylko jeden Timer sprzętowy Przygotować...
Ta komenda to Debounce. Eliminuje m.in. drgania styków. alien_audio Co to ma być: set pinb.4
A po co zaprzęgasz Bascomowy ENCODER() Zobacz na ten przykład :) Jest to bardzo proste ] Testowałem to, ale z uwagi na to że posiadam "gówniany" enkoder mechaniczny, drgania styków, powodują że kawałek kodu z linku nie działa jak powinien.
Jaka zwłoka czasowa powinna wystąpić podczas podwójnego kliknięcia ? To Ty decydujesz jak ma urządzenie działać. Na pewno zwłoka musi być większa od czasu drgań styków (kilkadziesiąt milisekund od wykrycia zwolnienia przycisku).
Cześć BascomAVR któraś z nowszych wersji, zmienne zadeklarowane minimalistycznie, kodu nie mam na tym kompie, żadnych mnożeń, dzieleń, czytam wejścia analogowe ( 5 sztuk ) i porównuję no i te pętelki... Czy Bascom łyknie jakąś bardziej złożoną instrukcję ( wiele warunków ) IF ?, w zasadzie mógłbym namnożyć zmiennych bitowych i ustrawiać nimi flagi po...
Aby wykonać taki generator na Atmedze możesz posłużyć się sprzętowym PWM'em. Prawdopodobnie obsługa przycisków nie działa Ci prawidłowo ponieważ na linii występują zakłócenia, a także drgania styków. Nie wiem jak wygląda schemat, ale dobrą praktyką jest podciągniecie linii do plusa wewnętrznie lub zewnętrznie w przypadku, gdy oczekujesz stanu niskiego....
drgania styków drgania styków przerzutnik drgania styków mirek
pilot samsung zamiennik cewki laguna kupno używanego samochodu
philips service manual philips service manual
Instrukcja do Magomig 505W - gdzie znaleźć? Błąd STOP 0x0000000A przy odinstalowywaniu Total Media 3.5 w Windows XP