Dzień dobry, Jak w temacie. Czy da się w systemie DOS wyłączyć niepotrzebne procesy działające w przerywaniach DOSa? InterruptValue Function 0CPU - Divide by zero (exception interrupt) 1CPU - Single step 2CPU - Non-maskable interrupt (NMI) 3CPU - Break point instruction 4CPU - Overflow Trap 5BIOS - Print screen 6CPU - Invalid op-code 7CPU - Math coprocessor...
Typ płytki Arduino to Duemilanove - Połączenie diody LED: zewnętrzna dioda - Czas migania: dowolny - Dalsze działanie programu: zakończenie pracy Wstępna ocena dostępnych informacji - Analiza podanych przez użytkownika danych: - Płytka Arduino: Duemilanove. - Połączenie diody LED: Zewnętrzna dioda podłączona do płytki. - Czas migania: Dowolny (domyślnie...
Ależ ten grzyb kłopotliwy - w Atarce czy Amisi wpisywalem pewną wartosc do jednej komorki - przerwania IRQ sie wylaczaly, a potem wracalem starą wartosc i wszystko szlo dalej bez zadnych zwich. Czy to naprawde jest niemozliwe?
OK, no to następne podejście z nadmiarowym kodem testowym odliczającym w kółko na ATmega8515 zamiast ADC - wyświetlanie bez zarzutu. Co do tego dziwnie wyświetlanego zera, to może masz zamienione a z g, b z f itp. W tej wersji łatwiej zapanować nad częstotliwością odświeżania segmentów - zbyt duża skutkuje podświetlaniem sąsiednich cyfr, zbyt mała -...
bo raz że "dostajemy wydajność za darmo" a dwa że poznajemy lepsze techniki zarządzania zasobami. Kontrolowanie dostępu do współdzielonych zasobów przez "krótkie" wyłączanie przerwań to moim zdaniem kiepski pomysł, ale w tym omawianym przypadku inaczej się nie da. Dodano po 3 Dodam jeszcze, że programy napisane jako maszyna stanów bardzo dobrze testuje...
Przy zapisie do EEPROMU w Bascomie nie musisz wyłączać przerwań. Funkcja WRITEEEPROM robi to sama, ale READEEPROM już nie wyłącza przerwań :)
Nie wiem jaki jest twój kod w bascomie ale timer i uart to są sprzętowe zasoby specjalnie wydzielone do swoich celów więc nie powinny się zakłócać. Pytanie co masz w przerwaniu timera?
Miernik temperatur do PC pod zatokę 3.5 cala https://obrazki.elektroda.pl/2237807500_... Projekt powstał na zamówienie znajomego, ale trochę spędziłem nad nim czasu i nie wszystko szło jak po myśli, więc pomyślałem, że może przy okazji powstanie z tego ciekawy artykuł do działu DIY. Założenia Tematem miał być miernik trzech temperatur...
Problem z pomiarami jest przy małym wypełnieniu np. gdy jest pochmurno. Zmniejszenie częstotliwości pwm faktycznie poprawiło odczyty. Dla majsterkowiczów wstawiam kod. Proszę pamiętać, że wykorzystując tylko "dolny klucz" IR2104 sygnał pwm mamy odwrócony, czyli pwm 99% z arduino daje 1% na mosfet. Program obsługuje 4 wątki. 1. Odczyt ADC 2. Wysterowanie...
Witaj (at)pkaczmarek2 — dziękuję, że włożyłeś tyle wysiłku i czasu w ten projekt i pomogłeś tak wielu z nas tutaj! Chciałem zgłosić problem, którego nie udało mi się rozwiązać w przypadku (być może?) nieznanego wariantu kontrolera RGB działającego na modelu BL602. Przyniosłem kilka zdjęć dla innych do porównania, może uda ci się to rozwiązać. Kontroler...
(at)tadzik85 - dziękuję za skrót różnic między nagłówkami :) Ale... no bez jaj. Czyli bit "Global Interrupt Enable" (czy jak on się tam zwał) w AVR, decyduje o tym na jakim poziomie pracuje procesor? ISR z "odblokowanymi" przerwaniami to poziom wątku, a "main" z "wyłączonymi" przerwaniami to poziom przerwań? A całe to "włączanie/wyłączanie" przerwań...
Włączanie i wyłączanie przerwań w pętli głównej lub jakiejś funkcji, czyli poza ISR może być stosowane w przypadku krytycznego kodu. Kod krytyczny to taki, który musi się wykonać ze ściśle określonymi zależnościami czasowymi. Tym samym wystąpienie przerwania w trakcie wykonywania tego kodu zakłóciłoby te zależności. Tutaj oczywiście nie ma to sensu....
Czy użycie pinu UART jako GPIO wymaga pewnych ustawień? Bezpośrednia odpowiedź: Tak, użycie pinu UART jako GPIO zazwyczaj wymaga pewnej konfiguracji. Wynika to z faktu, że piny UART są zwykle domyślnie skonfigurowane do komunikacji szeregowej i należy je ponownie skonfigurować, aby działały jako piny wejścia/wyjścia ogólnego przeznaczenia (GPIO). Szczegółowa...
Rynek czujników elektronicznych stale się rozwija, z dwucyfrowym tempem wzrostu rok do roku. Głównymi czynnikami napędzającymi ten wzrost jest duża liczba czujników wprowadzonych w urządzeniach Internetu Rzeczy (IoT), urządzeniach mobilnych (smartfonach i tabletach) oraz urządzeniach do noszenia. Bezprecedensowe scenariusze zastosowań są teraz możliwe...
A dlaczego boisz się wyłączania przerwań? Normalną procedurą jest globalne wyłączanie przerwań na czas krytycznych operacji np. kasowanie w programie głównym flagi, która jest ustawiana w przerwaniu. Oczywiście nie można ich blokować na zbyt długo, bo można coś zgubić. Najważniejsze jest, aby w czasie gdy przerwania są zablokowane nie pojawiły się DWA...
Włączanie / wyłączanie przerwań faktycznie nie jest możliwe w trybie USER, bo wtedy nie działają instrukcje MSR / MRS... 4\/3!!
SIGNAL (SIG_INTERRUPT0) { cli(); //wyłącz przerwania ..... sei(); } Przepraszam za dygresję nie na temat. When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts are disabled. ... The I-bit is automatically set when a Return from Interrupt instruction – RETI – is executed....
https://obrazki.elektroda.pl/7518627800_... Mikron MIK32 to 32-bitowy mikrokontroler o architekturze RISC-V, który został zaprojektowany i wyprodukowany w Rosji z funkcjami podobnymi do mikrokontrolera STMicro STM32L0 z rdzeniem ARM Cortex-M0+. Nowy układ pokazuje, w jaki sposób architektura open-source RISC-V może pomóc obniżyć barierę...
Opóźnienia wewnątrz 1wread itp. są robione czysto programowo, np. poprzez puste pętle, rozkaz nop itp. Dlatego zalecane jest wyłączanie przerwań (jeśli to możliwe) podczas działań na 1wire (aby precyzji opóźnień nie zakłócić) i sprawdzanie sumy CRC.
No ale chyba możesz wykorzystać sprzętowy interfejs UART? Wtedy wystarczy kilkadziesiąt cykli na obsługę UARTa. Oczywiście trzeba by to napisać w assemblerze. No i bym walnął wyłączanie przerwań na czas generowania impulsów dla serw (tzn. na czas każdego generowanego impulsu). Wtedy ewentualne przerwanie wyskoczy pomiędzy impulsami a więc nie wpłynie...
Tak przerwania mogą zakłócać. Na czas wysyłania komend 1w wyłączaj przerwania jeśli możesz.
Problem zmiennej globalnej: - system składający się z wielu plików, kilku lub kilkunastu przerwań, dostęp do tej samej struktury opisującej "dane urządzenie" z przerwań oraz wielu innych miejsc. - tworząc zmienne w funkcji ograniczamy się do tej funkcji, więc po wyjściu z funkcji pod tym adresem może być coś innego - można stworzyć w main tą zmienną...
Załóżmy, że obsługujemy klawisz w przerwaniu zewnętrznym i ustawiamy flagę, że został naciśnięty. W pętli głównej sprawdzamy flagę i toglujemy diodą na wyjściu wysyłając jednocześnie po uarcie info - dioda ON/OFF. :idea: - taki przykład dla początkujących :D Osobiście zrobiłbym to zupełnie inaczej. Obsługa przycisków przy użyciu przerwania zewnętrznego...
Jak widać w programie najpierw dziele odczytaną wartość timer1 przez 2 (bo śmigło ma dwie łopaty) potem mnoże razy 60 żeby uzyskać ilość obrotów na minutę... co też widać w zdefiniowanym tekście do wyświetlania... Co do stabilizacji obrotów to nie powinno mieć to znaczenia wskazanie powinno być dokładne nawet jeżeli silnik się dopiero rozpędza itp......
trochę kolega flapo213 starsznie pokrętnie to wytłumaczył dlatego ja postaram się jeszcze po swojemu ;) Jeśli deklarujesz zmienną globalną, z której będziesz korzystał zarówno w procedurze obsługi przerwania a także w pozostałych częściach (funkcjach) swojego kodu, to bez słówka volatile będzie to się działo w uproszczeniu w ten sposób, że w ramach...
Jeśli chcesz aby w trakcie jednego przerwania zostało obsłużone drugie, ważniejsze, dopisz w przerwaniu SEI. Wchodząc do przerwania flaga I jest zerowana i są wyłączane przerwania, rozkaz RETI ponownie ustawia flagę I.
Zaimplementowałem wyszukiwanie binarne tak jak radziłeś. Niestety bez efektu. Aktualnie wygląda to tak: Przy naciśnięciu klawiszy "Z" i "S" szybko po sobie wyświetla mi "ZSZS" więc łapie oba klawisze, ale wyświetla podwójnie. Efekt jest zamierzony ponieważ nigdzie nie mam warunku żeby sczytywać tylko jeden bajt z klawiatury. Aktualnie czyta 3 bajty,...
Twój program jest niestety totalnie źle napisany a sposób w jaki chcesz wykorzystywać przerwania to już niestety masakra :( Ma to prawo działać tak jak opisujesz i to niezależnie czy jest podłączony ISP czy nie. On za każdym razem może się zachowywać inaczej i to widać na pierwszy rzut oka. A na zawieszanie się jest wręcz SKAZANY. Proponuję pouczyć...
Możesz włączać i wyłączać każde źródło przerwania z osobna i o tym pisze Dr.Vee. Więc w czasie kiedy obsługujesz przerwania to wyłączasz je tak aby drugi raz nie przyszło z tego samego źródła ale pozwalasz na przyjście przerwań z innych urządzeń więc nie wyłączasz globalnej obsługi przerwań. A przed powrotem z tego przerwania z powrotem je włączasz.
Tylko jeżeli będziesz wyłączał przerwania na czas obsługi 1Wire, to zliczanie czasu w przerwaniu będzie zaburzone jeżeli nie zastosowałeś trybu CTC Timera tylko zwykłe przeładowywanie Timera w przerwaniu (dokładnie to będzie się troszkę późniło).
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...
Witam, Problem rozwiązany a winny był sprzęt znaczy się autor ;-). Dodam, że wyłączanie przerwań w czasie przełączeń jak i użycie Ischarwaiting oraz czyszczenie bufora nie pomagało. Ten bajt, który przychodził po RX zawsze równy był 0x00. Problem był taki, iż RX przełączony na RSa był sprzętowo podciągnięty rezystorem do zasilania (taki układ) a przy...
Wyświetlanie grafik trwa długo i nie można wtedy wyłączać przerwań. To znaczy można, ale wtedy cała reszta programu przestanie działać.
Niestety kolejny problem mnie przerósł: próba zapisu do flash powoduje zadziałanie: [syntax=c]if (getCurrentThreadControlBlock().getStack... == false) FATAL_ERROR("Stack overflow detected!");[/syntax] przy następnym SysTicku po operacji zapisu. Załączam mój kod. Kompilator informuje że atrybut longcall jest ingnorowany - mam nadzieję...
Witam. Co do zasięgu. Jak nadajnik i odbiornik leżą na stole obok siebie też mogą się nie widzieć z powodu zbyt silnego sygnału. Odsuń je od siebie chociaż na 1-1.5mb. przerwane przerwaniem. W ostatnim przykładzie zakomentowałem zbędne wyłączanie przerwań INT0 i ich ponowne włączenie) przynajmniej dopóki autor nie wytłumaczy jaki ma to uzasadniony cel....
Ja bym powiedział, że to offtopic, ale skoro już tu jestem coś podpowiem. 1.Aby zapisywać flash w czasie działania programu, nie możesz go jednocześnie odczytywać, a co za tym idzie- program w tym czasie musi się wykonywać z ramu. 2.Zaleca się wyłączanie przerwań na ten czas, bo funkcje ich obslugi mogą się znajdować we flashu (lub funkcje ktore obsluga...
Po pierwsze musisz ustawić piny INT0 oraz INT1 jako wejscia (nie masz tego zrobionego) a samo aktywowanie przerwań nie ustawi tych pinów jako wejść czyli PIND.2 = Input PIND.3 = Input druga sprawa - po co włączasz aktywowanie przerwań poziomem niskim (Low level) ??? - wystarczy w zupełności. w takim przypadku, jeśli wyzwalanie przerwań będzie robione...
Zastosuj dwa bufory. Jeden do odbierania danych w przerwaniu, a drugi do pobierania znaków do wyświetlenia na LCD. Teraz po odebraniu jednego ciągu LCD zaczyna wyświetlać co trwa z 50ms. Jeżeli podczas wyświetlania zacznie przychodzić nowy text to zacznie on nadpisywać bufor i na LCD będziesz miał krzaki. Więc zastosuj dwa bufory. Odbieraj do jednego....
Jednopoziomowy system przerwań - to taki, w którym procesor ma, jak sama nazwa wskazuje, dwa poziomy priorytetowe wykonywanego kodu :) (czasami nawet trzy, ale zostawmy ten niebezpieczny wątek - chodzi o przerwanie niemaskowalne). Oznacza to, że wszystkie przerwania są zgłaszane na tym samym poziomie priorytetowym, chociaż mogą się one różnić tzw. podpriorytetami....
Najwięcej szukaj w manualu. Ja też nie wiedziałem o tych funkcjach i z manualem sam do tego doszedłem jak się wyłącza przerwania (doszedłem to dość sporo powiedziane - tam to poprostu jest napisane).
Jeśli przerwania są wyłączone to jasne, że nie zostaną obsłużone. Niemniej sama konwersja ADC nie wymaga wyłączenia przerwań, ani ich nie wyłącza.
O! Aż tak? No ale dobra :D Niestety Eclipse nie łyka stałych USER_MODE czy CPSR_I (plik hdr/hdr_cpsr.h oczywiście dołączyłem) więc musiałem się podratować wpisaniem konkretnych liczb. Mam nadzieję że zadziała :D Idę testować. Dodano po 26 Niestety nic nie działa. Fcclk = 72000000 Jeden sektor (24) Wyłączanie i włączanie przerwań za pomocą CPSR. Nie...
xury dzięki za poprawkę w komunikacji 1wire. Co do wyłączania INT0 to tak jak napisał już tomhandyman, każde wyłączanie czy blokowanie tych przerwań będzie miało wpływ na zakłócenie pomiaru obrotów. Dlatego tak trudno mi coś wymyślić. Propozycja tomhandyman wydaje się być stosowna, teraz zapewne będę przez kolejne kilka dni główkował jak to zapisać...
Dziękuję serdecznie za odpowiedzi, dodanie volatile i wyłączenie obsługi przerwań na czas porównania wydaje się naprawiać problem. Funkcje eeprom nie wymagają u mnie żadnej dodatkowej opieki, a przerwań używam dość sporo w moim projekcie, więc na pewno zauważyłbym, gdyby tak było. Zapis jest rzadki, chodzi tutaj po prostu o zapisanie sobie, że wystąpił...
Próba zalogowania bl0937 za pomocą lfs prawdopodobnie nie działa, ponieważ wszystkie wywołania lfs wyłączają przerwania. A odczyt/zapis flash nie jest najszybszą rzeczą. Podejrzewam, że inne problemy są również z tego powodu, ten nowy sdk może częściej wyłączać przerwania z jakiegoś powodu
b. obsługa przerwania wykonuje się z ustawioną flagą globalnej obsługi przerwań "I" !!! Prawidłowo, po to jest priorytetowy system przerwań. To nie mega8 :) Co do wyłączania przerwań, to może w tym temacie znajdziesz odpowiedź?[url=http://www.elektroda.pl/r... - Post #14
Mam problem z tym, że nie potrafię wykonać tego samego dla kolejnego przekaźnika tak aby działał on niezależnie od stanu pracy poprzedniego. Chciałbym aby dało się sterować 3 przekaźnikami jednocześnie (tak abym mógł uruchomić kolejny przekaźnik, kiedy pierwszy ma jeszcze stan wysoki). Z kodu programy wynika, że na razie masz zdefiniowany tylko jeden...
Możesz jeszcze spróbować na czas transmisji po I2C wyłączać przerwania jeżeli z nich korzystasz ( nie wiem czy to jest listing całego programu ) , ale przerwania włączasz na początku , żeby się nie okazało że ci się w trakcie transmisji jakieś zgłasza i robi kaszanę.
W zasadzie tak. UDR to jest dosyć szczególny rejestr, bo jakikolwiek jego odczyt sygnalizuje procesorowi odebranie znaku z USART-a i wtedy automatycznie dzieje się kilka rzeczy, m. innymi gaszona flaga RXC, załadowanie do UDR następnego przyjętego znaku, jeśli zdążył się pojawić (jest to możliwe, bo AVR-ki mają 3-bajtowy bufor sprzętowy, który jest...
jak to nie ingerujesz w stos panie kolego??? przecież wiesz, że rcall ingeruje w stos? prawda? tu się zgadzasz? ..... ale nie wiesz właśnie chyba tego że samo wywołanie przerwania to tak jakbyś zrobił rcall do jego obsługi - tyle tylko że ten rcall za ciebie robi sam procek i on tak jak w przypadku rcall odkłada na stos adres powrotu z obsługi przerwania...
kalkulator przerwań wykonywanie przerwań kontroler przerwań
volvo silnika elektroniczny zawór rozprężny prestige instrukcja
podlaczenie agregatu naprawianie staroci
Zablokowany kluczyk w drzwiach VW Sharan 1.9 TDI 2005 - jak odblokować? Schemat baterii do wkrętarki Bawaria - szczegóły i wskazówki