Nie tędy droga, Ty musisz zrobić coś dokładnie odwrotnego - nie wygenerować sygnał, ale go zmierzyć. Rozwiązania są 2, ale jeśli programujesz w bascomie i nie masz ochoty na operacje na rejestrach w procesora to kurczą się do jednego. Mianowicie: 0. ustawiasz timer na zliczanie impulsów i zmianę wartości jakiejś zmiennej - parametry dobierz w zależności...
Bo nie tak się używa przerwań zewnętrznych. Można po pojawieniu się przerwania od zbocza narastającego wystartować timer, w przerwaniu zmienić na zbocze opadające i gdy pojawi się zbocze opadające zatrzymać timer, odczytać jego stan do zmiennej volatile wykasować i ponownie ustawić na zbocze narastające. Mozna też wykorzystać oba dostępne przerwania....
Witam. Rozumiem, że działa to tak: Timer cały czas zlicza czas... 1. Gdy zbocze jest narastajace, przepisuje aktualna wartość timera do zmiennej zbocze1. 2. Zmieniam aby teraz reagował na zbocze opadające. 3. Gdy zbocze jest opadające , przepisuje aktualną wartość timera do zmiennaj zbocze2. albo raczej: 1.Gdy zbocze jest narastajace, zeruję zawartośc...
1. Można to różnie rozwiązać. Najprościej, to wykorzystać któryś z pinów INT. Algorytm: - ustaw przerwanie z pinu INT0 na zbocze np. narastające, - gdy pojawi się zbocze narastające to wywoła funkcję obsługi przerwania, - w funkcji przerwania uruchamiasz timer i zmieniasz ustawienia INT0 na zbocze opadające, - gdy wystąpi zbocze opadające - zatrzymujesz...
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...
. Zamierzam zrobić tak by mogli wprowadzić korektę (jeśli będzie potrzebna) i zapisać w eeprom. czy to dobry pomysł? Jakoś tak; $Crystal=12000000 Config Timer1 = Timer , Prescale = 8 On Timer1 Inter_1mS Inter_1mS: Counter1 = Counter1 + Licznik (64036 - wychodzi z obliczeń, że da to 1ms) /tu odliczę sobie 103/ Błednie to rozumujesz, albo błednie podałeś...
Nie chcę wyjść na językoznawcę, ale ciężko się czyta ze zrozumieniem takie długie zdanie bez przecinków. Jeśli dobrze odczytałem, to proponuję zrobić taką sekwencję: - timer TON odlicza po wciśnięciu przycisku - po odliczeniu ustawia jakiś bit np.: S kalibracja - po odpuszczeniu przycisku, wykrycie trybu kalibracja i N_TRIG, zbocze opadające na przycisku,...
No fakt - najpierw inkrementuje :oops: Jeśli chodzi o TF2 to sprawa ma sie tak(to sprawdziłem w bibli 51): Ponieważ Timer2 posiada 2 źródła przerwań , za którymi stoją flagi EXF2,TF2 to nie są one zerowane sprzętowo , byśmy wiedzieli co spowodowało przerwanie T2 , a mianowicie opadające zbocze na T2EX(P1.1) czy przepełnienie licznika.Więc flagi TF2/EXF2...
Witam. Ja bym rozważył wszelkie magnetyczne, odrzuć optyczne, jazda po błocie i nic nie działa. Niestety, każdy czujnik będzie wymagał nieco innego odczytu, kontaktron będzie chyba najprostszy, bo włączasz go jak "przycisk" przez rezystor i kondensator w celu eliminacji drgań. Jak zastosujesz hallotron to nie obejdzie się bez dodatkowego wzm. operacyjnego...
Jak już Kolega nabierze wprawy z przerwaniami i timerami to można osiągnąć zamierzony cel w następujący sposób: Dajemy sygnał (którego długość trwania chcemy mierzyć) na wejście INT0 oraz INT1 jednocześnie, przy czym pierwsze ustawiamy na zbocze rosnące a drugie na spadające, w przerwaniu INT0 startujemy timer1 a w przerwaniu INT1 zatrzymujemy go,...
Masz błędny kod. Jak chcesz by program działał jak trzeba to musisz wiedzieć co robi każda linijka. Włączasz przerwanie od przepełnienia timera0, a nie maż funkcji do jego obsługi. Deklarujesz funkcję do obsługi przerwania zewnętrznego, a nie masz funkcji obsługi i nie zezwalasz na to przerwanie. Na moje oko to po uruchomieniu timera procesor się zresetuje...
Możesz spróbować mniej więcej tak: // deklaracja zmiennych globalnych volatile uint8_t prev_tcnt, T; // w funkcji 'main' // skonfiguruj przerwanie INT0 tak, by reagowało na obydwa zbocza MCUCR |= (1<<ISC00); // używaj raczej makra ISR ISR(INT0_vect) { // sprawdzasz które zbocze wywołało przerwanie // jeżeli zbocze narastające,...
Witam Jak wielu spotkałem się z problemem problemem kłopotliwej obsługi pilota z RC5. Po poszperaniu w necie wpadłem na http://www.elektroda.pl/rtvforum/topic20... ten temat. Jak się okazało wszystko na tym programie pracowało, ale nie zawsze. Kłopotem było napisanie programu "pod pilota". Oczywiście pochwała dla Sabotaz'a który problem "ruszył"...
Zbocze narastające załącza timer a zbocze opadające wyłącza?
Ustaw timer w tryb multiwibratora. Opadające zbocze wyzwoli multiwibrator i wywoła przerwanie. Będziesz miał informacje o początku pierwszego bitu.
Załączenie X2 załącza Y2 na 3s. Gdzie w timer ustawić na 3 sek. Opadające zbocze na wejściu X3 ustawia w stan wysoki Y3 na 3s. Czy ktoś pomoże ???
Można by ustawić przerwanie zewnętrzne na zbocze narastające, uruchomić timer i przełączyć przerwanie na zbocze opadające. Gdy pojawi się to opadające to zatrzyma timer i masz czas impulsu. Jeszcze jedynie uwzględnić przepełnienie timera, w razie jak się coś przestawi z czasami.
Troszkę się pogubiłem z tym kodem. To ma być tak: konfiguruje INT na zbocze narastające gdy pojawi się zbocze narastające to start timer konfiguruje INT na zboczę opadające gdy pojawi się zbocze opadające to stop timer gdy timer się przepełni to zwiększ zmienną Ja w swoim kodzie miałem coś podobnego tylko timer się nie przepełniał i wyświetlałem jego...
Witam kolegów po fachu. Od 3 dni walczę z problemem. Tłumaczę o co chodzi. Staram się odczytać za pomocą stm32f103 szerokość impulsów PWM pochodzących z 4 kanałów odbiornika RC. Skonfigurowałem 4 przerwania zewnętrzne EXTI, na 4 kanałach , wyzwalane zboczem opadające i rosnące. Ustawiony jest również TIMER4 z przerwaniem od przepełnienia który liczy...
Czyli np jeżeli chce zmierzyc czas trwania impulsu to robię to tak - while(jakis_warunek) { -ustaw przerwanie na zbocze narastające -uruchom timer -ustaw przerwanie na zbocze opadające -odczytaj timer, wyzeruj rejestry timera } Czy takie coś zadziała?? Czy jest możliwość skonfigurowania dwóch osobnych przerwań na zbocze narastające i opadające czy za...
Proszę postępuj zgodnie ze schematem użytkowym, który załączyłem (post #4 21 Lip 2015 21:39). Tam jest przedstawione gotowe rozwiazanie. Zacisk 21 podłączasz do masy, zaś zacisk 20 do GPIO. Stanem aktywnym jest zwarcie pinu GPIO do masy. Następuje to w momencie pojawienia się impulsu (dokładnie w momencie kiedy na ORNO mrugnie dioda). Dalsza procedura...
Najwygodzniej było by użyć dwóch przerwań zewnętrznych... Jeśli tylko są dostępne... Tak jak pisałem wcześniej jedno reagujące na narastające zbocze, w przerwaniu włącza timer... Drugie łapie opadające zbocze i w przerwaniu zczytuje zawartość rejestru timera i wyłącza go... Albo na odwrót bo nie pamiętam jaka jest kolejność... Wczytujesz tą wartość...
nawiązując do powyższych wypowiedzi, postanowiłem kontynuować temat Bardzo szeroko rozumiana ta "kontynuacja" Najbardziej oczywiste bylo by wykorzystanie wejścia ICP wtedy Timer1 i przerwanie od ICP wykonuje całość roboty i dodatkowo można skorzystać z filtru zakłóceń przebiegu wejściowego. Ale w podanej konfiguracji też się da. Ogólny schemat: 1....
Można zastosować do wyzwalania impuls stały dodatni po dodaniu niewielkiego układu RC - wtedy timer będzie reagował na opadające zbocze tego impulsu. Jaki jest charakter impulsu na brzęczyk?
Sygnał przychodzący podłączasz do dwóch wejść: INT0 i ICP1. Rejestry MCUCR i GICR konfigurujesz tak, żeby na zbocze narastające na wejściu INT0 timer startował, a na opadające na INT1 zatrzymywał się...
próbowałem już z przerwaniami ale coś nie mogłem odczytać z TIMERA wartości na jakiej został zatrzymany przy przyjściu przerwania INT. Bo właściwie to nie wiem jak poczekać na przerwanie tak żeby np. w pierwszym INT kasować TIMER a w następnym odczytywać. A czy można zdefiniować równocześnie przerwanie na zbocze opadające i narastające i kiedy przyjdzie...
mały błąd, myślałem że w danej chwili tylko 1 timer może przyjmować sygnały zewnętrzne. W takim razie pozostaje mi wykorzystać 3 timer do odmierzania okresu czasu. Zastanawia mnie jeszcze rozwiązanie z rejestrami ICP/(Input Caputre Unit?) Nie wiem czy dobrze to rozumiem: narastające zbocze sygnału podane na nóżkę ICP uruchamia timer, opadające go zatrzymuje....
Aha, nie przyszło by mi do głowy, że bity mogą być o różnej długości, ale teraz taka analiza ułatwia dużo napisanie programu. Po tym starcie każde zbocze opadające załączy wewnętrzny timer i przy kolejnych przerwaniach na zboczu opadającym wartość timera będzie porównywana z jakąś liczbą. Jeżeli jest mniejsza to 0, a jeżeli dłuższa to 1. Oczywiście...
Jestem studentem, i na laboratoriach z mikrokontrolerów dostaliśmy do wykonania następujące zadanie: Zliczać w timerze ilość kliknięć przycisku i po zarejestrowaniu 5 kliknięć zapalić diodę. Zdaje sobie sprawę że timery nie powinny być w takim celu. Największym problemem przy tym prostym programie są drgania styków. Postanowiłem rozwiązać ten problem...
Ja robiłem to od razu w przerwaniu... tzn... Kiedy narastające zbocze wywołuje przerwanie... W obsłudze odrazu przestawiam rejestr INT0 na reakcję na zbocze opadające i odpalam timer + flaga... Po kolejnym przerwaniu mam ustawioną flagę więc zatrzymuje timer i przpisuję jego wartość do zmiennej, przestawiam INT0 i zeruje flagę...
Jest możliwość pomiaru czasu wtrysku na przerwaniach w AVR'ach. Trzeba podpiąć sygnał z wtryskiwacza (oczywiście przez układ dopasowujący) jednocześnie na wejście przerwania zewnętrznego (np. INT0) i wejście ICP (input capture). Potem trzeba skonfigurować zewnętrzne przerwanie aby reagowało na zbocze opadające (początek czasu wtrysku), licznik T1 ma...
Piszę pewien program na 90s8535 i mam następujący problem. Wiadomo ze to AVR i nie ma on wejścia kluczującego Timer, więc próbuję zrobić cos takiego programowo. Idea jest taka ze mam podpięty pod INT1 generator i nim ustalam odpowiednie zbocza sygnału. Wymyśliłem, że zbocze wznoszące wywołuje przerwanie a te z koleji włącza prescaler Timera (teraz będzie...
W końcu znalazłem przyczynę problemów - dzięki sugestii Andrzej__S zweryfikowałem jeszcze raz układ by się na 100% upewnić czy mam wszystko dobrze podłączone i wszystko było OK tylko ja zapomniałem o jednej oczywistej rzeczy - sterowanie oświetleniem odbywa się za pomocą TRIAKA :) Gdy załączałem triaka w obsłudze przerwania z timera to jego wyłączenie...
więc tak jak kolega będzie niegrzeczny to napewno nikt ci nie pomoże. rozwiązanie twojego problemu może być funkcja bascoma PULSEIN var , PINX , PIN , STATE ale ona jest dość mało dokładna i zależy od kwarcu. ja bym ci proponował zrobić tak ustawic timer w tryb timera i tak dobrać preskaler aby napewno nienastąpiło przepełnienie. następnie dodać instrukcje...
W przerwani tylko uruchamiaj lub zatrzymuj timer w zależności czy to przerwanie na narastające czy na opadające zbocze bo tam możesz wykryć start i koniec impulsu. W obu przerwaniach użyj osobnych timerów i wtedy się program wyrobi. W przerwaniach zawsze rób jak najmniej jeśli używasz więcej niż jednego źródła przerwania.
Dzięki za śmigła! Co do impulsów, to jest tak sprawę nadawania już mam powiedzmy rozwiązaną i przetestowaną. Odbywa się to poprzez oczywiście PWM, długości impulsów są łatwo skalowalne (zwykła zmienna typu int) między 1-2ms więc to nie jest problem, jak uporządkuję program to ci podeślę kod jeśli będziesz chciał. Co do pomiaru czasu trwania impulsów...
Jdno pytanie czy ponizsza konfiguracja bedzie prawidłowa : Chodzi o to aby licznik zliczał impulsy wewnętrzne z kwarcu przez czas jaki na int0 bedzie stan wysoki. w momencie pojawiania sie zbocza opadającego aby program przchodził do obsługi przerwania : Fragmenty w bascom : config timer0 = timer , gate = external , mode =1 set Tcon.0 - reakcja na zbocze...
Może powinieneś (na przykład) jednak synchronizować ten timer. Dzięki za sugestię bo nie pomyślałem o tym wcześniej, jednak i to nie pomogło. A może powinieneś (na przykład) w ISR, wyłączyć timer na czas ładowania a następnie włączyć z powrotem. To rozwiązanie pomogło, choć nie bezpośrednio. Bowiem rzeczywiście chwilowe wyłączenie timera i włączenie...
Witam! Chciałbym wykonać elektroniczny cyfrowy licznik obrotów do 126p. Projekt swój chcę zrealizować na procesorze AT902313. Jednak zanim wykonam ten obrotomierz chciałbym skonsultować swój algorytm programu z Wami. Być może któś zaproponuje lepszy spobób całego procesu poiaru. Założyłem że zakres pomiarowy obrotomierza będzie od 500 do 4800 obr./min....
Witam, odwróciłem 115200 ale to wychodzi na jedne bit a nie bajt czyli raz 10 czyli około 86us, to nie jest ważne... Teraz uruchamiam timer co 1ms i sprawdzam czy "były dane" chciałem użyć timer w trybie Slave mode: Reset mode, czyli ja podam mu zewnętrzny sygnał to zbocze narastające lub opadające od transmisji go wyzeruje, a jak nie ma transmisji...
A jak mniej więcej byś widział zasadę działania programu gdybym dołożył uC ? TXD z HC-05 wprowadził bym na RXD w uC. Dodatkowo opadające zbocze TXD HC-05 musi generować przerwanie (linia EXTI, /INT). Przerwanie ustawia stan wysoki na DE i /RE (nadawanie) nadajnika RS485 i jest dezaktywowane. Przerwanie odbiorcze z USART (przeważnie jest generowane...
Podaj zliczane impulsy na wejście taktujące licznik (Tn) a sygnał bramkujący na wejście przechwytujące (ICPn). Ustaw licznik na taktowanie z wejścia Tn. Początkowo skonfiguruj wyzwalanie przechwytywania na zbocze narastające, a gdy ono wystąpi, w procedurze obsługi przerwania input capture zapamiętaj wartość licznika (dla porządku nazwę tę wartość w1),...
Witam Planuje zrobić sobie miernik częstotliwości różnych kształtów napięcia: sinus, prostokąt, trójkąt. Zamianę sinusa i trójkąta na prostokąt mam już zaplanowaną. Zostało mi tylko zmierzenie częstotliwości sygnału prostokątnego o amplitudzie 5V i przedziale częstotliwości od około 10 kHz do 500 kHz. Chciałbym to zrobić na mikrokontrolerze ATmega8...
Sygnał podaję na nóżkę PORTD.6, mam go skonfigurowanego tak: [syntax=basic4gl]Config Portd.6 = Input[/syntax] Timer konfiguruje jako timer, ponieważ chcę mierzyć czas trwania zbocza: -konfiguruję za zbocze opadające -przepisuję wartość timer1 do zmiennej A -przełączam na zbocze narastające -przepisuję wartość timer1 do zmiennej B -od zmiennej B odejmuję...
Witam Potrzebuje do mojego projektu bloku opóźniającego coś jak timer TON w sterownikach. Niestety nie mam pomysłu jak to napisać w verilogu. Blok ma opóźnić o ustawiony czas zbocze narastające natomiast opadające by wystąpiło bez opóźnienia.
W bascomie nie mam aż tak wielkiej wprawy. Chce by działało tak: część Timer0_int: Counter0 = Counter0 + 6 Incr Licznik If Licznik = 50 Then '100ms Toggle Portb.1 Toggle Portb.2 disable timer0 Licznik = 0 End If Return odpowiada za opóźnienie czyli wartość 50 będzie się zmieniała od 1 do 1000 powiedzmy co da nam czas opóźnienia. Natomiast chce by...
Witam, Mam pewien problem z częścią mojego programu dotyczącą obsługi klawiatury. Chciałbym żeby mikrokontroler reagował na zbocze opadające lub wznoszące. Niestety póki co nie znalazłem przydatnych informacji u wujka Googla. Teraz jest tak" [syntax=c] if(!timer_klawisza_1) { if(bit_is_clear(PINA, 0)) { jakieś funkcje się wykonują timer_klawisza_1=50;...
OK to jeszcze dopytam tak, rozumiem że na początku przerwania zmieniam stan Edge_ na 0, liczy timer i config int0=rising ale co dalej załóżmy że nadejdzie zbocze narastające i co wtedy się dzieje? No tak, zabrakło jeszcze jednej linijki... sory... Powinno być: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End...
Witam W moim projekcie występuje silnik krokowy, którym steruję z zewnętrznym sterownikiem. Potrzebuję więc jedynie generować sygnały DIRection i PULse. //Będzie to odwrócone wahadło. Nie mam sprzężenia zwrotnego od silnika. Silnik będzie przesuwał liniowy wózek. Będę chciał zaimplementować rozpędzanie i zwalnianie silnika. Do celu generacji PULSE wykorzystuję...
Nie wiem czy kod w Bascom na coś Ci się przyda ale właśnie na takiej zasadzie jak w tym programie zrobiony mam pomiar prędkości wiatru w moim pozycjonerze. Troszkę inaczej wykorzystuję tu timery niż założyłeś ale... Zostawiłem Ci tylko fragment odpowiedzialny za liczenie impulsów i dodałem obsługę wyświetlacza. Program jest na tyle prosty, że z interpretacją...
opadające zbocze zbocze opadające zbocze narastające opadające
pilot chassis dmuchawa bezpiecznik piekarnik wylacza
bezpiecznik piszczy bezpiecznik piszczy
Usuwanie połączeń wychodzących z bilingu Lebara DK BMW X3 E83 2.0i N46B20B - Błąd sterownika silnika i sonda lambda