Niekoniecznie będzie to 160%, gdyż wg noty zegar wynosi min. 10 MHz, czyli 16 MHz, które można łatwo uzyskać (24 MHz zresztą też), zadziała. Oczywiście o jakimś sensownym przetwarzaniu danych raczej mowy nie ma - ale jeśli kamera będzie podłącozna pod interfejs RGB kontrolera LCD to przesył obrazu kamera LCD procesora nie zajmie. Wszelkie timingi da...
Chyba raczej ldi r16,2 out MCUCR,r16
Jesli rozumiem chodzi o przerwanie INT aktywowane oadajacym zboczem a nie poziomem. W INT0 ustawiasz bit IT0 w rejestrze TCON na 1 jesli ma byc od zbocza a 0 jesli od niskiego poziomu. w INT1 bit IT1
Witam, żeby dużo nie zmieniać w programie, w pierwszej kolejności spróbowałbym przenieść przerwanie na zbocze opadające, ewentualnie zwiększyć podciągnięcie (dodatkowe np. 10k do pinu). Samo przerwanie też bym zmienił na "jedna_czterysta_pięćdziesiąta_litra++" (np uint32_t) i dostosował resztę.
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...
Przerwania typu PCINT działają podczas zmiany stanu pinu, obojętnie czy to jest zbocze narastające czy opadające. Poprostu ma być to zmiana stanu, tak więc jeśli naciśniesz przycisk to przerwanie bedzie generowane dwa razy (w momencie naciśniećia i puszczenia). Natomiast inaczej jest w przypadku przerwań INT0 i INT1 gdzie możesz sobie wybrać kiedy ma...
To jest tak: Config Int0 = P3.2 ' Ustawienie przerwania zewnętrznego na pin P3.2 Reset Tcon.0 ' Przerwanie wywoła stan niski Set Tcon.0 ' Przerwanie wywola opadające zbocze (z H do L) To samo z Int1 To tyle pozdrowienia.
Witam. Zbocze narastające to masz jedno przerwanie w momencie gdy stan zmienia się stan wejścia z niskiego na wysoki a przy stanie wysokim będziesz miał wiele przerwań tak długo jak będziesz miał stan wysoki na tym wejściu.
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,...
Tak. detekcję podpiąć musisz pod przerwanie i ustawić wyzwalanie na zbocze rosnące. Sterowanie na dowolnych pinach I/O. Osobiście jak mam dostateczną ilość pinów nie korzystam z tych od programowania. Myślę, że przy tak dużym obciążeniu triaków jaki planujesz powinieneś przewidzieć filtr przeciwzakłóceniowy na ich zasilaniu, inaczej procesor może świrować.
Sposób kol. remiorn jest prawidłowy pod warunkiem, że sygnał jest wolniejszy (ponownie nie zmieni stanu) niż przerwanie programu i wejście do funkcji obsługi przerwania wraz ze wszystkimi czynnościami jakie są realizowane na początku tej funkcji. Może nastąpić bowiem taka sytuacja, że sygnał zdążył się zmienić z powrotem na stan początkowy. Jeżeli natomiast...
Ale nadal pozostaje pytanie: Dlaczego flaga INTF1 jest ustawiona, skoro po resecie powinna być 0? Do tego momentu wejście sobie pływa i logika od wykrywania zbocz może już je rejestrować. [syntax=c]PORTD|=(1<<PD3); // podciągam do vcc[/syntax] Tutaj: [syntax=c]EICRA|=(1<<ISC11);// przerwanie na zbocze opadające EICRA&=~(1<<ISC10);//...
Takie ustawienie enkodera jest mozliwe. Reagowanie na stan to bład. Powinieneś reagować na zbocze. Np. przerwanie zewnętrzne AVR'ów potrafi reagować zarówno na zbocze narastajace i/lub opadające. Jak odczytywac w którą strone następuje ruch?. Najlepiej jak sobie znajdziesz gdzieś w internecie opis takiego enkodera z wykresami sygnałów wyjściowych, bo...
Jęśli chodzi o pytanie nr 3 to tak Dodano po 7 Bezpośrednia odpowiedź na pytanie Aby jednocześnie wyświetlać prędkość obrotową (RPM) wentylatora oraz ustawioną moc (np. w formie procentowego wypełnienia PWM) na wyświetlaczu dotykowym podłączonym do Arduino Mega, należy: - Zliczać impulsy z tachometru (pin TACH) wentylatora, przeliczać je na obr./min...
No to niech program policzy, przynajmniej z grubsza: Co z błędnym liczeniem? A kiedy taki błąd może nastąpić. Nie chodzi mi o program, ale to co przesuwa taśmę.
Witam, myślę że można zrobić to dużo łatwiej. Potrzebny Ci będzie jeden pin z przerwaniem (może być puste) i pomysł na opóźnione przejście w tryb uśpienia.[syntax=c]void sleep_button(int is_pressed) { enum sbstate {SBSTATE_IDLE, SBSTATE_SLEEP, SBSTATE_WAKEUP}; static enum sbstate state = SBSTATE_IDLE; static unsigned int tp; switch (state) { case SBSTATE_IDLE:...
Najpierw dajesz Config INT0=Falling Wprowadzasz zmienną opisującą wybrane zbocze wyzwalające przerwanie (Edge_) i w procedurze obsługi tego przerwania: If Edge_ =0 Then Start Timer1 Config INT0=Rising Else Stop Timer1 Config INT0=Falling End If Niektóre AVR'y umożliwiają konfigurację typu Config INT0= Change Wtedy przerwanie wywoływane będzie po stwierdzeniu...
...Jakie jest zatem rozwiązanie tego problemu (jeśli jest)? Bascomowy UART programowy działa jedynie wtedy , kiedy wywołamy funkcję z nim współpracującą. W pozostałych przypadkach ( kiedy działają funkcje/procedury nie związane z programowym UART-em ) , nadchodzące dane są "niewidoczne" dla procka :( Np. jeśli masz w kodzie Wait 1 , a w czasie działania...
A spróbuj tak: [syntax=c]{ _delay_ms(3); PORTC|=_BV(PC0); _delay_ms(1); PORTC&=~_BV(PC0); }[/syntax] Pamiętaj że łączny czas funkcji od momentu pzerwania do momentu powrotu z przerwania pod żadnym pozorem nie może przekroczyć 10ms. Inaczej każde następne przerwanie jest "spóźnione" o wartość nadmiarową nad te 10ms. Poza tym: [syntax=c]MCUCR|=_BV(ISC01)|_BV(ISC00);....
Jj_Johnys : Wcisniecie przycisku daje ok. 100ms sygnalu? Rozne przyciski maja rozne dlugosci sygnalow? Jak dla mnie to przycisk zwiera w zaleznosci jak dlugo sie go przytrzyma, po za tym przy wciskaniu przycisku nastepuja drgania stykow ktore daja duzo szpilek i napewno nie osiagniesz zadnego konkretnego sygnalu o konkretnej dlugosci. Jesli chodzi...
Przerwania PCINTx wykonują się przy każdej zmianie stanu logicznego, niema możliwości konfiguracji np. tylko dla zbocz narastającego lub opadającego. Stan zbocza na poszczególnym pinie sprawdzasz w przerwaniu. Attiny13 ma 6 pinów PB.0-PB.5 (PCINT0 do PCINT5) które mogą wywołać przerwanie. I tu jest jedna myląca rzecz :) dla tych pinów jest tylko jeden...
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...
sygnał podany na wejście PD2.
Ok rozumiem. Spróbuj tego. Użyte przerwanie. Można też zrobić bez zależnie od potrzeb. $regfile = "m8def.dat" $crystal = 8000000 Dim Zmienna As Word Dim A As Bit Config Pinb.1 = Output Config Pind.2 = Input Set Portd.2 '============ definicje timera ================================ Config Timer1 = Timer , Compare A = Toggle , Compare B = Disconnect...
Prawdopodobnie procesor wisi w funkcji obsługi przerwania. We wnętrzu przerwania wyłącz je. Włącz je dopiero gdy będzie potrzebne (na przykład przed uśpieniem). Przerwanie na stan niski jest wywoływane cały czas tak długo jak stan niski trwa na wejściu.
Być może jestem na to za głupi i się nie nadaje. Rozumiem to tak że jeśli ustawiam pin 3 na INPUT to jest to pin wejsciowy z domyslnie zerem logicznym czyli 0V. Źle myślisz, poczytaj o funkcji pinMode. Jak podlaczylem tak jak opisalem to rozumiem to tak że czekam na zbocze rosnace i z tego względu dalem przerwanie z RISING. Dobrze ale jak poczytasz...
Tak po pierwsze to przerwanie masz domyślnie wzbudzane stanem niskim, czyli przerwanie wywołuje się W KÓŁKO dopóki na pinie panuje stan niski. Musisz je ustawić tak, by reagowało na zbocze (w Twoim przypadku opadające). Poza tym jak pisał (at)emarcus - cały program jest pisany bez zastosowania się do jakichkolwiek dobrych nawyków, a i jak widzę wiedza...
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...
No przecież prosto. Konfigurujesz timer1 do pracy w normalnym ale nie robisz start timer. robisz przerwanie dzialajace na zbocze np. narastające-> Dalej : robisz zmienną flaga w przerwaniu robisz if flaga=1 then start timer1 flaga=0 else stop timer1 w rej od timera masz czas... kopiujesz gdzie Ci tam pasuje flaga=1 zerujesz licznik endif I tyle, oczywiście...
. 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ś...
Heh, siedzę i nie daje mi to spokoju. Kod który napisałeś - nawet nie czytam bo w C piszę od niedawna ale tylko na ARM'y czy też na LPC i nazwy rejestrów itp nic mi nie mówią. Moja koncepcja jest taka: Uruchamiasz 1 timer z przerwaniem co 50ms.(dlaczego co 50?). W przerwaniu 1 timera uruchamiasz 2 timer. Ustawiasz przerwania 2 timera, w każdym przerwaniu...
Kolega snaap nie napisał jeszcze, jak ma skonfigurowane przerwanie INT1. Ja podejrzewam, że ma wyzwalanie stanem niskim, a nie tak jak kolega ravmar (autor wątku) zboczem opadającym. Różnica między tymi dwoma typami przerwań polega na tym, że w tym pierwszym (wyzwalanym stanem niskim) flaga INTF1 jest zawsze zerowana, niezależnie od tego, czy przerwanie...
Witam. Procek tak się zachowuje bo nie określiłeś czy przerwanie ma być generowane przez zbocze opadające, rosnące czy przez stan niski na końcówce INT. Domyślnie wyzwalane jest stanem niskim więc wykonuje się raz za razem. Instrukcja Config INTx. Przeznaczenie: Konfiguruje sposób wyzwalania przerwania INTx. Składnia: CONFIG INTx = LOW LEVEL | RISING...
Napisz coś podobnego jak poniżej: [syntax=c] // zmienne globalne dostepne rowniez w przerwaniu volatile uint32_t PulseWidth; volatile uint8_t zakonczono_pomiar = 0; // obsluga przerwania TMR32B0 void TIMER32_0_IRQHandler(void) { static uint32_t LastCapture = 0; if ( LPC_TMR32B0->IR & (0x1<<4) ) // sprawdzenie czy przerwanie od kanalu zliczajacego...
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...
Proponuję Autorowi tematu wrócić do działu, w którym zazwyczaj pisze, czyli do Arduino, ponieważ: - profesjonalne systemy alarmowe nie są kompatybilne z Arduino, - profesjonalne czujki alarmowe nie są kompatybilne z Arduino, - w sekcji Arduino łatwiej uzyskać pomoc w kwestiach programowych dla Arduino. Porty mikrokontrolerów AVR można skonfigurować,...
Przerwanie sztucznie chiałem zgłosić, ustawiając flagę INTF0 w GIFR. A tak z ciekawości, jak to chciałeś zrobić? Czytałeś to? The flag is cleared when the interrupt routine is executed. Alternatively, the flag can be cleared by writing a logical one to it. Wpisywanie logicznej jedynki zeruje flagę, a nie ustawia. Wpisywanie zera nic nie zmienia, niezależnie...
Witam. Jestem początkujący w programowaniu więc proszę o wyrozumiałość. Potrzebuje program sterowania klapą (otwieranie i zamykanie dwie krańcówki góra dół i silnik lewo prawo). Chce aby jazda w gore lub w dol odbywała się w momencie zmiany stanu pewnej zmiennej zewnętrznej konkretnie zboczem rosnącym. Wyczytałem, że w Bascomie można zrealizować t przerwaniem...
a nie musisz zrobic glownej petli dla programu??
LPC176x (czyli wersja 100-nóżkowa) posiada 4 timery, każdy z nich posiada po dwa wejścia: CAP0 i CAP1. Daje to max 8 wejść, czyli może się udać. Pokrótce wejścia CAP pozwalają zapisać aktualny stan timera (rejestr TC) w rejestrze CR0/CR1 w momencie zmiany stanu na takim wejściu. Pomiar szerokości impulsu PWM jest tym samym tak dokładny, jak często tyka...
Chce mierzyć impulsy z zakresu 10kHz do 120kHz... 89cx051 (at)24MHz + Basic = Ciężka(niemożliwa?) sprawa przy 120kHz. Może w asm dałoby radę , ale Basic :( Zmienił bym także koncepcję/sposób pomiaru , a mianowicie: Sygnał podaję na INT0 i odwrócony(zanegowany) na INT1 , włączam bramkowanie liczników T0 i T1 i niech zliczają cykle maszynowe.T0 liczy...
Idzmy głównym wątkiem bez cofania sie. Tak, uaktywnia ale już wiem, ze było ono przechowywane w SREG. To jest wyjaśnione. W SREG przechowywana jest informacja o fladze I, czyli fakt włączenia lub wyłączenia przerwań globalnych. Nie ma to nic wspólnego z "przechowywaniem" informacji o przerwaniach INTx. Instrukcjami operującymi na fladze I w SREG są:...
Wyrzuc pojemność, daj dwie bramki szeregowo (żeby ujemny sygnał na fototranzyztorze dawał ujemny na uP) i zliczaj nie na T0 tylko na INT, w obsłudze przerwania zliczaj programowo. Eliminację kilku po sobie następujących lini zrób progarmowo w taki sposób że pierwsze zbocze opadające jest zliczane a nastepnie blokuje przerwania na INT przez czas np....
Bity w MCUCR określają na co będzie reagować przerwanie zewnętrzne... Zmiana stanu, opadające lub narastające zbocze więc jest to jak najbardziej potrzebne... SIGNAL (INT0_vect) - obsługa zewnętrznego przerwania INT0... SIGNAL (TIMER0_OVF_vect) - obsługa przerwania od przepełnienia timer0... Co do portu... Jak na mój gust powinno być PORTC = !PORTC;...
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...
cli i sei zmienią globalną flagę przerwań, blokując lub odblokowując wszystkie. Na to nakładają się priorytety przerwań kontrolera przewań i na końcu masz przerwania z danego modułu. Kolejne możesz zablokować tak jak masz, wpisując blokadę do PINCTRL lub w rejestrze kontrolnym przerwań dla danego peryferium (w tym przypadku PORT). Normalnie RETI na...
Istnieją dwie cyfrowe metody pomiaru częstotliwości: 1. Pomiar ilości impulsów wzorcowych w trakcie trwania okresu sygnału mierzonego. Konkretnie mierzymy imp. wzorcowe w trakcie trwania połowy okresu - zwykle, gdy jest poziom wysoki. W takiej sytuacji jeżeli zmierzysz N imp. wzorcowych w trakcie połowy okresu, to: Tx=2*N*Tw, gdzie Tx okres przebiegu...
CZy w mikroprocesorach 89C2051 można ustawić przerwanie zewnętrzne aby reagowało na zbocze narastajace bądź opadające pisząc progam w Bascomie. Szukam po necie nic na ten temat nie mogę znaleźć.
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...
Byc moze za duzo razy wyzwala Ci sie procedura detekcji zera. Kiedy zbocze narasta/opada powoli to tak moze byc. Kiedys pisalem program do podobnego zastosowania. Zero bylo wykrywane prostym sposobem przy pomocy komparatora wewnatrz Atmegi88. Po kilku godzinach prob i zastawianiu pulapek programowych okazalo sie ze przerwanie od komparatora bylo generowane...
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,...
Prz zboczu narastającym odpal timer, i ustaw przerwanie na wyzwalanie zboczem opadającym. W obsłudze przerwania zatrzymujesz timere i odczytujesz wartośc oraz wyzerowujesz go przygotowując do następnego odczytu. Znając częstotliwośc zegara oraz wartośc prescalera i odczytaną wartość z timera znasz okres od zbocza narastającego do opadającego. Niby...
Przepraszam ale w pierwszej wypowiedzi popełniłem błąd logiczny - oba przerwania powinny być ustawione na te same zbocze a nie różne. Dlaczego, bo tak jak napisałem wcześniej nie będzie można określić kierunku zmian, zawsze bedzie ta sama kolejność wywoływania przerwań. Obojętnie czy kręcimy w lewo czy w prawo. np. ChA narastanie 0->1 a ChB opadanie...
ISR(INT2_vect) //procedura obslugi przerwania { impulsy++; } A czy zadziała: (chyba powinno ;)) SIGNAL(SIG_INTERRUPT2)// gdy nastąpi przerwanie na wejściu INT2, wykonuje to co w klamrach { impulsy++; // każde przerwanie powiększa zmienną impulsy o 1 // tu wpisz swoją funkcję - opóźnienie o 40 milisekund } Ale spróbuj też w tym swoim...
Użyłem tutaj dwa razy bloku process, który (jak mi się wydaje) działa podobnie jak przerwanie w procesorze i tutaj rodzą się pytania, dlaczego jak w procesie dam wyłącznie count_24_bit <= count_24_bit + 1 ; to nic się nie dzieje, a dopiero kiedy obuduje to jakimś if'em to działa? no i czy takie procesy są wykonywane równolegle, czy mają jakieś priorytety?...
gmp wrote: Procek obsluguje poprawnie 4xmnijesze czestotliwosci od zegara. Dziwne, ale z dokumentacji wynika coś zupełnie innego. Mikrokontroler poprawnie rozpoznaje zmianę stanu (przy reakcji na zbocze) o ile stan ten trwa dłużej niż jeden cykl zegarowy. Przy czasach krótszych może wykryć albo nie. Pan Arkadiusz Krysiak w swojej książce o AT90S2313...
Nie zadeklarowałeś na jakie zbocze reaguje INT, czyli masz domyślne ustawienia procesora (rejestry są ustawione po resecie na domyślne). Jakie dane wystawia Twój odbiornik IR, czy w stanie spoczynku masz stan H czyli +5V? Jeśli tak to przerwanie powinno być tylko na zbocze opadające. Twój odbiornik ma stan wysoki jak nic nie odbiera, każdy wysłany bit...
Przy puszczeniu raczej o drgania nie musisz się martwić jedynie przy naciskaniu. Możesz np takie coś dodać: http://obrazki.elektroda.pl/6737702800_1... I wtedy masz sygnał wciśnięcia klawisza (któregokolwiek) i odpada skanowanie cały czas (wykrywasz zbocze opadające na tym pinie czekasz 20ms jeśli dalej jest 0 to sprawdzasz który klawisz...
Błąd polegał na tym, że przy ISC10 zamiast przesuwania bitów było porównanie, ISC10=2 a więc relacja była spełniona i przyjmowała wartość 1. Co do wszystkich rad dotyczących kasowania i ustawiania bitów MCUCR i innych - mają one sens, ale dopiero po wstępnym wpisaniu tam jakiejś wartości. Mimo, że po resecie są tam wartości domyślne, najlepiej na samym...
Co do programu przedstawionego w załączniku. Strasznie marnujesz czas procesora, powinienes w przerwaniu wykonac kilka instrukcji a ty wykonujesz wszystko. Uboczną stroną jest jescze to ze musisz zapisywac wykorzystywane rejestry na stosie i "uziemiasz sobie licznk 0" Proponowałbym taki sposób: czujnik dołaczasz do wejscia into lub int1 ustawiasz na...
Tak, fuse dobrze ustawione. Ogólnie, to powinien zareagować tylko na zbocze sygnału, wykonując przerwanie tylko raz?
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ł"...
Zacina sie bo to wada bascomowejo Getrc5. ten program musi działac, dlaczego go nie zastosowałeś? Spróbuj, tylko odbiornik IR musisz dac na wejscie ICP procesora. [syntax=basic4gl]$regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Config Timer1 = Timer , Capture Edge = Falling , Prescale = 8 '1 tick= 1 uS On Capture1 Capture_edges 'To przerwanie...
Generalnie, W Bascomie obsługa RC5 pozostawia wiele do życzenia dlatego też Mark w najnowszej wersji ma wprowadzić obsługę RC5 na przerwaniu ICP ("prawdziwie" w tle) według poniższego kodu, który udostępniam i polecam: [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 8000000 Config Timer1 = Timer , Capture Edge = Falling , Prescale = 8 '1 tick= 1...
Mam wątpliwości czy dobrze rozumiem zasadę wykorzystania trybu capture, więc proszę o ocenę. Ustawiam sygnał wejściowy do Timer_A na określoną częstotliwość. Następnie definiuje sygnały, których określone zbocze będzie inkrementowało wartość w rejestrze TACCR0 czy TACCR1. W chwili wystąpienia określonego zbocza ( lub obydwu ) nastąpi przyrost o 1 wartości...
https://obrazki.elektroda.pl/3928983600_... Opiszę naprawę dość rzadkiej konsoli, polegającą na odtworzeniu schematu pierwowzoru, zaprojektowaniu i wykonaniu płyty głównej i dalszych krokach niezbędnych do przywrócenia jej życia i funkcjonalności, w których zastosowałem swoją nowatorską metodę. Będzie więc coś dla miłośników retro,...
(at)ElektrodaBot Jak skonfigurować rejestry MCP23017, aby nasąpiło przerwanie na INTB. Port B bit 0_4 to wejscia klawiszy, normalnie stan wysoki. Stan niski powinien wywołać przerwanie na INTB. Bezpośrednia odpowiedź - Dla RB0..RB4 jako wejść (normalnie “1”), przerwanie INTB ma wystąpić przy przejściu któregokolwiek z nich na “0”. Minimalny, pewny...
https://obrazki.elektroda.pl/5333857100_... Początkiem tego roku kupiłem sobie nowy ostatni normalny samochód pozbawiony większości nowoczesnych wynalazków – Opel Corsa E. Niestety Unia Jewropejska zadbała o moje bezpieczeństwo i wyposażyła to auto w potrzebne w aucie miejskim jak bielizna profesjonalistce czujniki ciśnienia...
https://obrazki.elektroda.pl/1570592100_... Witajcie, zapraszam na relację z konstrukcji zegara na PIC18F2550 napisaną w formie tutoriala, wszystko krok po kroku. Pokażę tu jak i z czego tworzyłem prosty projekt DIY na prośbę jednego z czytelników. Wykorzystamy tu wyświetlacze 7-segmentowe, rejestr przesuwny, obsłużymy przyciski a...
Zostaje do omówienia pin INT od PCF8574. Na tym pinie pojawi się zbocze opadające gdy zmieni się coś na wejściu PCF8574. Nie ma możliwości maskowania przerwań dla poszczególnych pinów PCF8574, a przerwanie jest wyzwalane na każdą zmianę stanu (zarówno rosnące, jak i opadające zbocze) na pinach PCF8574. Lepiej chyba użyć MCP23017 do tego celu. Dodano...
(at)ElektrodaBot 1.1 Schemat ideowy (czytelny w wydruku A4) wejście D następnego poprzez AND-a – w ten sposób otrzymujemy stały, sprzętowy priorytet 1 > 2 > 3. • `REF_REQ` generuje przerwanie odświeżania co ≤ 15,6 µs (timer + 74HC4060). • `BUS_ACK` możesz wygenerować najprościej z końcowego zbocza RAS (opóźnienie RC ~150 ns). --- Czy możesz przedstawić...
https://obrazki.elektroda.pl/3711757000_... Witajcie, dzisiaj przedstawię uruchomienie układu AS1115 z Arduino w oparciu o gotową bibliotekę. AS1115 to kontroler wyświetlacza 7-segmentowego (do 8 cyfr) oraz klawiatury (do 16 klawiszy) z interfejsem I2C, oferującym dodatkową linię-przerwanie dla zdarzeń pochodzących od klawiatury. Temat ten...
Jakość dźwięku słuchowo jest dobra. Jakość CD może byłaby tu nadużyciem(chociaż, kto wie, nie mam audiofilskiego słuchu), ale gra to jak dobre radio FM. Porównywalnie z mp-trójką na STA013 i CS4334, którą robiłem ok. 1,5 roku temu. Zastosowałem w tym odtwarzaczu DAC UDA1330ATS (do kupienia tu: www.seguro.pl/sklep/?zobacz=4301&pro... ). Do regulacji...
Wybacz, że nie rozumiem wielu rzeczy. To pierwsze w sumie spotkanie z arduino. Tak, potrzebuje dwa kierunki, bo walek do ktorego będzie przylorzony enkoder potrafi (na postoju) minimalnie sie cofnac i jesli nie zmniejsze tego licznika w tedy, to po ruszeniu do przodu, przekaznik bedzie w innym "miejscu" się załaczać. Co do wałka do ktorego bedzie przyłożony...
(...) ESP32 CAM zasilany również 5V. Chcę zrobić tak, żeby przy wykryciu dymu przez czujnik wysłał sygnał do ESP32, który go przebudzi z deepsleep, ale boję się, że jeżeli podłączę go bezpośrednio z czujnikiem, to uszkodzę mikrokontroler ze względu na cyfrowe wyjście czujnika, które wynosi 5V. Podstawowe Wstępna ocena dostępnych informacji Szanowny...
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.
PIC16 mają przerwanie wykrywające dowolne zbocze na 4 pinach jednocześnie.
To trzeba już nałożyć programowo na przerwanie PCINT. Ogólnie konfigurujesz PCMSK tak, aby były aktywne piny 3 i 4, a potem w programie przerwania sprawdzasz, który pin zmienił stan (wygenerował przerwanie) oraz w jakim był stanie przed przerwaniem (stąd wiesz jakie zbocze wygenerowało przerwanie). Można więc nawet programowo przypisać inne funkcje...
To raczej inaczej się robi. Wykorzystaj piny ICP i przypisane im rejestry. Timer musi pracować z częstotliwością zależną od wymaganej przez ciebie rozdzielczości pomiaru czasu. W przerwaniu odczytujesz zamrożone stany rejestru i masz pomiar w tyknięciach licznika timera. Czyli trzeba to zrobić tak: Ustawić przerwanie na zbocze narastające, zapisać...
Te linie: void int0_init( void ) { MCUCR = (1<<ISC01); // przerwanie INT0, zbocze opadajace GICR = (1<<INT0); // wlacz INT0 } void int1_init( void ) { MCUCR = (1<<ISC01); // przerwanie INT1, zbocze opadajace GICR = (1<<INT1); // enable INT1 } Są błędne, bo ustawiasz...
No nie mogę powiedzieć że coś działa jak ustawiam trigger na zbocze opadające a przerwanie cały czas uruchamia się na poziomie niskim (przytrzymanie klawisza) https://obrazki.elektroda.pl/7274678600_...
Zgoda, że przerwanie na zbocze powinno być stosowane do np. wykrywania zboczy jakiegoś zewnętrznego sygnału prostokątnego. Wykorzystanie tu przerwań reagujących na poziom jest mało wygodne. Fakt, że z przerwaniami na zbocza można jakieś zdarzenie zgubić w danym systemie. Jednak to też kwestia przyjętego protokołu komunikacyjnego i kontroli przepływu....
Mam jeszcze pytanie odnośnie sprzętowej eliminacji drgania styków. Zrobiłem sobie do tego przycisku, który podłączony jest do INT1 i ma wywoływać przerwanie na zbocze narastające filtr RC. Podłączyłem go w ten sposób: http://obrazki.elektroda.pl/1636135200_1... i dobrałem wartości rezystora i kondensatora tak jak na schemacie. W dużej...
Przedewszystkim trzeba ustawić aby przerwanie wywoływało opadające zbocze a nie stan niski (ustawienie domyślne). W tym celu należy odpowiednio ustawić rejestr Tcon(set Tcon.0)
Ja realizowalem pomiar czasu na jednym przerwaniu. Ustawilem przerwanie na zbocze opadajace, gdy wystapilo to zaczolem liczyc czas, oraz zmienilem sposob wyzwolenia przerwania na narastajace, gdy wystapilo to zatrzymalem timer oraz zmienilem spowrotem na zbocze opadajace. :) moze troche zakrecone ale skuteczne :)
podaj kod źródłowy w języku C na mikrokontroler PIC16, dekodujący sygnał DCF77. Założenia są takie, że przebieg z odbiornika DCF77 podawany jest na wejście przerwania zewnętrznego INT0 a program ma uzupełnić odpowiednią strukturę zawierającą pole daty i czasu z dokładnością co do sekundy. Program bez funkcji delay, ma działać jako maszyna stanów. Chętnie...
To mam inną propozycję. Zamiast w przerwaniu wyliczać długość impulsu, uruchamiaj dwa przerwania, bez timeout'ów . Jedno na zbocze narastające, które będzie tylko wstawiało znacznik czasu rozpoczęcia (nawet w mikrosekundach) do zmiennej globalnej. Drugie na zbocze opadające, które z kolei wyliczy deltę pomiędzy czasem rozpoczęcia a odczytanym w tym...
Skoro przerwanie masz przy zboczu narastającym, to znaczy, że masz przerwanie tylko od jednej diody Kolega tmf się myli. Przerwanie na narastające zbocze jest jak najbardziej ok i powinno być co 10ms. Obie diody przy zaniku napięcia dają zbocze narastające na wyjściu transoptora. Należałoby sprawdzić ten transoptor czy jest sprawny, ewentualnie zmniejszyć...
Zrobiłem trochę inaczej. W main ustawiam reakcję na rosnące zbocze, kiedy wystąpi przerwanie sprawdzam czy jest stan wysoki na pinie. Jeśli tak to ustawiam reakcję na opadające zbocze, w przeciwnym razie ustawiam reakcję na rosnące zbocze. Następnie odczytuje zawartość timera w chwili wystąpienia zbocza i odejmuję od niego wartość ostatniego pomiaru....
A co jest na wejściu INT1. Jeśli zrobiłeś przerwanie niskim stanem to może masz tam cały czas stan niski i jak włączysz przerwania to znów się robi obsługa przerwania. Ustaw przerwanie na zbocze opadające i powinno się poprawić.
Kod tak z grubsza na arduino , ale na Logo będzie Ći łatwiej, jeśli opanujesz np:bloki. Jeśli zdecydujesz się na Logo, to przenieś post do działu ,, automatyka sterowanie PLC ,, tam prędzej ktoś pomoże . // PINY GUZIKOW na ARDUINO MEGA int dodaobr = 9;//przycisk ,ustawianie dodawania temperatury int odejobr = 8;//przycisk ,ustawianie odejmowania temperatury...
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...
Witam. Męczę się już długo i cały czas nie mogę uzyskać rozwiązania. Zamieszczam schemat oraz fragmenty programu. Ogólnie przerwanie chyba działa, bo jak odłączałem jedynie napięcie na komparatorze, ale cały czas zasilałem mikroprocesor to przerwanie występowało. Wydaje mi się, że problem polega na odpowiednim podtrzymaniu napięcia mikroprocesora na...
Szkam jakiegoś prostego rozwiązania, które wyeliminuje mi kilka problemów w aplikacji. Chcę użyć przerwań do nasłuchiwania zmian na pinach Controlino Mega. Niestety w testach na arduino uno okazało się, że występuje zjawisko drgania styków. To powoduje, że przerwanie uruchamia się kilka razy na każe pojedyńcze włączenie przycisku monsotabilnego. Nie...
Użyj wejścia ICP - wtedy zbocze zgłasza przerwanie i jednocześnie zatrzaskiwana jest zawartość timera. Odejmując dwie takie wartości masz długość impulsu, musisz jedynie zmieniać zbocze, na które reaguje ICP.
AVE... (at)Nsvinc... Zrobiłbym to tak(na PIC16F785): 1. Ustaw przerwanie pinu na zbocze narastające. 2. Gdy pojawi się zbocze narastające: - zresetuj flagę przerwania; - ustaw przerwanie pinu na zbocze opadające; - ustaw preskaler timera; - włącz timer sprzężony z głównym zegarem. 3. Gdy pojawi się zbocze opadające: - zatrzymaj timer; - zresetuj flagę...
Witam, Przedstawiam a tym artykule jak można na jednym przerwaniu obsłużyć pokazany poniżej impulsator. Może komuś się przyda. http://obrazki.elektroda.pl/6570210900_1... http://obrazki.elektroda.pl/3250862500_1... Wyjście B enkodera może by na innym dowolnym pinie, wymaga jedynie zmian w algorytmie. /* wyjście impulsatora...
Tak to wygląda: https://obrazki.elektroda.pl/6963899300_... I tak jak wspominałeś, Twoim zadaniem jest zmierzyć czas trwania sygnału wyjściowego z czujnika - czyli na linii ECHO. Będziesz miał czas trwania przebytej przez falę drogi- jak kolega wyżej wspomniał fala wykonała dwukrotność drogi czujnik-przeszkoda: od czujnika do przeszkody...
AVE... Spróbuj tej drugiej metody z użyciem wejścia do generowania przerwania. Tak się robi mierniki częstotliwości i LC na PICach... Ustawiając najpierw przerwanie na zbocze narastające, a po starcie timera na opadające możesz mierzyć długość impulsu. Przy szybkim zegarze nie będzie problemu z czasami...
Witam, chciałbym zrobić ograniczenie prądowe z użyciem wewnętrznego komparatora mikrokontrolera XMEGA. Do wejścia nieodwracającego podpięty będzie rezystor bocznikowy na którym będzie mierzony prąd poprzez pomiar napięcia a na wyjściu odwracającym będzie podłączony wewnętrznie przetwornik DAC. Dzięki nastawie będzie można regulować wartość ograniczenia...
zbocze narastające siemens zbocze zbocze sygnału
oporność głośnik power pointa citroen sterować
sterowanie napięciem sieciowym
Jak uniknąć nakładania się czasów nawadniania w Satel Integra? Termistory w przetwornicy 3000W Volt Polska