1. z tego co piszesz to przerwanie o najwyższym piriorytecie będzie występowało z częstotliwością 4kHz. Zakładając że będziesz miał zegar 8MHz to na obsługe przerwania (zapisanie 8 bajtów) i obsługe innych przerwań będziesz miał: 8MHz/4kHz = 2000 cykli zegarowych co w przypadku procesorów typu RISC daje jakieś 1500 instrukcji. A to jest całkiem sporo....
Każde przerwanie (a więc i niemaskowalne) jest typem sytuacji wyjątkowej (ale nie zawsze odwrotnie).
(at)ElektrodaBot Czy w zwykłych wątkach (poza ISR) można użyć vPortEnterCriticalSafe() oraz vPortExitCriticalSafe() zamiast stosowania operacji atomowych? Bezpośrednia odpowiedź W zadaniach (wątkach) FreeRTOS działających pod ESP-IDF można wywoływać `vPortEnterCriticalSafe()` / `vPortExitCriticalSafe()` zamiast używać `std::atomic`, ale należy traktować...
A gdybyś posłużył się pinem IRQ? W CONFIG masz maskowanie przerwań - ustaw tylko na RX (domyślnie są wszystkie, czyli mniemam, że na każde zdarzenie reaguje) i "tylko" kwestia synchronizacji nadajnika z odbiornikiem i odczytu czasu, kiedy IRQ nastąpiło.
Jedno i drugie - działa za każdym razem. Nowe wersje OpenOCD wprowadziły maskowanie przerwań podczas "single step" - może po prostu o to Ci chodzi? Opcja ta (można ją wyłaczyć działa tak, że podczas klikania "step" w debuggerze w zasadzie nigdy nie zostanie wykonane żadne przerwanie. Ma to pewne wady jak i pewne zalety (np. bez tej opcji debuggowanie...
Domniemam.... Rdzeń ma fizycznie własny mały kontroler przerwań z 16 liniami, sa to te systemowe, które maja własną grupę rejestrów SHP. Do jednej z linii przyczepiony jest NVIC prawdopodobnie na którejś pozycji "reserved". NVIC ma własne rejestry i własne reguły rządzenia przerwaniami. Rdzeń wystawia priorytet akurat wykonywanego przerwania do NVICa,...
- cli - sprawdzenie flagi - jeżeli jest ustawiona to skopiowanie sobie danych i wyczyszczenie flagi - sei - ewentualne operacje na skopiowanych danych To powinno działać dobrze? Myślę, że tak. Jest tylko jedno małe 'ale'. Jeśli przerwanie A pojawi się pomiędzy cli a sei, to zostanie o pewien czas odroczone. Nie wiem ile tam masz instrukcji, ale jeżeli...
Mam przerwanie od odbioru po UARCIE, w którym mam instrukcje NVIC_SystemLPConfig(NVIC_LP_SLEEPONEXIT, ENABLE) i ta instrukcją usypiam procesor (wiem że się usypia, ponieważ w pętli głównej migam diodą, która przestaje migać). Faktem jest to, że przerwanie o wyższym priorytecie budzi procesor, w przerwaniu które budzi procesor, należy użyć jeszcze instrukcji...
Mistrz MK jak zwykle popłynął. Dlaczego mnie to nie dziwi... Sam pomysł, by wykonywać operacje na elementach wektora w czasie, gdy mogą one być modyfikowane, wygląda podejrzanie. Blokowanie przerwań na czas tych operacji - to tylko maskowanie błędu koncepcji. Jeśli wiesz, że operacje na wektorze będą wykonywane w czasie, gdy procedura przerwania go...
Do jnkOle - możesz mi powiedzieć czym różni się Twoja procedura odczytu RSa od mojej, która wygląda tak: http://pl.wikipedia.org/wiki/Bufor_cykli... Krótko mówiąc - rx0_index w końcu zrówna się z rx0_buffer_size, i co dalej ? Procedura odbioru przesuwająca całą tablice o jeden element w lewo będzie troszeczkę nieefektywna, A u mnie poprzez proste...
górowanie jest zdaje się oczywiste. Maskowanie pozostałych bitów, mniejsza ilość instrukcji. Dla mnie nie. Ale może coś mi umknęło, specjalistom od ARM nie jestem. Ale chętnie się uczę. Zarówno z BB jak i bez musimy najpierw wykonać instrukcję load. Ponieważ ona nie ustawia znaczników musi być w obu przypadkach instrukcja testowania Następna może być...
Dzięki wielkie! Dodanie volatile przed deklarację zmiennej oczywiście pomogło. Czy to jest błąd kompilatora GCC? W jakich sytuacjach należy używać volatile? Tu masz bez zbędnych ozdobników: http://mikrokontrolery.blogspot.com/2011... Nie jest to błąd kompilatora, i powiedzmy sobie szczerze - na tym etapie raczej starają się...
Panowie, ale tak naprawdę co tu ma atomowość do rzeczy skoro dioda ma być toglowana w przerwaniu gdy inne przerwania są przecież wyłączone. To wtedy nie jest istotne czy będzie przestawiana przez sbi, cbi czy też poprzez ładowanie rejestru i maskowanie któregoś tam bitu. To jedno. A drugie: Ponieważ mam pod ręką identyczną płytę testową co autor postu...
Poprawiłem kod, był błąd przy zamianie adc na Uwe. http://obrazki.elektroda.pl/9994453300_1...
Witam Dzisiaj znalazłem fajną stronkę gdzie był umieszczony super fajny ściemniacz sterowany pilotem i ręcznie na Tiny12 ( http://republika.pl/rejestr/strony/avr_r... ). I tu mam pare pytań: 1. Potrzebuje 2 takich układów w jednej puszce więc żeby mi się to zmieściło wymyśliłem że uwspólnie odbiornik podczerwieni, zasilanie, tranzystor odp....
PCINT to specjalne przerwania aktywowane zmianą stanu pinu. Dodatkowo wszystkie przerwania PCINT w tych procesorach wywołują jedno przerwanie, w którym należy programowo określić, który pin je spowodował ważny jest też rejestr PCMSK, który odpowiada za maskowanie nieużywanych przerwań. Polecam lekturę datasheetów tych procesorów w celu dokładnego poznania...
Witam Stopniowo rozbudowując o kolejne konfiguracje układ chciałbym mieć możliwość ustawiania parametrów zegara przez pilota ( w sumie to bardziej wygodne i nie zabiera wyprowadzeń uC ). Mam program z menu działającym na przyciskach, zastosowałem flagi, gdyż sprawdzanie tylu wersji warunków niepotrzebnie zagmatwałoby kod. Zostawiłem obsługę przez przyciski...
Da się jakos maskować przerwania Int0,1 w tych kontrolerach???
Nie podoba mi się twoje rozwiązanie. Ja bym to zrobił tak - timer odmierzający takty w rytm podstawowego okresu PWM (czyli przerwania np. 1kHz). Teraz zamiast tych porównań z licznikami, wrzuć wartość licznika do rejestru compare register. Dzięki temu masz przerwanie po przepełnieniu timera (nowy okres) - w tym przerwaniu inicjujesz wysyłkę danych po...
Jest takie "coś" w STM32 jak RCC - czy w wielowątkowej aplikacji do włączania/wyłączania zegarów i resetowania peryferiów prościej użyć bit-bandingu, czy może z jakiegoś perwersyjnego powodu trzeba się koniecznie bawić w maskowanie przerwań? Generalnie nie wiem w czym problem - bit-banding zajmuje mniej kodu, wykonuje się z porównywalną prędkością,...
Jeżeli chcesz używać funkcji z API FreeRTOS w przerwaniach to portENTER_CRITICAL() powinien maskować to przerwanie. To, które przerwania są maskowane określa definicja: configMAX_SYSCALL_INTERRUPT_PRIORITY Znajduje się ona w pliku FreeRTOSConfig.h.
Nie pomaga, wciąż wywołuje się wielokrotnie. Maskujesz minuty i sekundy, więc trudno innego zachowania sie spodziewać.
ATmega 128 obsługuje takie maskowanie, pewnie inne ATmegi tez to mają. . Chyba już się nie robi procków z niemaskowanymi przerwaniami :D Mój typ do tego zadania to AT89S52 i wszelkie połączenia mam już narzucone. Zastanawiam się czy uśredniać pomiary - porobiłem pomiary okresu częstościomierzem na INT i podając na RX nawet słaby sygnał RF tuż przed...
Włączenie przerwania polega na ustawieniu bitu w rejestrze maskującym czy flagowym ?
Cześć Sebastian, Biling to jakby z definicji wykaz połączeń zrealizowanych (czyli takich które doszły do skutku). Prokurator najczęściej pyta o połączenia zrealizowane w określonym przedziale czasu (np. w przeciągu konkretnego dnia). Jeśli pytanie nie zostało postawione bardziej szczegółowo to i odpowiedź jest standardowa. Czasem jest też tak (to zależy...
a przejrzał kolega chociaż raz przykład odbioru RC5 z helpa Bascoma ??? oczywiście tam nie jest on w przerwaniu ale to nic. Za to są takie rzeczy jak: - maskowanie tooglebitu - sprawdzanie czy adres jest np = 0 - co oznacza pilota TV albo przynajmniej jakiś warunek czy adres < 255 - bo inaczej to będzie taki klops właśnie jaki u ciebie występuje...
Ahh juz rozumiem. Faktycznie synchronizacja moze byc potrzebna bo faktycznie moga sobie te dwie funkcje wejsc w droge jesli przerwanie przerwie dzialanie "normalnie" wywolujacej sie funkcji akurat w tym momencie jak ta bedzie zmieniala wspoldzielona zmienna. W kazdym razie chyba bedziesz musial maskowac przerwania na czas wykonywania synchronizowanego...
Poszczególne bity tego rejestru pozwalają ci "zamaskować" określone przerwania Wyjaśnienie terminu maska bitowa znajdziesz np na Wikipedii [url=http://en.wikipedia.org/wiki/Mask_%...
czyli flaga INTF1 ustawia się niezależnie od tego, czy jest zezwolenie na fladze INT1. To jest standard. Zawsze możesz programowo sprawdzać czy dane zdarzenie miało miejsce bez wywoływania sprzętowego przerwania. Są też inne rozwiązania gdzie są dodatkowe flagi za rejestrem maskującym.
Doczytałem dokumentację i muszę przyznać, że masz absolutną rację Andrzeju. Pozornie nie ma zagnieżdżonych przerwań: normally interrupts will remain disabled inside the handler until the handler exits Można jednak sobie poradzić z ręcznym priorytetowaniem. W obsłudze dowolnego przerwania można maskować tylko te przerwania, które faktycznie mogą być...
a jakby tak użyć gotowego scalaczka arbitrażu przerwań ?? Programowalny sterownik przerwań 8259- PIC Układ jest przeznaczony do : 1.Przeprowadzenia arbitrażu pomiędzy zgłoszeniami przerwań z ośmiu różnych źródeł; 2.Maskowanie wybranych zgłoszeń przerwań 3.Generacja żądania przerwania dla systemu mikroprocesorowego itd oraz http://www.google.pl/search?hl=pl&ie=UTF...
Jak napisał pawel129 masz do dyspozycji priorytet przerwań i ich indywidualne maskowanie. Mieszając tym praktycznie do woli i według życzenia da się obsługiwać przerwania (byle krótko i treściwie). Sytuacje wyjątkowe są możliwe, ale naprawdę rzadkie i na razie nie ma sobie nimi co zawracać głowy.
Znaczy się "t0isr" na "FIQ_Handler"? tak Acha. Bo wcześniej w ogóle wywalałem deklarację funkcji, uznając że jest ona w pliku z wektorami. Zmieniałem tylko nazwę w samej funkcji, ale deklaracji nie zmieniałem tylko ją całkowicie wywalałem :D Czy działa sprawdzę jutro, bo teraz już nie mam dostępu do płytki. Więc pytanie o priorytety przerwań: Po co...
Witam wszystkich. Jestem zielony w sterownikach PLC, toteż proszę o pomoc doświadczonych kolegów. Próbuję rozgryźć program, który jest zaszyty w moim FATEK'u (układ działa poprawnie) Ne wejściu X1 jest enkoder. Zastosowano konfigurację HSC4, licznik softwarowy,U/D, zlicz w górę X0. W programie głównym jest znacznik (?) M1982 - maskowanie, który jest...
Hmmmm.... Kod wydaje się być OK. Sprawdź jeszcze dokłądnie czy uaktywniłeś odpowiednie przerwania (sprawdź wszystkjie bity maskujące). Nie pamiętam dokładnie co w którym rejestrze siedzi, bo AVRkami bawię się ostatnio mało. Pozdrawiam :)
Pomyślałem , że już najwyższy czas aby zając się przerwaniami . Aby wszystko działało zgodnie z oczekiwaniami potrzebne są drobne modyfikacje w sprzęcie . Z oczywistych przyczyn wykorzystałem przerwanie maskowane INT , wyzwalane jest impulsami wygaszania pionowego z grafiki . Z80 reaguje na niski poziom na INT więc po przyjęciu przerwania musi zostać...
Maskujesz błąd błędem. Najpierw zrozum, co się dzieje w Twoim kodzie. while((SPI1->SR & SPI_SR_BSY) == 0) - to znaczy "powtarzaj tak długo, jak długo SPI nie pracuje (bo skończył transmisję)". Kiedy wyjdziesz z tej pętli? Co masz w niej powtarzać? To się kupy nie trzyma. Wciąż podejrzewam jednak, że oprócz tych 10 błędów masz jeszcze jedenasty - z ustawieniem...
(at)qazpylades Jakie masz ustawienia PRIMASK oraz jaki jest priorytet Twojego przerwania? Instrukcja cpsid i niekoniecznie maskuje Twoje przerwanie.
Dokładnie. te _delay_ms(x); to już gwoździe do trumny tego programu. Po pierwsze wszystko do przerwania, a po drugie musisz stosować maskowanie bitów, tak aby zmiana kombinacji 4-rech pierwszych (I silnik) nie wpływała na zmianę kombinacji kolejnych 4-rech (II silnik).
1. Odbiór Rc5 w przerwaniu w Bascomie stwarza spore problemy 2. Maskować trzeba komendę, niekoniecznie adres. 3. Pindo sterowania diodą nie skonfigurowany jako wyjście, to samo Portb 4. Nie wiemy jaki masz schemat, jakie ustawienie fusebitów.
Styki są mechaniczne i pewnie przy ruchu tarczy są szczególnie narażone na dodatkowe drgania. Jak je najlepiej wyeliminować? Wystarczy zwykły kondensator, czy lepiej coś bardziej wyszukanego i co? I czy ktoś robił eksperymenty jakie parametry kondensatorka lub innych elementów najlepiej pasują do takiej klasycznej tarczy? Programowy debouncing. Czy...
W poprzedniej wypowiedzi dokonałem poprawek w przykładowym kodzie. Tak, to już jest kiedy Elektrodę traktuje się jako przerywnik przy pracy. Kwestią otwartą jest nadal testowanie wybranego bitu, lub bitów. 1. Jak to wykonywać poprawnie testowanie jednego bitu ? Zależy to od danej sytuacji. W trakcie testowania pojedynczego bitu w PINx z pominięciem...
Proszę podpowiedz mi jeszcze jedną sprawę. Zaglądnąłem do erraty bo podobno to dobry zwyczaj czytać te dokumenty i tam jest takie coś napisane: 1.1.4 Cortex-M3 may freeze for SLEEPONEXIT single instruction ISR Description If the Cortex-M3 SLEEPONEXIT functionality is used and the concerned interrupt service routine (ISR) contains only a single instruction,...
Testowanie przycisków w main to nie jest dobry pomysł. Zrób to raczej w procedurze przerwania wyświetlacza. Program nieskomentowany - nie wiadomo jak często są zgłaszane przerwania wyświetlacza, więc trudno coś dalej konkretnie wymyślać. Ogólnie w co którymś przerwaniu wyświetlacza wypada wsunąć stan przycisku do bajtowej zmiennej, w której będą zapamiętane...
Chodzi o sterownik umożliwiający wykonywanie zadania tak, by przez jakiś czas (i to duży - nawet setki godzin) miało sprzęt wyłącznie dla siebie (ewentualnie jeden rdzeń procesora, gdyby dało się zrobić tak, żeby nic nie zaburzało jego działania). Chodzi o zastosowanie komputera do zbierania danych w czasie rzeczywistym - i to takim bardzo rzeczywistym,...
To że systemy operacyjne, bibioteki i API odcisnęły na Tobie piętno- to jeszcze nic. Wyobraź sobie że masz komputer z wykasowanym BIOS. To jest właśnie mały mikroprocesor. Ile tysięcy stron dokumentacji musiał byś przeczytać aby taki komputer uruchomić. A tu- tylko 600. Jeszcze jedno- w podręcznikach do C na "prawdziwe" komputery dość po macoszemu opisują...
Czyli są to niemalże tak samo funkcyjnie przerwania jak INTy z tym że różnica polega na tym że nie można ustalać sobie czy ma być reakcja na zborze rosnące, opadające czy na stan niski? Dobrze rozumiem? Jeszcze odnośnie pierwszej częsci pytania: W każdym Datasheet znajdziesz rozdział: "Typical Characteristics", w którym są wyrażnie i dostatecznie omówione...
Witajcie, od dwóch dni próbuję ogarnąć przerwania EXTI. Już na to patrzeć nie umie... Gdy naciskam przycisk wszystko się zacina. Działanie programu (docelowe jakie ma być): dioda mruga co sekundę, po wciśnięciu przycisku gaśnie, po ponownym wciśnięciu zaczyna mrugać i tak w kółko. Działa: mruga, po wciśnięciu zostaje w stanie w jakim była podczas wciskania...
Ale przecież ja tak robię czyli najpierw blokuje możliwość odebrania przerwania [syntax=c] PORTC.PIN4CTRL=PORT_ISC_INPUT_DISABLE_gc [/syntax] a potem kasuję flage [syntax=c] PORTC.INTFLAGS=0x01; [/syntax] Tak to zapisałem w cytowanym kodzie nr2. Moje pytanie jest dlaczego lepiej jest to robić maskując przerwanie INT0MASK niż tak jak ja to robię [syntax=c]...
Z 51 mialem stycznosc dwa lata temu, teraz nie pamietam wszystkich rejestrow funkcyjnych i za co one odpowiadaja, ale za etykieta START masz ustawienie przerwania od timera, wpisywana jest wartosc poczatkowa i pewnie ustawiane priorytety przerwan i ich maskowanie. a za mruganie diody co sekunde odpowiedzialny jest rozkaz CPL, ktory zmienia wartosc wyjsc...
maskowanie kamer maskowanie przerwa maskowanie czujki
wentylator lm317 termistor lambda sonde ekspres krups konserwacja
wyłącznik bezprzewodowy prostownik tyrystorowy
Zaprogramowanie pilotów - przyczyny i rozwiązania Wzmacniacz antenowy LNA 188 5G vs SWA 955-5 EX