Musisz wykorzystać jakaś pomocniczą flagę (zmienną). Wciśnięcie przycisku zmienia stan flagi na przeciwny. To jak zachowuje się wyjście układu zależy od stanu flagi.
Funkcja czekająca na odpowiedz powinna być odporna na brak jakiekolwiek odpowiedzi. W przypadku braku odpowiedzi z modemu Twój kod się "zapetli". Jak wygląda kod usr0_getc()? Nie widzę związku między ISR a tą funkcją. Zakładam również, ze flagi (flagGotLine i pozostałe) zadeklarowales jako volatile. Postaraj się zaimplementować pkt. 4 z mojej poprzedniej...
Jak to zrobić: 1. włączasz przerwanie od timera w NVIC 2. Konfigurujesz timer, żeby generował jakieśtam przerwanie Odpowiedzi na pytania: 1. No bez timera raczej nie zrobisz przerwań co jakiś czas [; 2. Funkcja przerwania po prostu musi nazywać się DOKŁADNIE TAK SAMO jak jest wpisana w tablicy przerwań (zwykle CośtamCośtam_IRQHandler() ) 3. Hę? Przykłady...
Po odczytaniu liczb z pliku wrzuć taką linijkę: file.clear(); kiedyś się spotkałem z takim czymś, ta funkcja czyści flagi, które się poustawiały przy poprzednim korzystaniu z tej zmiennej.
Myślałem o tym problemie z temperaturą i założyłem, że najprostszym sposobem na poradzenie sobie z tym bez zmian bazy kodu byłoby wykonanie addChangeHandler z poleceniem publishingFloat i pomnożenie tam wartości przez 0,1 przed opublikowaniem. Innym rozwiązaniem byłoby dodanie ogólnego mnożnika przed publikacją dla kanałów. Mimo to, proszę, zrób pull...
Raczej w ogóle powinieneś zmienić sposób w jaki to realizujesz. Generalnie naciśnięcie przycisku powinno zmieniać jakąś flagę, po funkcji testowania przycisków powinieneś wywoływać w zależności od tej flagi funkcję zmieniania stanu portu wg życzenia.
(at)lazor Dlaczego patrzysz przez pryzmat architektury, którą znasz, a nie odnosisz się do artykułu? Wszystkie 3 części dotyczą prostych struktur 8-bitowych jakie były na rynku 10-20 lat temu, gdzie jedynym efektem przejścia do obsługi przerwania jest załadowanie licznika rozkazów adresem ISR i ustawienie flagi obsługi przerwania. A jeśli robisz w userlandzie...
Wygląda na to, że przypadkowo zachowałem przycisk podczas debugowania. Zauważyłem, że inne wtyczki w pliku nie mają ustawionych flag funkcji, więc zaktualizowałem JSON w oparciu o commit, który pokazałeś. Oto aktualizacja: { "vendor": "Prosto", "bDetailed": "0", "name": "16A 3680W Smart Plug with Energy Monitoring (EU)", "model": "WFU-08PM", "chip":...
kumam, dlatego jestem za systemem flag. funkcje wysyłające po uart zawierają w sobie sprawdzanie czy można wysłać więc nic nowego nie musze dodawać. Ale skoro i sposób flagowy Ci się nie podoba to jaki jest lepszy?
z tego co pamiętam to piszesz "%#4x", tutaj masz opis: http://www.cplusplus.com/reference/cstdi... Czasami zdarza się że nie chcemy wykorzystywać printfa wbudowanego (jest bardzo kosztowny rozmiarowo z obsługą wszystkich flag). Wtedy warto napisać własną funkcję, a jest ona banalnie prosta.
NVIC_ClearPendingIRQ(USB_IRQn) nic nie da w tym przypadku. Należy wykasować flagi w rejestrze USB interrupt status register (USB_ISTR) , ale jeśli to zrobisz samodzielnie funkcja HAL_PCD_IRQHandler(&hpcd_USB_FS) może już nie działać właściwie ponieważ w zależności od stanu tych flag są podejmowane odpowiednie działania. Jak wskazuje sama nazwa tej...
Ale co ma do tego prędkość SPI skoro na funkcji bibliotecznej wszystko jest ok przy tej samej prędkości? Ale jak już będę w domu to to sprawdzę ;) EDIT: zmniejszyłem prędkość SPI 16x i dalej jest to samo. Już mam tego dość :( Próbowałem już na różne sposoby zapisać sprawdzanie tej flagi i dalej działa tylko funkcja biblioteczna...
Timer + przerwania + funkcja obsługi przerwania ISR(), a nie sprawdzanie jego flagi. Zobacz przykład: http://mikrokontrolery.blogspot.com/2011... A ode mnie w prezencie 25pkt, bo masz zero, ale używasz języka C :)
Testy przeprowadziłem na inteligentnym wyłączniku BK7231T z modułem WB3S. Po sformatowaniu LFS i ponownym uruchomieniu systemu nie działają żadne sterowniki, ponieważ włączam je poprzez plik autoexec.bat. Wyłączone są także wszystkie flagi z wyjątkiem flagi 46, która jest włączona dla normalnej pracy urządzenia. Na potrzeby testu spróbuj wyłączyć wszystkie...
Tak, Freddie Chopin ma rację, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIO... oraz configMAX_SYSCALL_INTERRUPT_PRIORITY powinny być spójne, ponieważ odnoszą się do tego samego lecz różnią się przesunięciem bitowym w celu stosowania tych flag w funkcjach bibliotecznych lub bezpośrednio w rejestrach.
A prosto - dodasz flagę informującą co aktualnie jest wyświetlane - na podstawie tej flagi funkcja obsługi przerwania wyświetlania LED pobierze sobie dane z odpowiedniego bufora. Zresztą w darmowych przykładach do książki z linku poniżej masz gotowe wyświetlanie LED multipleksowane, dodasz tylko flagę i już masz naprzemienne wyświetlanie daty i temperatury....
Przepraszam ale nie rozumiem jak mam to wykonać. Za pomocą jakiej funkcji mam sprawdzać czy oczekuje jakiś znak? Przeglądałem Pana książkę i zastanawiałem się czy można "wkręcić" w to wszystko UART na przerwaniach ("czyszczenie" flagi w funkcji realizującej odbiór znaku). Zastanawiam się tylko czy jest możliwe (przepraszam jeśli zadaje idiotyczne pytania...
Zapytaj bota Bardzo proszę. Inicjalizacja timera : Funkcja timerBegin(frequency) tworzy i uruchamia timer z określoną częstotliwością. W tym przypadku ustawiamy częstotliwość na 500 Hz, co odpowiada okresowi 2 ms. 2. Przypisanie funkcji obsługi przerwania : Za pomocą timerAttachInterrupt(timer, &onTimer) przypisujemy funkcję onTimer jako obsługę...
Witam, W dokumentacji do sterownika Easy 800 (zakładam że taki masz) są dostępne funkcję arytmetyczne. Więc wystarczy zapisać wartość do rejestru, ustawić flagę że tarowanie skończone i na podstawie tej flagi korzystając z funkcji arytmetycznych wykonywać ważenie. Pozdrawiam,
Przed odebraniem czegokolwiek masz poczekać na ustawienie się flagi RXNE. Funkcją tą oczywiście nie możesz odebrać nic poza jednym BAJTEM, bo niby czemu chciałbyś to zrobić? Zupełnie wystarczy, żeby odbierała jeden bajt, byle poprawnie, bo obecnie tak nie jest. 4\/3!!
Flaga =0; powinno być przed funkcjami. po funkcjach od razu sprawdź stan flagi. Jeśli ustawiona oznacza to ze za długo wykonywane są funkcje,
Niestety w uP STM32L151C8T6 i podobnych w tej rodzinie nie ma takiego bitu jak FRXTH. Jutro zobaczę jak wygląda wysyłanie jednego bajtu za pomocą DMA edit: Wysyłając np 5 kolejnych elementów z przykładowej tablicy za pomocą mechanizmu dma, przerwa pomiędzy kolejnymi bajtami w czasie transmisji wynosi 500 ns. Jednak dalej nie wpadłem na pomysł, jak to...
Kompilator języka C (zakładając poprawną konfigurację projektu/make'a) nawet jakbyś wrzucił milion niepotrzebnych plików, to wyrzuci z nich funkcje, których nie używasz (tak zwany martwy kod). Nie będą więc one w kodzie wynikowym No tak, ale np. gcc zrobi tak tylko gdy wywołasz go z flagami -ffunction-sections i -fdata-sections. A jeszcze potem trzeba...
static EEMEM int16_t t_value[4][2]={... Powinno być raczej: int16_t t_value[4][2] EEMEM = {... value=eeprom_read_word((int16_t*... Spróbuj tak: value=(int16_t)eeprom_read_word&... uint16_t*)&t_value[flag][... Funkcja...
Panowie, a ja mam takie pytanie, bo mało na ESP robiłem, ale mam ESP-WROOM-32 i chciałem użyć na tym przetwornik ADC, ale w sposób nie blokujący. Z tego co kiedyś szukałem, w starej wersji środowiska Arduino były funkcje umożliwiające testowanie flagi, czy przetwornik już skończył, ale potem te funkcje zniknęły i przestało się kompilować. Próbowałem...
A masz gdzieś przerwanie od SPI w kodzie, że chcesz je włączać? Bo ja nie widzę. Ale widzę, że funkcja SPI_WriteByte() opiera się o zwyczajne sprawdzanie flagi końca transmisji, a nie o przerwania.
Brutus_gsm : Radził bym Ci przeprojektować trochę ten kod: ustawianie flagi I (sei()) w przerwaniu jest największym błędem (chyba, że wiesz co robisz oraz to kontrolujesz). Przed wyjściem z funkcji przerwania ustawiasz flagę I (jeśli przyjdą kolejne przerwania, pojawią się kolejne wywołania i przepełni się stos - błąd), po czym usypiasz procesor (zakładając...
Oj pomieszałeś :) Dwie możliwości: Pierwsza wersja (opisałem wyżej): 1. wyłącz Free Running 2. zostaw przerwanie ADC, 3. przed pętlą główną w main() wywołaj pierwszą konwersję, 4. w przerwaniu ADC wykonuj to, co aktualnie wykonujesz w przerwaniu + wystartuj kolejną konwersję. Druga wersja zaproponowana przez BlueDraco: 1. wyłącz Free Running 2. zostaw...
do dziś pisząc w c++ mam w głowie słowa profesora - wykładowcy który odradzał stosowanie goto i jakoś zawsze tak jest ze spokojnie można napisać program posługując się flagami i funkcjami. Jeżeli nie chcesz duzo mieszac spróbuj przenieś fragment kodu wywołania przerwania na koniec tego co napisałeś a etykietkę H wynieś przed funkcję while (1)
cpsid i cpsie to są (chyba) odpowiedniki __disable_irq() i __enable_irq(). W sumie w tych funkcjach jest tylko po jednej instrukcji asma, odpowiednio cpsie i cpsid. Reszta kodu o który pytasz: I jeśli chodzi o samą obsługę czujnika to w przerwaniu zewnętrznym z czujnika mam ustawiać jakąś flagę, a w pętli głównej po spełnieniu tej flagi wywoływać Twoją...
Kondensatory przy rezonatorze należy podłączyć do GND a nie do Vcc. Oj, ale babol - przegapiłem go :) Dodam jeszcze, że to nadawanie 2 razy jest efektem drgań styków (jak się ich pozbyć podałem Ci link w poprzednim poście). Twoje przerwania długo trwają. Gdy styk drga, to wywoła pierwsze przerwanie, a po rozpoczęciu jego obsługi zerowana jest flaga...
No wiem jak działa search podcza szukania id. Ale tutaj nie rozumiem co oznacza odpowie układ. chodzi mi tylko jakie komendy wysylac po wyslania 0xEC zeby sprawdzic stan flagi No to może powiem inaczej. Funkcji ALARM SEARCH, należy użyć w identyczny sposób, jak SEARCH ROM. Skoro wiesz jak działa SEARCH ROM, to wiesz jak działa SEARCH ALARM. Różnica...
Dla mnie zmienia. Nie zmienia. Semantyka kodu pozostaje identyczna. Piszesz o optymalizacjach, tym się zajmuje optymalizator. Jeśli jest sprytny, to być może użyje zmiennych ze stosu funkcji wywołującej, a jeśli się nie da, to i tak zaalokuje nowe zmienne na stosie. Ty nie masz nad tym bezpośredniej kontroli, możesz co najwyżej kombinować z flagami...
Racja, zmieniłem na więcej, pytam czy jest dobrze, bo może ktoś mądrzejszy ode mnie zna lepszy sposób:) Mam jeszcze pytanko, może Ty Freddie odpowiesz. Jeśli używam przerwania przykładowo od Tim2, to sensowne jest wywoływanie jakiejś "większej" funkcji w samym handlerze przerwania, czy lepiej użyć jakąś flagę i w funkcji głównej za pomocą odpytywania...
Myślę, że istnieje mała ukryta funkcja, w której można użyć tej flagi, aby skrócić czas debounce: int debounceMS; if (CFG_HasFlag(OBK_FLAG_BTN_INSTAN... { debounceMS = 100; } else { debounceMS = 250; } .
Napisz to porządnie na przerwaniach , ale nie poprzez sprawdzanie flagi przerwania tylko przez funkcje ISR() i gdy będą kłopoty to wklej cały kod.
Kasowanie flagi z & nie podoba mi się bardzo (TXE się nie kasuje bitem tylko zapisem do DR może zbyt blisko końca obsługi to robisz) . Gdzie funkcja wysyłania?
(at)majsterxxl bardzo się cieszę. Mamy zatem jedną dodatkową funkcje - pilota - z głowy. Co do obsługi to właśnie ze względu na planowane dołożenie klawiatury przyciskowej do konwersji już istniejących tunerów FM "poubierałem" poszczególne rzeczy w funkcje jak volumeUp() czy bankMenuDisplay(). Myślę, że czy to zrobisz na flagach czy na funkcjach to...
(at)Freddie Chopin: Flaga jest ustawiana wewnątrz funkcji 'przerwaniePoBicie()' i 'przerwaniePoBajcie()'. Problem w tym, że cli(); wewnątrz obsługi przerwania jest niepotrzebne, bo ta flaga zeruje się automatycznie na czas obsługi. Poza tym nie będzie efektu tej instrukcji, bo po powrocie z obsługi przerwania flaga I zostanie i tak automatycznie ustawiona....
Witam! Czy sprintf wywołuje Twoją funkcję _sbrk? Może wstaw do niej jakieś flagi, że sprawdzić co zwraca funkcja. A może problem jest w alokacji pamięci. Zobacz czy działa Ci funkcja malloc. Też miałem problemy ze sprintf. Pozdrawiam Wojt
main() { /inicjacja flag = 0; sp= ram_end main_funck() } main_funck() { do { if(flag = 0) { //a } b c flag = 0; while(); } int() { set flag //c sp = ram_end main_func(); } pisane na szybko. Pomiędzy instrukcjami a - b musisz znajdować się na poziomie...
Użyć przerwań zagnieżdżonych, albo użyć w przerwaniu flag, a nie wywoływania funkcji wewnątrz przerwania. Druga opcja jest najlepsza. 4\/3!!
Nie można wystawić bitu na wejście i wyjście, możesz tylko odczytać stan. Jak chcesz sterować z poziomu panelu użyj flag. Łączysz równolegle z wejściem przez blok OR jeżeli również korzystasz z wejścia do obsługi tej samej funkcji. Pamięta o zasadzie że flaga do sterowania ni może mieć podłączonego wejścia tylko wyjście. http://obrazki.elektroda.pl/1836037800_1...
Czy jest możliwość monitorowania jakiejś flagi która pozwoliła by na zrzut danych zanim nastąpi soft reset ? W ESP32 jest funkcja esp_register_shutdown_handler (), dzięki której można "podpiąć" własną funkcję, która wykona się przed soft restartem układu. [url=https://docs.espressif.com/projects...
Zaimplementowałem flagę wyłączającą nową funkcję: https://obrazki.elektroda.pl/6871672800_... (at)pkaczmarek2: Mam nadzieję, że nie popełniłem błędu co do flag. Przy okazji poprawiłem drobny "błąd" w kodzie (za każdym razem, gdy zapisywałeś stronę WiFi z włączonym hasłem, pojawiał się komunikat "Hasło sieciowe zostało zmienione.", niezależnie...
Chcę zrobić rejestrator danych z czujników, na arduino, który miałby być włączony 24/7, przy czym odmierzanie czasu w różnych celach, oparte byłoby na funkcji millis(). Przy czym funkcja ta przepełniłaby się w 48 dniu, przez co mogłyby wystąpić różne problemy w programie. Zamiast im zapobiegać, mam pomysł, aby układ sam się restartował przykładowo w...
Znalazłem ten sam problem i zgłosiłem go tutaj: https://www.elektroda.com/rtvforum/topic... Jednak u mnie dzieje się to po wydaniu polecenia flags 0 (aby wyczyścić wszystkie flagi) Jeśli usunę je ręcznie, zapiszę i uruchomię ponownie, nie zostaną cofnięte. Używane oprogramowanie sprzętowe to 1.17.432 O numerze na stronie z flagami - również...
Tak jak pisałem, obsługa przerwania ze względu na uwarunkowania kompilatora jest piekielnie długa i naprawdę na tym nic nie zyskujesz. Zobacz jak wygląda wygenerowany kod asemblerowy nawet dla prostej funkcji. Piszesz o sprawdzeniu stanu klawisza co chwile, a czym to się różni od sprawdzania co chwilę flagi, którą zmienisz w przerwaniu? Chyba, że masz...
Myślę, że jedynym sposobem jest odbieranie danych z USARTa za pomocą przerwań. W programie należałoby ustawić jakieś opóźnienie i sprawdzać cyklicznie, czy nadszedł nowy znak. Jeśli w określonym czasie (zależnym od częstotliwości "powtarzania" klawiatury) nie nadejdzie nowy znak to diodę wyłączyć, jeśli nadejdzie i jest to 'w' to zapalić. Więc w funkcji...
Znalazłem rozwiązanie- tzw. DOS busy flag, nieudokumentowana funkcja 31 przerwania 21. push es mov ax,$3400 int $21 mov word (dos_busy), bx mov word (dos_busy+2), es pop es W procedurze obsługi przerwania tylko odczytuję bajt spod adresu dos_busy - jeżeli jest 0, to operacje I/O są dozwolone, DOS nie znajduje się wewnątrz obsługi innego...
Oczywiście, że funkcji takiej nie ma, bo jest to makro. Musisz otworzyć edytor makr w excelu (Visual Basic) i tam w moim przykładzie znajdziesz funkcję. Ogólnie możesz w edytorze Visual Basic dodać do Twojego arkusza nowy moduł i wkleić w nim definicję funkcji: [syntax=vb]Function NDay(exclude As Range, prev As Date) As Date Dim flag As Boolean Dim...
cześć :) też posiadam ten wyświetlacz i sprawdziłem Twój kod. Generalnie działa wszystko oprócz funkcji czytania pamięci wyświetlacza przez co nie wyświetla napisów tak jak powinien :) brakuje jeszcze funkcji sprawdzania flagi busy, z którą się od wczoraj męczę ;d
Jado_one, wychodziłoby na to, że faktycznie czegoś nie robię bo wstawiając obydwa kawałki kodu przykład działa. Naprawde nie wiem co mógłbym opuścić bo starałem sie robić wszystko nawet w tej samej kolejności, czyściłem najpierw OSPEEDR itp. Próbowałem nawet wstawiac opóźnienia czasowe i nic.. Próbowałem podmieniać inne fragmenty kodu na swoje i sypało...
Dziękuję za ciężką pracę. urządzenie działa dobrze, niektóre punkty danych nie są wyświetlane poprawnie w HA. jakie są prawidłowe flagi do ustawienia? i czy nie ma takiej funkcji jak backlog startDriver BL0937 dla tego urządzenia. i jeszcze jedno pytanie, jak skonfigurować automatyczne aktualizacje oprogramowania układowego dla urządzeń.
Najpierw musisz włączyć flagę dla tej funkcji.
To zapewne nie przechodzi przez kompilację: Pułapka 1: Zerowanie bitu przez wpisanie jedynki Czyli zamiast zgasić flagę ustawiłeś ją ponownie :) Inna sprawa że robisz to niepotrzebnie, ponieważ flaga ta jest gaszona sprzętowo zaraz po wejściu do funkcji obsługi przerwania: Bit 6 – INTF0: External Interrupt Flag 0 ... The flag is cleared when the...
rdzeń który to oblicza po prostu ustawiał flagę że obliczenia skończone i drugi rdzeń może wtedy użyć tablicy do generowania grafiki oraz wysyłki bufora. A czym wtedy ten pierwszy rdzeń zajmuje tzn. podczas gdy drugi renderuje i wysyła? ;) Zamiast ustawiania flagi, lepiej jest chyba użyć funkcji rp2040.fifo.push() oraz rp2040.fifo.pop() - albo ich...
Rozwijając to co pisał snnaap o nadpisywaniu, dla pewności lepiej wszystkie wartości maskować/warunkować, wtedy nie ma żadnych nieprzyjemności, jeśli zapomni się o dozwolonych wartościach. Dodatkowo, coś mi nie pasuje przy wysyłaniu danych po SPI. Zakładając, że funkcja wysyła bajt, to w pierwszej linii wysyłasz młodszy bajt słowa, a za drugim razem...
Myślę, że musiałoby to być włączone za pomocą flagi, a nie tak, jak jest obecnie. I może dodać kolejną funkcję hal, która łączy się przez zapisany bssid.
Aaa, już rozumiem. W poprzednim wątku źle zrozumiałem obsługę flag. Myślałem, że w przerwaniu ma być wywołanie funkcji i pod koniec funkcji ustawienie flagi na wyświetlacz. Przez to miałem problem z obsługą tego. Teraz już wiem... Wstawię flagę w przerwanie, tak jak dobrze radzisz. Co do funkcji get_temp - oczywiście odczyt temperatury będzie docelowo...
Myślę, że zostałem źle zrozumiany w kwestii IU - mi również się podoba i nie chcę go ogólnie zmieniać, tylko dotknąć go i usunąć na przykład niektóre starsze rzeczy i dostarczyć tam nowych informacji. Mój pomysł zrodził się z tasmota i tego, jak obsługuje wewnętrzną temperaturę chipa - za pomocą "flagi"/komendy setoption146. Może można to zrobić w OBK...
Ale zdaje się chodzi o to że jeśli masz podłączoną linię R/W do uC to pewnie przeprowadzasz inicjalizację(czy jakąkolwiek operację na LCD) z odczytem flagi zajętości LCD. Nie wczytywałem się jak to wygląda bo używam biblioteki bez odczytu tej flagi ale prawdopodobnie każda funkcja odczytuje flagę zajętości na lcd aby przyspieszyć jego działanie(pominięcie...
wiem że to dwie rózne funkcje ;) to taka bardziej literówka była ;p nawet po zmianie tej flagi na 02 i zamiast tej stworzonej funkcji używam _delay_ms(1); _delay_us(1); i dalej mam te same warningi
Myślałem o wstawieniu przerwania od timera który będzie mi zwiększał pewien wskaźnik o +1 -zostanie wykorzystywany w wielu funkcjach I to jest właśnie dobre wykorzystanie timera i przerwania. W przerwaniu od timera można zwiększać albo zmieniać kilka flag- nie wskaźników- chociaż wskaźniki też. A w głównej pętli sprawdzać te flagi i w zależności od...
Stale to jest- ale ostatnio jakby więcej. "Napisałem program- działał. Dodałem odczyt z czujnika- przestał". Może postaram się opisać elementarne zasady korzystania z przerwań od Timera aby uzyskać możliwość obsługi więcej niż jednego zadania. Mamy program który wykonuje się liniowo- instrukcja po instrukcji. START deklaracje funkcji. definiowanie konfiguracji...
Czy Ty w ogóle przewidujesz obroty w 2 strony? Bo może mógłbyś badać tylko jeden kanał :) Najprostsza wersja jednokierunkowa, to w przerwaniu po osiągnięciu 500 ustawić flagę i przekaźnik i w przerwaniu jeśli flaga i więcej jak 50 wyłączyć przekaźnik, skasować flagę. W sumie to można nawet testować stan przekaźnika zamiast flagi, ale dostęp do portu...
Dlaczego definicje wszystkich funkcji masz w funkcji main? Powinny być przed nią. Raczej nie wykorzystujesz linii Busy/Ready wyświetlacza a cały czas pchasz w niego informacje. Czyścisz go tylko raz. Uzależnij wyświetlanie od jakiejś flagi ustawianej w timerze 2 (np co 0,5s) i wtedy czyść wyświetlacz i wyświetlaj dane. Pewnie dlatego działa Ci z delayem...
Najprościej to chyba tak: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #define TIMERSTART 6 volatile uint8_t FLAGA_50 = 0; volatile uint8_t FLAGA_1000 = 0; // funkcja obslugi przerwania TIMER0_OVF 8MHz / 64 * 250 wychodzi co 2ms // dla innego taktowania nalezy ustawic inny preskaler i/lub inne liczniki stawiania flag ISR(TIMER0_OVF_vect)...
Poza brakiem volatile nie bardzo rozumiem sens kasowania flagi cron_chk poza warunkiem? Jeśli cron_chk się ustawi akurat wtedy gdy będzie procesor wykonywał inną funkcję niż ten warunek to skasujesz ją i nie wyśle ci nic na RSa. I jeszcze jedno - jaka jest pewność że terminal ci nie wprowadza opóźnień i błędów czasowych ? Zamiast takiego testu co 1...
A teraz pytanie - wiesz co to buforowanie strumieni? Jeśli nie wiesz, to proponuję wywołać PO Twoim fprintf() do wyświetlacza funkcje fflush(). I teraz pytanie - czy gdzieś jest kompletna lista funkcji które nie są zaimplementowane w Bare Metal ? Wszystkie są zaimplementowane. Uwierz mi że to wszystko działa tak jak trzeba - używam osobiście do obsługi...
Nie musi to być stricte funkcja przerwania tylko sprawdzanie flagi przerwania w pętli, która zapisuje wyniki. Po wykryciu przerwania INT od przycisku niech od razu zablokuje to przerwanie i zgasi jego flagę.
Hmmm... ale jeśli poprawa wydajności ma polegać na cyklicznym wysyłaniu jednego znaku z bufora, np raz na 1ms korzystając z timera programowego lub sprzętowego, to i tak linia RW nie jest potrzebna. Po wysłaniu każdego znaku, funkcja obsługi wyświetlacz by się kończyła, a w tym czasie procek robiłby coś innego. Można założyć, że w ciągu tego czasu...
Zastanówcie się Koledzy, co się będzie działo, kiedy wrzucicie do UDR ostatni bajt do nadania. Kto i kiedy skasuje zgłoszenie przerwania TXD po wysłaniu tego bajtu? W obsłudze przerwania to nie nastąpi, więc przerwanie pozostanie zgłoszone i będzie obsługiwane na okrągło - patrz granica stron 137/138 aktualnej wersji (aa) doc2486.pdf Flaga przerwania...
Skoro opanowałeś obsługę timera, to zrób jeszcze całą obsługę LED w przerwaniu timera. W pętli głównej się multipleksowania LED nie robi, bo ciężko w to wpleść jakikolwiek inny kod. Jaki wtedy jest sens podziały projektu na pliki *.h i *.c skoro część pliku "7led.c" będę miał w pliku związanym z Timer0 ? Chyba, że coś źle zrozumiałem. Źle do tego podchodzisz....
Ok. Może nie do końca wyjaśniłem tak jak trzeba. Linia RW odpowiada za kierunek przesyłu danych do/z lcd. Z reguły dane są tylko zapisywane do lcd (RW do masy). Odczyt (RW do 5V) wykorzystywany jest przeważnie podczas odczytu "busy flag" - jednak w większości funkcji, z którymi się spotkałem nie jest to obsługiwane.
Tablicami NVIC się nie przejmuj. Korzystaj z funkcji dostarczonych przez CMSIS, w tym przypadku nie warto stosować rejestrów wprost. Konfiguracja Timera OK, choć kolejność nie należy do poprawnych. Przyjrzyj się jeszcze rejestrowi EGR. Przerwanie? Brak kasowania flagi skutkuje ciągłym jego wywoływaniem. Flagę kasuje się na początku przerwania. I taka...
Funkcja nazywa się label. Rysujesz kawałek połączenia (net) i przyczepiasz do niego etykietę (label). W miejscu docelowym robisz to samo, nadając taką samą nazwę.
To zadziała Jutro rano sprawdzę na sprzęcie. Czekać, ale na co... ? Na konwersję Hmm.. no ok. Zatem Jaką mam pewność, że w przerwaniu od Timera nie będę czekał na tę konwersję? Nie mogę blokować "czasowo" funkcji przerwania od Timera... ja nie gotowa to ja olewasz i sprawdzasz w następnym przerwaniu. Ale oczywiście nie chodzi tu o ustawinie jakiejs...
Moge pomóc, tym bardziej,że mieszkam blisko Warszawy. Generalnie sterowanie w takich prostych wtryskarkach jest bardzo proste. Np w serii WH30/WH80 każda funkcja ma swój przekaźnik, załączany przyciskiem ręcznym, lub kombinacją styków z innych przekaźników ( przy automacie) i drugi przekaźnik, pełniący funkcje tzw. flagi czy tez znacznika,że w danym...
Po pierwsze to powinieneś najpierw zadbać o TL0 bowiem to on "ucierpi" w pierwszej kolejności pod wpływem impulsów z licznika. Korekty dokonujesz dodając niezerową zdefiniowaną stałą do obecnej wartości młodszego bajtu licznika. TL0=TL0 | 0x30; TH0=0xF8; W asemblerze będzie to: ORL TL0,#30h MOV TH0,#0F8h Można także dokonać dodawania jak zaproponował...
Nie potrzebujesz żadnych dodatkowych programów, wszystko co potrzebne już masz. Proponuje zapoznać się z ich możliwościami i nauczyć się je obsługiwać. Do S7-200 MicroWin w zupełności wystarczy, ma wszystkie potrzebne Ci funkcję(podgląd flag, pamięci, przebiegi czasowe sygnałów). Pomocna w nauce tego sterownika jest książka "Programowanie w Step7 MicroWIN"...
Wykorzystujesz bity z pamięci np: M0.4, M0.5, M1.0, M1.5 jak i słowa MW0, MW2, MW4. Czy sobie nie nadpisujesz czasem w słowie MW0 wartości? Może tak to ma być? Ja bym liczniki zapisywał tak jak robisz a zrobił jeden bajt pomocniczy i wysterowywał flagi którymi wysterowuję pozostałe funkcje.
Wszystko się to wzięło z faktu iż bazuje na przykładzie który nie jest kompletny. To są moje pierwsze kroki w ARM'e i dlatego pewnie zamieszałem tak z tym przerwaniem. Mimo poprawy to nie to (zerowanie flagi a potem realizacja funkcji). Czekam na dalsze wskazówki. Dziwne że jak połączę się poprzez Herculesa to łączy się za każdym razem, natomiast jak...
Jeśli nie chcesz flag to stwórz kolejny blok if. Nie wiem dlaczego flagi nie są ok, skoro nawet gdyby się dało wywołać przerwanie w sposób jaki chcesz, to byłoby to nic innego jak ustawienie flagi, tyle, że w rejestrze IO. Ale jeśli to ci się nie podoba, to w gcc jest jeszcze jedna możliwość (rozszerzenie standardu) - po opuszczeniu danego bloku/zniszczeniu...
witam w urządzeniu MINOLTA 224e mam problem,świeci komunikat o potrzebie wymiany tonera, toner nowy pełny. Zauważyłem że sekcja TONER HOPPER pełna po brzegi a toner nie idzie na dół do wywoływaczki. Oczyściłem TONER HOPPER ale to nie pomogło, kręci ale nie dodaje tonera, cały czas komunikat o braku tonera,Zauważyłem czujnik pod toner hopper-em od spodu...
https://obrazki.elektroda.pl/2712564700_... Tak ogólnie to.... Sterowanie pracą silnika lewo prawo dwa czujniki indukcyjne zatrzymujące dwa timery i stop z urządzenia zawnettznego. Na PW mam już jeden kontakt i Zobaczyny. Podaj link na te przykłady. TEŻ mam sporo razem z zakupionym programem ale im się jeszcze nie przyglądałem. Sporo...
Generalnie posługujesz się flagami przerwań w sposób, który utrudnia pisanie kodu. Zamiast sprawdzać w pętli głównej flagi przerwań, po prostu definiuj funkcje obsługi przerwań, a w nich ewentualnie (jeżeli musisz) ustawiaj flagi w zmiennych globalnych i je sprawdzaj w pętli głównej. Dotyczy to zarówno Timera jak i ADC. Dodatkowo nie będziesz sobie...
Pomogło dziękuję. Jakbyś mi wytłumaczył dlaczego bez wymuszenia UG wchodziło w przerwanie pomimo czyszczenia flag to byłbym w siódmym niebie? piotrek0207 -> zwykła prosta funkcja, bez niej było to samo.
O ile dorze rozumiem idee tego przerwania (nie miałem okazji wykorzystać go w praktyce) to określona zmiana na którymkolwiek pinie z grupy wywołuje przerwanie... i teraz myślałem, żeby za pomocą prostych warunków zliczać, który wywołał i ile w danym czasie. Problem widzę w momencie, gdy przykładowo czujnik A wywoła przerwanie w bardzo krótkim czasie...
Nie wnikając w resztę kodu - w przerwaniu ustawiaj flagę (w zmiennej) na podstawie której zostanie wykonana procedura w funkcji, a na koniec, następuje zmiana flagi na przeciwną. Zatem w przerwaniu nie wykonujesz obsługi serial'a, ustawiasz tylko wartość zmiennej. [syntax=c] #define LED_R 10 #define LED_G 11 #define LED_B 12 #define ENKODER 2 int impulses;...
(at)divadiow (at)dedamraz chcesz rzucić okiem? Moją pierwszą sugestią byłoby umieszczenie kodu w instrukcji warunkowej, która sprawdza nieudane uruchomienie. W ten sposób możesz upewnić się, że nie uszkodzisz urządzeń, nawet jeśli Twój kod zawiera błąd... Co więcej... hmmm widzę, że stworzyłeś funkcję umieszczania informacji o WiFi na stronie głównej...
Ok, dzięki. Faktem jest że w moim pojęciu jest to dziwne ograniczenie kompilatora, no bo zmiennoprzecinkowy wynik dzielenia liczb całkowitych to chyba dość częsta i normalna sytuacja. Czy takie rzutowanie pochłania mniej pamięci niż deklaracja wszystkiego float? Czy to samo? Mam już całkiem sporo zrobione. Nie wiedziałem że tak szybko pisze się w C....
Zajrzałem do starych kodów i mam właśnie zrobione to co na tej ruskiej stronie: Po pierwsze w kodzie wygenerowanym przez HAL w funkcji HAL_I2C_MspInit() przeniesienie __HAL_RCC_I2C1_CLK_ENABLE(); na początek. Po drugie zastosowanie procedury obejścia z erraty. W sumie jako tako to działało Na podstawie tego: https://electronics.stackexchange.com/qu...
Cześć p.kaczmarek2! Fragment kodu, którego użyłem do zapisania zmiennej generującej, służy celom programistycznym. Użyję Twojego kodu, gdy już skończysz. Na razie po prostu upewniłem się, że użyto właściwych pozycji pamięci, więc jest on wstecznie kompatybilny z ostatecznym kodem. Mogę potrzebować pomocy w zsynchronizowaniu Twojego repozytorium z moim...
Witam. Wszak Cortex niezbyt popularny jest, ale może już ktoś odpalał w nim SPI. uK zachowuje się tak jakby miał "uszkodzone" flagi statusowe SPI. Funkcja SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) zwraca cały czas stan pustego bufora TX i niestety kolejne dane nakładają się na siebie (co akurat sygnalizuje flaga OVR). Podobnie jest z flagą...
Zezwolenie na obsługę przerwania też ustawiasz w rejestrze TIMSK. To które chcesz. I piszesz obsługę przerwania. I teraz tak-albo piszesz to w danym przerwaniu - jeśli jest na to czas- albo w obsłudze przerwania ustawiasz tylko flagę a obrabiasz w main(). Albo wewnątrz przerwania wywołujesz jakąś funkcję. Albo w main() wywołujesz jakąś funkcję po sprawdzeniu...
Nie mogło by być tak, że to przycisk generował by przerwanie? ... i pewnie do tego kolejny "delay" w przerwaniu od przycisku w celu eliminacji drgań styku? Nie brnij dalej w te delay'e, bo jeśli będziesz chciał dodać kolejną funkcjonalność to może okazać się to niemożliwe. Zrób sobie timer np. co 10ms i wywołuj nim przerwanie, ale uwaga: nie umieszczaj...
Jedynie nie wiem jak obsłużyć odczytywanie danych. Do tego chyba ten bufor nie jest potrzebny, tylko jak to uwzględnić w przerwaniu? Sprawa z odczytem jest nieco bardziej skomplikowana, ale to też idzie rozwiązać. Niestety nie przedstawię na forum ani gotowego kodu, ani szczegółowego algorytmu. Mogę podpowiedzieć tyle. Przykładowo, jeśli chcesz odczytać...
Wbrew powszechnej opinii, funkcje obsługujące transfer po SPI mogą być dedykowane do nadawania i odbioru, szczególnie przy wysyłaniu pakietów. Przykład 1: Wysyłanie pakietu do modułu radiowego: [syntax=c]void radioBufferWrite(uint8_t reg, uint8_t nData, uint8_t* pData) { volatile uint8_t bDummy; // NCS activate RADIO_NCS_GPIO->BRR = RADIO_NCS_bm; //...
Nic się nie pojawi bo funkcje UART_Transmit/Receive są oparte na polingu flag UDRE/RXC. Jednocześnie włączone są przerwania TXC/RXC, oraz włączona globalna flaga przerwań. Jeśli dochodzi do odebrania znaku procedura obsługi przerwania natychmiast przejmuje kontrolę i gasi flagę nie dając funkcji UART_Receive wyjść z pętli. Co do tej niby "biblioteki"...
markery flagi restart flagi atmega flagi
wibracje automat łączyć cewka zapłonowy sygnalizacja braku napięcia
sprężarka śrubowa kompresory srubowe
VW LT 2.5 - Problemy z biegami po wymianie pompy i wysprzęglika VW LT 2.5 TDI AHD: Wybór sprzęgła do koła dwumasowego