Na temat debouncingu poczytaj [url=http://www.elektroda.pl/rtvforum/to... temat. Warto.
Matryca z komparatorami jest jakimś matrycowym dzielnikiem napięcia Nie. Jest to układ stricte cyfrowy. Dla uproszczenia narysowałem tylko jeden przycisk i częśc komparatorów. W stanie spoczynkowym napięcia na wejściach są jak na rys. i na wyjściach są "1" logiczne. Po naciśnięciu przycisku na wejściach od strony przycisku ustawia się połowa zasilania,...
http://obrazki.elektroda.pl/5431448900_1... 74HC74 bramkuje sygnał wejściowy tak aby jego impulsy nie były krótsze niż impulsy taktowania licznika 74HC590(już samo to wyfiltrowuje część krótkich szpilek) - blokuje to możliwość wyzwalania przerwania ICR1 z nadmierną częstotliwością. W układzie jak na rysunku 74HC590 zlicza gdy sygnał...
Jest to normalne w przypadku przycisków... Drganie styków powoduje pojawienie się więcej niż jednego zbocza... Poczytaj na forum o niwelacji drgań styków...
DRGANIA STYKÓW!!
Rezystory podciągające ATMega ma wbudowane - trzeba tylko włączyć. Jeśli to praca inżynierska to pora zacząć od podstaw pracy z AVRami... A do eliminacji drgań styków czasem same kondki nie starczają - owszem, pomagają, ale nie niwelują problemu do 0
czekają aż drgania styków zanikną ?
Właściwym wektorem jest INT0_vect. Teraz już działa? Jeżeli wymuszasz przyciskiem, to o problemie drgań styków wiesz?
Zmienna liczba musi być typu volatile, to tak na szybko. ;) Dodano po 13 No zrób jakieś opóźnienia, żeby wyeliminować drgania styków.
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...
Enkoder to mechanicznie zwykły przycisk. Ma też wszystkie wady przycisku, czyli np. drgania styków. Wiele enkoderów na jeden "przeskok" generuje 2-4 impulsów i oczywiście czasy trwania poszczególnych faz zależą od szybkości kręcenia. Przejrzyj darmowe przykłady do książek w mojej stopce - masz tam przykłady obsługi enkoderów w oparciu o ATMega i XMEGA.
Aaa w ten sposób, przy takiej klawiaturze jest potrzebna eliminacja drgań styków?
Jeżeli chodzi o ten transoptor z dwoma diodami, to rozumiem, że chodzi o jakiś dwukierunkowy typu PC814? Tak. Będzie to też tańsze i nie będzie wprowadzało szpilek z drgań styków jakie są przy przekaźniku.
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...
[syntax=c]If ((!(PIND &0x03)) | (!(PIND & 0x06)) | ((!(PIND & 0x05))) { PORTA = 0x00;}[/syntax] to jest złe. a przerwanie? troszkę później się ty zajmij. przy przyciskach występują drgania styków. A to sprawi ci klopot
Witam, Dzięki za wsparcie, już sobie poradziłem, trochę na około, bo z użyciem goto. Delay w przerwaniu po to, aby wyeliminować drgania styków. Nie wiem jak to inaczej obejść. Z goto raczej sobie nie poradziłeś. Drgań styków nie wyeliminujesz. Najprościej, to nie reagować na drgania tych styków. Standardowa i nudna odpowiedź: zacznij od algorytmu, bo...
Czy na płytce są sprzętowo wyeliminowane drgania styków ? A jak obsługujesz ten enkoder ? Masz jakiś przykładowy kod ?
Atmega 328P -z tego co widze to ma pull-up'y na każdym porcie, w każdym razie jak dawałem kondensator 100n to nic to nie dawało
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...
Załóżmy, że to też błąd przy wklejaniu kodu (inaczej asembler zgłosiłby błąd). Powinno być R21 , a nie R121 . Być może to też błąd przy wklejaniu. Bity WGM12 , CS12 oraz CS10 nie znajdują się w rejestrze TCCR1A tylko w TCCR1B . Istotne jest jednak to, że ustawiając tylko bit WGM12 ustawiasz TIMER1 w tryb 4, czyli tryb CTC, w którym timer liczy od 0...
W takim razie nie trzeba żadnych rezystorów. Jeden koniec przycisku podłączasz do wybranego portu mikrokontrolera, a drugi do masy. W programie musisz dać "0" zamiast "1", ale to chyba wiesz sam. Przykładowo przycisk dołączony do PB1 ma zrobić podniesienie wartości I o jeden: $REGFILE="m8def.dat" $CRYSTAL=8000000 Config Pinb.4 = Output Config...
Napisz co te warunki mają robić (słownie) to Ci napiszę nowe. Zdajesz sobie sprawę, że ten warunek if( !++key_lock ) będzie spełniony tylko wtedy, gdy key_lock przed inkrementacją ma wartość 255? R Dodano po 2 Może coś krzaczy się podczas zaniku napięcia, próbowałeś ustawić BOD level w fuse bitach? Jeśli podczas zaniku napięcia nie używa przycisków...
A co zrobić żeby kolejne kliknięcie zmieniło x na zero? To nie zadziała zbyt dobrze, bo przytrzymanie przycisku będzie ciągle zmieniać stan x na przeciwny. Zresztą taką zmianę szybciej można zrealizować za pomocą x^=1; Stąd też najlepiej PINC przypisać do jakiejść zmiennej tymczasowej i sprawdzać czy od ostatniego sprawdzenia stan przycisku uległ zmianie....
Straszny ten kod jest. Przykładowo - po co jest coś takiego: [syntax=c]for(;;) while(1)[/syntax] albo to: [syntax=c]if( ! (PIND & (1<<PD3)) ) //tutaj sprawdzam trzeci bit z portu D { _delay_ms(200); //czekam, aż drgania styków ustaną n=n+1;[/syntax] Zastanów sie czy ten delay ma jakiś wpływ na drgania. Czy nie lepiej po tym delayu raz jeszcze...
Po pierwsze aby zwiekszyc predkosc pulsowania diodek powinienes zmniejszac z a nie zwiekszac (czyli dzielic przez dwa a nie mnozyc razy 2). Po drugie dwukrotne sprawdzanie if ((PINA&0x01)!=0x01) nie ma sensu, chyba, ze miedzy nimi wprowadzisz opoznienie. Po trzecie po odczekaniu Twoich 300ms masz tylko ultrakrótki czas na sprawdzenie if((PINA&0x01)!=0x00)....
1. Do których linii i w jaki sposób są podłączone przycisk i dioda? Schemat! 2. Masz dwa proste błędy - w ATmega rezystory podciągające wejścia włącza się poprzez ustawienie linii portu jako wejścia ORAZ zapis jedynki do rejestru PORTx, czyli: DDRB=0x00; PORTB=0xFF; No i sprawdzanie wciśnięcia przycisku: pojedynczy & zamiast podwójnego! 3. Nieprawdziwych...
Zastosowanie kondensatora jako zabezpieczenie przed drganiem styków nie wydaje mi się zbyt dobrym pomysłem ponieważ gdy przycisk zostanie puszczony , procek będzie "myślał" jeszcze przez pewien czas (dopóki ten kondensator się nie rozładuje) że przycisk jest wciśnięty. Sam programuje w BASCOMIE ale nigdy nie używam gotowego polecenia "debounce" (czy...
Witam! Jeśli chodzi o tego typu połączenia z uC, to w praktyce stosuje się rozwiązanie "a)", czyli przycisk jest aktywny niskim stanem. Jesto to pewniejsze rozwiązanie. Rezystory podciągające w ATmega mogą płatać różne figle, o czym się już kiedyś przekonałem. Koniecznie dołóż zewnętrzne podciąganie do Vcc, np. przez rezystor 4,7kΩ. Pamiętaj także...
Całkiem błędna sugestia - sygnał pochodzi ze styków, a ATmega nie ma sprzętowego filtrowania wejść timera. Tu sprawdzi się tylko zliczanie programowe w przerwaniu timera. Proponuję na początek częstotliwość ok. 50..100 Hz - powinieneś w ten sposób bezpiecznie ominąć drgania styków.
Pewnie to przez drgania styków.Program to interpretuje jako kolejne naciśnięcia przycisku i wychodzi z tego losowe wypełnienie.
uu teraz gdy odłączyłem zasilanie samego silnika to zauważyłem, że gdy zadziała jedna krańcówka (w postaci kontaktronu) to efekt jest podobny do resetu. Więc może to być wina programu, ale nie koniecznie. Możliwe ze podczas startu kontaktrony się zwierają, ale w poprzednim układzie takie coś nie występowało. Poprzednio sterowanie miałem na bazie przerzutników...
ten debouncing to mówisz o ....... drganiu styków? czy można w takim razie kontrolować stan klawisza z opóźnieniem np.10ms? z drugiej strony kondensator 100nF na nóżkach pryszcza powinien załatwić temat
Przykład USART na przerwaniach: http://mikrokontrolery.blogspot.com/2011... Przycisk na przerwaniach - ustaw tiimer do pracy z przerwaniem przepełnienia i sprawdzaj w nim stan przycisku. Możesz oprzeć się o ten przykład: http://mikrokontrolery.blogspot.com/2011... Możesz także wykorzystać...
Witaj 1. stosuj tabulator bo kod jest mało czytelny. 2. nie pokazałeś funkcji przerwań stąd zapytam: Drgania styków przycisków eliminujesz?: http://mikrokontrolery.blogspot.com/2011... 3. ode mnie masz 25 pkt za stosowanie C - boś biedny (2.88pkt), a mogą Ci się przydać :)
Witaj Adamie. ... i niestety nie wychodzi. Na jakiej podstawie tak uważasz? Dodam, że pracuję na Atmel Studio 6, które bardzo nie lubi funkcji SIGNAL(SIG_INTERRUPT0) Ponieważ SIGNAL jest przestarzałe: http://www.nongnu.org/avr-libc/user-manu... Atrybut NOBLOCK dodałem na końcu, więc można się nim nie sugerować. W jakim celu?...
W ten sposób daleko nie zajdziesz. Zacznij od tego, żeby testować przyciski w przerwaniu timera - kod bęzie znacznie prostszy i bardziej niezawodny. http://mikrokontrolery.blogspot.com/2011... żeby pozbyć się if() możesz napisać signal_incrValue = !!(PIND & 0b00000010); albo signal_incrValue = PIND >> 1 & 1;...
Np. to http://mikrokontrolery.blogspot.com/2011... i z 1000 innych rozwiązań. A po co te przekaźniki? W celu zwiększenia zakłóceń? Do sterowania światłami b. dobrze nadają się tranzystory MOSFET. Jeśli masz wspólny minus, to potrzebujesz par npn małej mocy + PMOSFET do załączania plusa. http://mikrokontrolery.blogspot.com/2011...
Unsigned char to jeden bajt zaś int nie może być mniejszy niż 2 bajty. Opóźnienie 100ms w warunku eliminuje drgania styków. Dla zabezpieczenia można oczywiście dodać flagę a następnie sprawdzać jej stan w momencie sprawdzania warunku.
Widziałem podobne rozwiązanie kiedyś w jakimś magnetowidzie. Czyli sprawdza się nawet na skalę masową. :) Oczywiście, drgania styków też będziesz musiał filtrować - przez sprawdzanie stabilności wyniku. Ten ADC jeszcze do czegoś wykorzystujesz?
co do wejścia z pullup: kasujesz odpowiedni bit w DDR (ustawiasz jako wejście), a odpowiedni bit w PORT ustawiasz. co do kodu: losowo? może to być spowodowane przez 2 rzeczy: po pierwsze nie masz żadnego eliminowania drgania styków (jeśli takowe mogło by się pojawić), po drugie sprawdzasz nie przejście 1->0 tylko sprawdzasz, czy przycisk jest naciśnięty...
Witam zastosowanie timera w konfiguracji licznika w takim wypadku się nie sprawdzi. Naciśnięcie i puszczenie niesie za sobą efekt uboczny czyli drgania styków. Przez to twój licznik przy jednym naciśnięciu przycisku zalicza kilka impulsów. Taka konfiguracja timera jest przystosowana do stabilnych (czyt. nie drgających sygnałów) . Zamiast zaprzęgać do...
A tu zalecałeś blokowanie przerwania, w celu likwidacji drgań styków i zabezpieczenia się przed ponownym wywołaniem przerwania. http://obrazki.elektroda.pl/7094155700_1...
Rpal (at) wiadomo jaki czujnik bo napisałem w temacie że UGN3120.Schemat jest taki ze + do + - na gnd a wyjście bezpośrednio na wejście procka. Emarcus(at) 1. Czujnik to tak jak napisałem ugn3120 właśnie nie wiem na jakie zachowanie pola powinien reagować 2. wyjście czujnika mam podpięte pod wejście w uC. całość jest zasilana z tego samego źródła. całość...
Już odpowiadam - wyświetlacz jest na i2c bo potrzebuje dwa wyświetlacze zastosować a tylko tak umiem to zrobić - bramki na wejściach przycisków (bramki schmidta) są w sumie tylko efektem ubocznym zastosowania układu który bym mi potrzebny do zastosowania countera wcześniej bez tego układu counter co trochę sam dodawał lub gubił impulsy a od momentu...
Bo użyłeś niewłaściwy rejestr do ustawienia zbocza. Patrz rozdział: 17.2.1. External Interrupt Control Register W efekcie nadal masz wybrane przerwania na: The low level of INT1 generates an interrupt request. Przy okazji pamiętaj o drganiach styków: http://mikrokontrolery.blogspot.com/2011...
Do wejścia PB2 dolutowałem 1uF (ceramik) plus kilka zmian w algorytmie. Wydaje się że problem drgania styków jest opanowany. [syntax=c] #define F_CPU 16000000UL // Atmega644 #include <avr/io.h> /*biblioteka avr*/ #include <string.h> /*biblioteka napisy*/ #include <stdio.h> /*biblioteka podstawowa C*/ #include <stdlib.h> /*biblioteka...
Stosując interfejs JTAG mamy właśnie sprzętowy dostęp do wszystkich rejestrów, jakie by one nie były. Można np. załączyć debuggowanie, potem wymusić 0 (sprzętowo - zwierając tą linię do masy) na jakieś linii portu. Będzie to widać w AVR Studio - zmieni się stan PINn. Można też zmieniać wartości pszczególnych rejestrów, flag np. słowa stanu (odpowiednik...
Koniecznie zadbaj o to, żeby wychodząc z tego przerwania jego flaga była wyzerowana, a wtedy to o czym kolega _marek_ mówi nie będzie miało miejsca. --- Podczas puszczania przycisku są zdecydowanie mniejsze drgania styków niż podczas jego przyciskania i o to mi chodziło. Poza tym reagujesz wciąż na zbocze opadające a tylko czekasz z powrotem na narastające,...
Niestety klawiatura matrycowa wymaga nieco zachodu z jej obsługą, za to wymaga mniejszej ilości pinów - coś za coś :) Nie wiem jakie dodatkowe funkcje będzie miał program, ale z reguły skanowanie klawiatury robi się w oparciu o jakiś timer, bo dodatkowo należy eliminować drgania styków. Strona ... korzystaj do woli, a w razie problemów pisz na forum...
Tranzystory sterujące diodami połączyłbym trochę inaczej: http://obrazki.elektroda.net/3_124643515... Rezystor na bazie tranzystora ma 4,7kΩ. Co do tych kondensatorów to ja uważam, że są zbędne, gdyż drgania styków można rozwiązać programowo (ale to tylko moje zdanie i wszystko zależy co to ma robić/jak działać).
Witaj. Zacznij od na przykład tego: http://mikrokontrolery.blogspot.com/2011... i zaglądnij także do spisu treści oraz oczywiście datasheet mikrokontrolera. 1. Nie jeśli jest zasilany także z 5V. 2. tak, ponieważ włączasz wewnętrzny rezystor pull-up, który wymusza jedynkę na wejściu (pinie). Zwierając przyciskiem pin do...
Czyli przyjmujemy, że nie ma problemu z drganiami styków i innymi zakłóceniami. Jeżeli dobrze zrozumiałem zasadę działania czujników oraz Twój cel i chcesz wykorzystać obydwa INTx, to zrobiłbym tak: 1. pod INT0 podpinasz sygnał decydujący o starcie i końcu zliczania 2. pod INT1 podpinasz sygnał, który ma być zliczany Pseudo kod: 1. inicjacja: 1.1 INT0...
To zamiast wprowadzań napięcie do AVR w miejscu VCC dać GND? Tak, a R9 i R16 usuń. Dodaj także kondensatory filtrujące 100nF jak najbliżej pinów Vcc tak jak C5. Z drganiami styków poradzisz sobie programowo - więc elementy na pinie PB2(16) są zbędne: http://mikrokontrolery.blogspot.com/2011...
Może być wiele przyczyn takiego zachowania. Wymienię kilka, które mi przyszły na myśl: 1. Zainicjuj zmienną globalną - nie mozna zakładać, ze deklaracja zmiennej (szczególnie globalnej) zeruje ją (zależy od kompilatora) 2. Transmisja szeregowa działa poprawnie? Może DATACNT ma poprawna wartość ale rózne ustawienie parametrów transmisji w nadajniku...
Przy wejściu w przerwanie nie reaguje na kolejne zbocza narastające lub opadające musi zakończyć obsługę przerwania i dopiero jak z niego wychodzie podejmie reakcję na kolejne zbocze. Przypuszczalnie w tym czasie zanikają drgania styków. Procesor ma w tym czasie sporo warunków do sprawdzenia. No właśnie (dobrze kombinujesz :) ) - jeśli tak jest (dużo...
Metoda jest taka ze w momencie nadejscia przerwania od przycisku odpalasz timer, ktory odmierza kilka milisekund, po czym sprawdza czy przycisk nadal jest wcisniety. Jesli tak, to znaczy ze impuls pochodzi od faktycznego nacisniecia a nie od drgania po nacisnieciu. Dla pewnosci mozna zamiast 2 dokonywac 3 sprawdzen. Czas timera musisz dobrac doswiadczalnie.
Witam, czy ktoś ma doświadczenia z podłączaniem przełączników do oświetlenia 220V ( typowych przełączników które są zamontowanie do włączania oświetlenia w pomieszczeniach ) bezposrednio do portów mikrokontrolera ( do ATmega). Oczywiście mówimy o całkiem nowych przełącznikach, które nie przełączały jeszcze żadnych obciążeń podłączonych do 220V. Moje...
Jeśli chodzi o redukcję drgać styków to w 100% wystarczy kilkanaście ms opóżnienia i będzie działało ładnie. Jak ma program wyglądać to już sam zadecydujesz, napiszesz uruchomisz i zobaczysz co jeszcze trzeba poprawić i tak aż wszystko będzie dobrze.
Witam, mam pytanie o rzecz oczywistą dla wielu, w jaki sposób eliminuje się drgania styków w "prawdziwych" urządzeniach ? takich gdzie znajduje sie uC. Czy jest eliminacja programowa czy sprzętowa ? Jak programowa to jak wygląda program ? Bo nie chce mi się wierzyć że programiści nie mają jakiegoś bardzo dobrego i prostego sposobu na eliminacje drgań,...
dobra zakonczmy ta bezsensowna dyskusje, nie chce sie klocic o glupoty. Tym bardziej, że podejrzewam, iż w tym projekcie zastanawianie się nad rzeczami typu szybkość przełączenia nie ma w ogóle znaczenia Jeżeli wyeliminowane są drgania ze styków (o ile na styku się to opiera) i nie będa występowały żadne przeszkadzające stany nieustalone to wystarczy...
Witam. 1. Nie umieszczaj na płytce ścieżek z dużym prądem. Daj zewnętrzny bezpiecznik i przekaźnik. Do tego warto dodać jakiś wyłącznik termiczny do grzałek np. na wypadek sklejenia się styków przekaźnika lub zawieszenia się procesora. 2. Do klawiszy dodaj jakiś układ tłumiący drgania, chociaż, programowo też może być. 3. Pomiędzy katody wyświetlaczy...
Witam Oczywiście najszybszy rower nie wyklucza kontaktronu, kontaktron wcale nie jest za wolny, problem może być z drganiami styków, albo trzeba je wyfiltrować układowo albo programowo, ale to może być dla początkującego trudne, najlepiej postaraj się o zepsutego flopa i wyjmij z niego halotron, można go też kupić w sklepie ale pewnie koło 10zł musisz...
Prosiłem o więcej informacji :( Wypróbuj coś takiego: #include <avr/io.h> //#include <avr/interrupt.h> #include <interrupt.h> #include <signal.h> SIGNAL (SIG_INTERRUPT0) { unsigned int i=1; PORTC^=_BV(PC0); // zmieniamy stanu na przeciwny while(i++); //eliminacja skutków drgań styków (~393000...
3) czy połączenie z linii wejściowej (do uP) diod i złączenie ich katod i podłączenie do INT0 wystarczy aby wywołać przerwanie. Czy może jest inny sposób na wywołanie przerwania wciśnięcia klawisza Pozdrawiam Propa Klawiatura z definicji nie jest szybkim urządzeniem a więc nie musie pracować na przerwaniach. A poza tym konstrukcja matrycowa za bardzo...
Dzięki za tak szybkie odpowiedzi :-) Rozumiem, ze zmienne zadeklarowales jako volatile, czy zapomniales o tym?:) Druga sprawa - komplikujesz. Ustaw 16-bitowy timer tak, zeby np. mial impuls co 1us, albo czesciej, w zaleznosci jaka potrzebujesz rozdzielczosc. Tak, zmienne mam jako volatile, ale rzeczywiście nie policzyłem, że counter tak szybko się przepełnia...
Dzięki. Stokrotne dzięki. Jak będę miał oporniki to podłącze drugi. Do 13 ,12,4,1,0 i digital też można?Te mam wolne. PS. Przycisk też musi mieć rezystor?Przycisk do 13 i 2 pina ale ja mam 2 zajęty. Jaki inny można?Z wolnych do przycisku. W zasadzie wszystkie piny są po to by z nich korzystać :-)Wystarczy deklarować kolejny wolny pin cyfrowy np. #define...
Co rozumiesz przez szybsze kręcenie? Czy wiesz co to drgania styków: Drgania styków - Bouncing I że przy szybkim kręceniu następuje zjawisko nałożenia się drgań styków na sąsiednie impulsy z impulsatora? Zobacz: Impulsator - problem szybkich obrotów
Ok sorki, być może źle zadawałem pytanie w wyszukiwarce, bo gdy wcześniej tego szukałem to jakoś się nie natknąłem, tak, że sorki za niepotrzebne posty i dzięki za dobre nakierowanie, gdyż dzięki temu już sobie poradziłem z wyświetlaczem i obsługę klawiatury już zrobiłem eliminując drgania styków, musiałem jeszcze podpiąć zewnętrzne rezystorki podciągające,...
Pomysł z mostkiem i kontaktronem nie jest zły, ale jest parę problemów: (1) ilość zwojów - nie kilkanaście, prąd nie jest duży, trzeba ze 300 zwojów; (2) kontaktron rozłącza dość szybko - jeśli będzie łączył i rozłączał 100 razy na sekundę, szybko rozwali styki (kwestia dni); (3) czy to się da zmieścić? Ten układ ma być włączony szeregowo z odbiornikiem...
hmm.. jednak nie tutaj droga pojawiło się jeszcze kilka innych problemów - np ukłądy nowej serii są strasznie wrażliwe na co ? nie wiem na co. np od "wieków" przy nogach wejściowych gdzie sygnały pochodzą np z przycisków stosuję kondensator 100nF do masy dla eliminacji drgania styków i ogólnie dla wygładzenia przebiegu. ukazuje się że zwarcie takiego...
Błędy są dwa. W zmiennej tablica jest 06d zamiast 0x6d. Po drugie nie ma takiej zmiennej WYS_tablica. Jest natomiast zmienna tablica. Aha i trzeci błąd, wypada zainicjować zmienna czas np wartością zero, żeby nie zaczynać od przypadkowej wartości. Tak ponad to, jednym naciśnięciem klawisza przejdziesz od razu do 10, jestem tego pewien. Nie eliminujesz...
Myślę, że nie sieje. Moje przypuszczenia opieram na tym, że najpierw zacząłem od uruchomienia poprawnego tych lamp. Program działający jako prosty licznik, który tylko dodawał i odejmował do liczby "minuty" wartość 1 i potem pokazywał to na wyświetlacz działał poprawnie. I nie wieszał się nawet po wielu minutach od włączenia. Sprawdzałem to też pod...
Tak, tylko to _delay_ms(500) jest tylko wtedy, gdy nacisnę przycisk, a nie cały czas. Jedno przerwanie ustawia stan wysoki (compare match) a drugie niski(overflov). Co do drgań styków, to oglądałem film Pana Mirosława i tam on obalał tą tezę. Ja podzielam jego zdanie. Z resztą nie mam z nimi problemów. Co z tego że static? Nie pomyliło ci się z const?...
1 Tak ja powiedział Freddie zwieranie kondensatorów nie jest dobre (po jakimś czasie swich do wymiany). 2 Eliminuj drgania programowo. 3 Opornik równolegle do kondensatora raczej nie (pull-up wewnętrzny może mieć 50k). 4 Sprawdź debugerem czy nie jest tak że zawsze się resetuje. Na pewno były błędy w kompilatorach/linkerach dla mega88 i mega168. W mega168...
[syntax=c]while(1) { if(naciśnięto_przycisk) { n = n + 1; if(n > 14) n = 0; //tej linijki brakuje u Ciebie i n przekracza 14 . .//wyświetlasz liczbę . _delay_ms(50); //drgania styków po wciśnięciu while(przycisk_jest_wciśnięty); //czekamy aż przycisk zostanie zwolniony _delay_ms(50); //drgania styków po zwolnieniu } }[/syntax] Oczywiście musisz trochę...
Odpowiadając na Wasze pytania: koszt tegoż układu to około 20zł. Czas tworzenia... trochę to trwało, ale powielenie konstrukcji to już małe piwo. Trzeba się było trochę napocić z docinaniem przeźroczystej szybki (użyta przeze mnie obudowa nie miała dedykowanego filtra) i małymi przeróbkami softu już z laptopem na motongu. Wzorowałem się nieco na konstrukcji...
OK. Dziś stosuję: 1. ładowarkę na TP4056 2. Zabezpieczenie na DW01+ i 8205 3. przełącznik on/off zrealizowany jak na schemacie (z udziałem uC Atmega) 4. step up na MCP1640 / w testach SX1308 (część układu potrzebuje +5V) 5. wskaźnik naładowania ogniwa na tym samym uC i 5-ciu ledach Tak jak napisałem z uwagi na potrzebę wskazywania stopnia naładowania...
Zrób odwrotnie - przycisk z PD0 do masy - ustaw pin jako wejście - i włącz wewnętrzny pull-up Będzie śmigać ale pamiętaj o drganiach styków: http://mikrokontrolery.blogspot.com/2011... Choć być może w Twoim przypadku nie będzie to istotne.
Jeśli to jest dokładny schemat, to działa jedynie przypadkiem, a te diody tak podłączone w końcu spalą port lub same siebie. A sam problem może wynikać z drgania styków lub z tego, że się układ resetuje z braku filtrowania i ogólnie kiepskiego zasilania wynikającego z niepodłączenia wszystkich pinów.
Czy zastosowanie transoptora szczelinowego będzie lepszym rozwiązaniem od wyżej wymienionego? Licznik obrotów będzie służył do obliczenia prędkości wiatru. Czujnik jest od stacji dyskietek, przeważnie w internecie spotykałem się z wersjami z 4 podłączeniami, mój ma 3, czy prawdopodobnie masy są podłączone razem? Transoptor szczelinowy jest o tyle lepszy,...
O i dzięki schematowi od razu widać błąd: http://obrazki.elektroda.pl/6463515500_1... Przyciski podłącz do GND, a nie Vcc, a w programie włącz pull-up, i ustaw reakcję INT na zbocze opadające. Tylko czy wiesz dlaczego Twój układ nie działał? Osobna sprawa do drgania styków przycisku: http://mikrokontrolery.blogspot.com/2011...
Ok , a tak bez analizy mógłbyś mi powiedzieć jaki wpływ na działanie Atmegi8 mają delaye :( programy są napisane w taki sposób że ich działanie przynajmniej w symulatorze jest poprawne, w wersji rzeczywistej program uruchamia sie po wciśniciu jak napisałem i przelatuje przez wszystkie podprogramy wszystko świeci jak ma świecić tylko nie działa to w...
Robi się to po to, żeby spoczynkowo na wejściu procesora panował stan wysoki, który zmieni się na niski po wciśnięciu klawisza, który zwiera pin MCU do masy. Jest to układ zwyczajowy, gdyż większośc mikrokontrolerów posiada możliwość programowego włączenia rezystora podciągającego do Vcc - w takim układzie na zewnątrz potrzebny jest tylko klawisz do...
dodatkowo podpiął bym to przez najzwyklejsze diody do INT0 i w przerwaniu obsługiwać wykrywanie zwartego pinu. albo lepiej, skoro masz procesor z PCINT to wykorzystaj dwa piny PCINT i odpowiednia obsługa programowa. dokładając timer możesz z grubsza mierzyć czas impulsu żeby eliminować drgania styków
Kod nieczytelny - użyj tagów Syntax C. O eliminacji drgań styków słyszałeś? Ogólnie nie jest dobrym pomysłem włączanie przerwań przy braku procedur ich obsługi. Mam obsługę przerwań lecz to nie one sprawiają mi kłopot( bo jeszcze ich nie sprawdzałem) mogę dołożyć jak ma to jakieś znaczenie. Słyszałem o drganiach styków mam jedynie kondensator 100nF...
jak mam być "profesjonalnie" a nie z Allegro (masz gotowy układ z obudową klawiaturą wyświetlaczem i zasilaniem) to do generacji impulsów wykorzystaj wiatraczek od komputera. W każdym jest hallotron, odpada problem drgania styków itp. Co do przymocowania magnesu do gwintowanego pręta weź nakrętkę przyłóż do niej magnes, owiń nicią i zalej jakimś cjanopanem...
Na podstawie Twojego programu nie można nic powiedzieć co się dzieje z przerwaniami, bo: 1. Nie włączasz podciągania na pinach przerwań - to znaczy, że może na nich przy braku zwarcia do masy występować zarówno 0 jak i 1 - przerwania mogą szaleć 2. Zważ na to, że Ty w przerwaniu przełączasz stan diody, a zjawisko drgań styków moze powodować kilka-kilkanaście...
A jeżeli chodzi o tą idę to jak to powinno wyglądać? Co kto lubi. Jak dla mnie to bardzo, bardzo nie. Skoro został wciśnięty przycisk, to po co czekać na jakieś drgania? Po prostu realizujesz to co masz zrobić. Całą idea czytania na przerwaniach też mocno dyskusyjna.
Mi chodziło o sytuację że dopiero po wciśnięciu dowolnego przycisku zostaje uruchomione opóźnienie. Ciągle w programie go nie ma, tylko przy odczycie klawiszy. Nie musi być duże, ale coś tam powinno być ze względu na drgania styków i nierówność wciśnięcia dwóch przycisków naraz. Trzeba zrobić parę prób co do jego długości. Ważne jest jak mówiłem sprawdzanie...
Jak na razie testuję to na guziku, podłączonym do PD2 (INT0)... To może nie być miarodajne, ze względu na drgania styków, chyba że wprowadziłeś jakiś sprzętowy debouncing. Jeśli chodzi o kod, nie sprawdzałem, czy cała idea jest prawidłowa, ale zauważyłem: ... MCUCR=1<<ISC00; //przerwanie wyzwalane zboczem narastającym __|-- MCUCR=1<<ISC01;...
Napisałem program do obsługi klawiatury matrycowej. Podłączone diody LED wskazują binarnie wartość wciśniętego przycisku, a wyświetlacz LCD pokazuje szesnastkowo wciśnięty przycisk. Klawiatura podłączona do PORTD mikrokontrolera. http://obrazki.elektroda.pl/1733933700_1... Problem w tym że wszystkie przyciski działają poprawnie oprócz jednego...
Jeśli jednak kolega ma rację, to oznacza, ze setki tysięcy projektów, na AVR (ale także na ARM, PIC, MPS), także wykonywanych przez renomowane firmy, jest robione źle, bo nie mają rezystorów podciągających na wejściach przycisków, enkoderów w sytuacji gdy znajdzie sie tam kondensator filtrujący. Myślę, ze kolego pomyliło sie to z problemem, podłączenia...
Pomysł wydaje się być dobry, ale nie do końca. Teraz reakcja na kręcenie potencjometrem jest widoczna na oscyloskopie w postaci zmiany częstotliwości, także podczas przytrzymywania przycisku, ale obecnie nie da się sterować klawiszami. Tzn, teoretycznie się da, ale czas reakcji od naciśnięcia przycisku sw na wykonanie instrukcji wewnątrz pętli trwa...
-nobile- --> To nie ATmega nie ustawia prawidłowo portów, to TY je nieprawidłowo ustawiasz i hmmm program piszesz trochę nie teges ;) DDRA = 0xFF; //port D na wyjście PORTA = 0x00; //stan niski na porcie D to w końcu port A czy port D ??? zastanów się czy przez tą literówkę już coś ci się nie miesza, to po pierwsze. Po drugie, raz sprawdzasz wejście...
ok dzięki za pomoc, problem był w drganiach styków :)
Czy w konfiguracji uC ustawiłeś taktowanie z zewnętrznego kwarcu? Z fragmentu programu, który pokazałeś, nie wynika, co ma być nadawane. Zacznij od przyrządzenia programu, który np. co sekundę wysyła stały ciąg. Kiedy to zadziała, poczytaj o drganiach styków i zabierz się za obsługę przycisków.
romario4: dzięki, ale to nic nie daje. Ja już próbowałem zamiast capture1 dać timer1 i counter1 i za każdym razem identycznie - czyli kapa.... dziadek-nfc: tylko drgania jakich styków? Ja sygnał biore bezpośrednio z głównego komputera samochodu i puszczam go przez optoizolator. No chyba że drgania styków wtryskiwacza zakłócają sygnał komputera, ale...
Niestety twoje założenia są całkowicie błędne. Po pierwsze, jaki magiczny przekaźnik ci się włączy w 0,1ms? Drgania styków, które mogą trwać 10-20ms pomijasz? To długo nie podziała. Druga sprawa - wybrany MOSFET jest logic level, ale znaczy to tylko tyle, że napięcie sterujące bramką może być niewielkie, lecz ty sterując nim PWM musisz zapewnić odpowiedni...
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ć...
Proszę o pomoc. Ustawiłem fusbity zgodnie z notą katalogową (CKSEL3..0 = 1111, CKOPT = 1) ale układ pracuje z częstotliwością około 1.5MHz przy kwarcu 16MHz. Zmiana CKOPT na 0 nie ma wpływu na częstotliwość. Odnoszę wrażenie, że kwarc nie prauje (przy pomocy oscyloskopu stwierdziłem brak drgań na stykach XTAL1i2 jak w przypadku ATMEGA 16 LUB 32). Z...
drgania styków drgania styków mirek drgania styków przerzutnik
układ scalić zegarowy pendrive zniknął elizabeth sanyo
polonez abimex parkside robot koszący
Problem z wciskaniem tłoczków hamulcowych w Passacie B5 1.9 TDI 90 KM kombi Czy fotele z Citroena Xsara Picasso C4 pasują do C3?