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...
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...
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...
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,...
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 ?
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ć ??
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...
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
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.
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...
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ń.
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.
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.
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
"Pewność" podciągania zależy po prostu od wartości rezystora podciągającego. Wewnętrzny ma 20...50k. Nie ma znaczenia czy użyjesz wewnętrznego, zewnętrznego czy obu. Chyba, że zewnętrzny dasz daleko od mikrokontrolera, albo przewidujesz możliwość urwania rezystora. ;) Włączenie podciągania nie zaszkodzi, a w programie wiadomo, że jest podciąganie do...
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).
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
drgania styków drgania styków przekaźnika drgania styków mirek
ferguson niektóry bascom powerdown silnik ogranicznik ruchu
radio range rover radio range rover
Schemat lodówko-zamrażarki z jednym regulatorem: zasada działania i elementy Przekręcenie pokrętła pralki o 2 stopnie - co to oznacza?