Dlatego też postanowiłem usypiać scalaka kiedy tylko się da i jak najgłębiej jak w danej chwili można. Dlatego też rozwiązanie TWI na przerwaniach jest dla mnie ważniejsze niż czas jaki poświęcę na opracowanie kodu w stosunku do metody czekania w pętli na kończenie poszczególnych rozkazów TWI. Czy o to Ci chodziło? Tak o to chodziło, i tak tylko podpowiadam...
3. Napisałem obsługę I2C na przerwaniach samodzielnie Nie napisałeś obsługi I2C na przerwaniach tylko masz polling I2C w przerwaniu timera. To jest klasyczny przykład na to jak czegoś nie należy robić. Obsługa I2C w przerwaniach polega na obsłudze przerwań przychodzących z tego waśnie peryferium. i zastanów się jak połaczyć przerwania I2C z przerwaniem...
A może masz gdzieś funkcję obsługi tego przerwania? Dodano po 4 Dodam, że korzystam z programowego bufora cyklicznego, który w przerwaniach odbiera dane od UDR. Jedyne co mi przychodzi na myśl to to, że przerwanie tak szybko się wykona (odebranie danych do bufora i skasowanie flagi RXC), że część programu: while ( !(UCSRA & (1<<RXC)) ); nawet...
Idea generalnie jest prosta - jeśli po wystąpieniu przerwania będziesz chciał zrobić coś co trwa "długo", to nie robisz tego w przerwaniu, bo blokujesz tym cały program - wtedy stosujesz polling flagi programowej lub sprzętowej. Jeśli chcesz zrobić coś co trwa "krótko" lub jeśli chcesz zrobić coś co musi być zrobione "natychmiast" po wystąpieniu przerwania...
Logika użycia DMA i timerów jest błędna. Inne "splątanie" wynika z tego. Nie wiem po co EXTI jak nie używasz sprzętowego IRQ Jak nie używam przecież pisze w pierwszym poście że korzystam z przerwania od IRQ. Sformatuj kod i zapisz bez udziwnień. rady co do -CS masz powyżej. Ustaw DMA do odbioru danych - dostaniesz przerwanie po zakończeniu transmisji,...
(...) odczytu temperatury. Jaki zaproponowałbyś kod (AVR GCC), aby nie trzeba było używać delay'a (może pooling lub maszynę stanu) ? Przy okazji przedstaw optymalną (bez zmiennoprzecinkowych liczb) konwersję danych ze scratpad'a na stopnie (może być złożeniem liczb całkowitych jako stopnie i części ułamkowe). Do obsługi termometrów DS18B20 bez blokowania...
Jak zaprogramowac sterownik 8259a w trybie polling, uzywajac debuggera i pokazac jak przyjmuje przerwania IRQ& iIRQ^ z przyciskow?
Witam, Od jakiegoś czasu zmagam się z komunikacją SPI pomiędzy dwoma procesorami stm32l452re. Transmisją i odbiorem danych zajmują się oba procesory. Wysyłam 6 bajtów po 16 bitów, co daje nam sumarycznie 3 przerwania. W taskach od FreeRtosa transmisja danych i sprawdzanie otrzymanych bajtów odbywa się w nieskończonej pętli while. Problem dotyczy tego,...
Faktycznie, teraz dopiero zauważyłem, że dodałeś (a u mnie zabrakło zapamiętywanie poprzednich wartości). Dodatkowo skopałem inicjalizację zmiennych A0 i B0. Pierwsze uruchomienie (z pomocą zmiennej "init") pozwoli na poprawną inicjalizację zmiennych przechowujących "poprzednie" wartości. Dzięki temu przy starcie programu nie wygeneruje się impuls zmieniający...
1. Miałem, jedna z linii miała stan 0. SCK jeśli się nie mylę. Ale to było przy odczycie ze slave. 2. Polling najgorszy pewien moment jest krytyczny. , najlepiej na przerwania to zrobić z jakimiś timeoutami.
przycisk który Ty naciskasz "raz" może wygeneruje tylko jedno zbocze, a może 10000 (drganie styków). W jaki sposób w takim razie "sensownie" obsłużyć przyciski? Polling i softwareowy debouncing - to wiem, a jak to zrobić sensownie/porządnie?
Z opisu wynika, że masz coś nie tak w programie, niestety bez wnikliwego przejrzenia całości nie ma szans, aby ci pomóc. W pewnych sytuacjach różnice w szybkości wykonywania programu pomiędzy -O0, a -O2 mogą przekraczać 50%. Jeśli tak napisany kod migający LEDem w pętli głównej, ma różnice w czasach wykonania 11-20s, to masz powaźnie skaszaniony kod....
Poznałem już DMA o czym napisałem parę postów wyżej, w kontekście obsługi ADC. Właśnie taki sposób obsługi I2C jak w przypadku ADC via DMA byłby ideałem. Przy transmisji z ADC dzięki DMA nawet przez chwilę procesor nie jest wykorzystywany. Jedynie sprawdza co pewien czas czy dane z tablicy tych wyników mieszczą się w ustalonym przedziale. Przeoczenie...
Czołem wszystkim :) Chciałbym sobie napisać w końcu porządny sterownik do obsługi UARTa i bibliotekę do obsługi SIM800L. Wykorzystywany sprzęt: LaunchXL-TMS320F28027F. Już mam za sobą podejście do tego zestawu i po przygodach z zasilaniem SIM800L'a uzyskałem komunikację. Pierwsze podejście to jednak jakiś polling i po czasie patrząc w kod to widzę,...
OK, opaliłem HIDa kompletując to w osobnym folderze (tak że jestem pełen zachwytu dla siebie :) ) i mam kolejne pytanie. Transmisje można podtrzymywać na dwa sposoby- polling lub interrupt, czyli albo wywołuje w pętli głównej obsługę co przynajmniej 10ms albo zostawiam to przerwaniom. No i właśnie, o jakie przerwania chodzi?. Nie widziałem żeby tam...
Przerwanie do debouncingu styków to jest takie sobie. To nie jest sygnał o jasno określonej szybkości narastania zbocza. W przypadku takiego sterowania każde zakłócenie będzie odebrane jako sygnał przerwania. Na wejście przerwania powinien iść sygnał ukształtowany przez jakiś przerzutnik albo układ RC. Polling w pętli głównej albo odpytywanie co jakiś...
W RFM12 trasceivery ustawia się poprzez komendy SPI, wysyłanie następuje poprzez wybranie odpowiedniej komendy i wypełnienie bufora FIFO (również via SPI). Odbiór może następować poprzez polling (czyli mikrokontroler sterujący co jakiś czas "odpytuje" urządzenie czy odebrano dane) lub w trybie przerwania (generowane przez RFM12 w momencie wypełnienia...
Gorzej, jeśli algorytm tego nie gwarantuje - a ja właśnie takie urządzenia ostatnio głównie robię. A jaka jest różnica, czy nie nadąży na przerwaniach, czy przez DMA? ;] Jak nie nadąży, i tak któreś dane musisz zadeptać, albo przyblokować nadawce RTSem. A to może robić supervisor, którego częstotliwość odpalania jest już tylko zależna od głębokości...
czesc, mam czysto teoretyczne pytanie dot. wymiany danych miedzy 2mikrokontrolerami. Mam to wytlumaczyc podczas prezentacji,ale troche mi sie juz pomieszalo. Z tego co zrozumialam to:SPE=1,MSTR=zalezy,SPIE=1,SPIF=1, Master ustawia SS=0 i pisze w Data Register co wlacza Clock Generator(czy to znaczy SCK=1???) i bajt zostaje przeslany do Slavea. Wtedy...
Sądzę, że chodzi o konstrukcję programu w stylu: przerwania wykrywają zdarzenia i ustawiają flagi, main jest prostą pętlą (być może z uśpieniem procesora na końcu), w której są testowane flagi, a na podstawie wyników testów uruchamiane są inne procedury. Pozdrawiam, Dr.Vee
OCnX to wyjścia, nie wejścia. Skoro nie możesz odblokować timera0 (bo T0 i T1 można taktować z zewnątrz) to są opcje takie: 1. Zastosowanie przerwań INT0 i INT1 z detekcją odpowiednich zbocz i zliczanie imp. w przerwaniach 2. Polling pinów z odpowiednią częstotliwością Poza tym jaka częstotliwość impulsów?
Edit: DMA nie działało bowłączałem DMA2 a nie DMA1. Napiszę jak dalej pójdzie :] Cześć, mam pewne problemy z I2C, bazowałem na zmodyfikowanym kodzie od ST (jak mnie pamięć nie myli) najpierw używałem samych przerwań na najwyższym priorytecie jak ST przykazało, niestety od czasu do czasu zdarzało się że RTOS wyłączał wszystkie przerwania i przy odbiorze...
>>> DrDead, w szczególności chodzi tu o to że jeżeli bezkrytycznie posłuchamy rady, jak to robi Kol. asembler: 'ja stosuje taką zasada: zawsze w obsłudze przerwania na początku odblokowywuje przerwania globalne' to: 1) ryzykujemy że nastąpi blokada wykonywania przerwań o wyższym priorytecie gdyż zakłócamy naturalną kolejkę wykonywania przerwań opartą...
Pytałem na samym początku o jakim uC rozmawiamy i dostałem odpowiedź, że problem jest ogólny. A to nie jest prawda. Problematyczny jest przypadek szczególny, niedoróbka ze strony Atmel'a. 5 czy 6 cykli zegara na synchronizację? Dramat. Może mało wiem i mało widziałem, ale żaden inny uC oparty na rdzeniach Cortex-M nie ma takich cudów.. Konstrukcje oparte...
...tam nie wyobrażam Sobie takiego drivera, który został przedstawiony w nocie. Dokładnie w takiej formie jak tam przedstawiono to pewnie nie. Jednak myślę, że po drobnych przeróbkach można uzyskać efekt podobny do tego, który opisałeś. Myślę, że sama obsługa przerwania napisana jest nieźle. Wystarczy tylko wyrzucić z funkcji ten polling w postaci:...
Bo nie ma tak, że komunikacja z JTAG jest niezależna zupełnie od działania procesora. Jeżeli idzie ci program gdzieś w krzaki, to i komunikacja z OCD może szwankować. Dlatego też pytałem o te tryby stand-by. Piszesz, że dopóki nie podłączysz USB, to wszystko działa ok i możesz krokować kod. Czyli może jednak coś z programem lub konfiguracją kompilatora,...
Sprawdzanie to raczej nie, ale znalazłem tam cos takiego If both interrupts are of the same priority the interrupt which is serviced first by polling sequence will be executed first. To by odpowiadało mojemu przypadkowi- wszystkie przerwania mają ten sam priorytet. Tu od razu sie zapytam, jak w 51ce robi się aby przerwania miały te same priorytety??....
Rdzeń to ARM7, w dokumentacji pisze, że ma VIC: Standard interrupt, IRQ, and non-maskable fast interrupt, FIQ, inputs are provided together with a VIC interrupt controller vector port. The GIC interrupt controller can also be used if more complex priority-based interrupt handling is required. The processor includes low-latency interrupt technology which...
Trochę sobie skomplikowałeś życie. - czy zmienne używane w przerwaniu (te, które również są) są volatile? - co to za wersja RTOSa bo chyba jakaś przedpotopowa :) - po co Ci taka kontrola przepływu ? Działa to teraz tak samo jakbyś nie używał przerwania w ogóle a wprowadza tylko zamieszanie. Funkcja i tak czeka aż się przerwanie skończy, więc czemu nie...
Cześć wszystkim, Zwracam się do Was z prośbą o pomoc w rozwiązaniu problemu z poprawnym wysyłaniem stringa po UART za pomocą przerwania nadawczego. Męczę, się z tym już któryś dzień, czytam reference manuala, i cały czas nie udało mi się tego problemu rozwiązać. Ogólnie rzecz biorąc funkcje do buforowania zdarzeń odbiorczych/nadawczych są sprawdzone...
My się chyba zupełnie nie rozumiemy. Polling i zezwolenie na przerwanie od INT0 nie występują jednocześnie ! De facto na chwilę obecną nigdzie nie ma zezwolenia na przerwanie od INT0 więc jest to zwykły pin wejściowy. Jest zezwolenie jedynie na przerwanie od INT1, które uruchamia Timer0 i zezwala na przerwanie COMPA Timera0. W geście rozpaczy odpiąłem...
Ja też chętnie poczytam o eventach :-) Ostatnio tak kombinuję, że może dobrze byłoby zastąpić dynamiczny polling (czekanie na spełnienie jakiegoś warunku w danym stanie) po prostu wywołaniem danego stanu (z "niebytu") w momencie wystąpienia warunku (czyli eventu). Niestety, ale "coś" co zarządza eventami i potem przekazuje sterowanie do odp. fragmentu...
Z tego co wyczytałem to, to przerwanie jest wywoływane przy każdym naciśnięciu klawisza. Jest ono zwiążane z przerwanie sprzętowym klawiatury. Domyślna procedura odbiera znaki i przekazuje je dalej. Wydaje mi się że procedura ta odbiera dane z portu klawiatury 0x60h. Klawiatura przekazuje bajt po naciśnięciu/puszczeniu klawisza. Po naciśnięciu przychodzi...
Nie ma się czym przejmować. Sygnał nie może zaniknąć tylko będzie miał taką wartość jak w neutrum. Przerwanie może być tak jak wcześniej co 20us zaoszczędzi się czasu a 25 stopni wypełnienia też wystarczy. Chyba że zrobiłeś to po to żeby count_temp przyjmowało większe wartości ale lepiej zamienić w obsłudze przerwania ten pierwszy warunek na taki :...
Ad.2 NIc sie nie stanie, tylko program moze róznie działać w zalezności jak sie zsynchronizują wątki tzn raz będzie działał a raz nie. No ok :] Skoro dla Ciebie raz_dziala_raz_nie != nie_dziala, to trwoga... Jesli juz precyzowac, niewiele zalezy od synchronizacji watkow. Zalezy od uzycia danego peryferium. Im czesciej watki beda konkurowac o jedno...
Jak wielu z was, jestem szczęśliwym posiadaczem LCD od Nokii 6100 :D, z tym że nigdy go jeszcze nie używałem. Tak właściwie nigdy nie używałem żadnego wyświetlacza graficznego, więc obsługę tego traktuję jako wprawkę (chociaż wiem, że większe wyświetlacze mają raczej interfejs równoległy i steruje się nimi np. przy pomocy interfejsu EBI w MCU, a ten...
W jakim trybie używasz DMA ? Jak ja robiłem I2S to wykorzystałem DMA w trybie Circular ze zdefiniowanymi przerwaniami od transfer complete oraz half transfer complete. Po wystąpieniu się przerwania uzupełniałem danymi część bufora, która aktualnie nie jest transferowania. Wszystko działało płynnie. W trybie wyzwalania jednorazowego tzn. po wystąpieniu...
Ok, postaram się sprecyzować: W docelowym podejściu wykorzystany uC to ATmega32a. Kod do inicjalizacji interfejsu USART to raczej standard w postaci: http://obrazki.elektroda.pl/6646316500_1... Kodu nie zamieszczam bo przy wyłączonym interfejsie USART właściwie go nie ma. Jest jedynie pętla w aplikacji na PC-cie, która wysyła bajty na...
To wciąż trwa. Ale zmieniłem UART z przerwania TX na polling, a teraz zrobiłem 5 na 5 udanych odczytów z 1500000 baud. Dołączono 2000000 baud. Sukces dla mnie w 12,5sec Czy istnieje funkcja restartu do bootloadera? (Nieważne, hal_misc_reset_all załatwia sprawę) I czy ktoś próbował flashować kopię zapasową?
(at)Piotrus_999 Te tajemnicze biblioteki są dostępne w internecie od ponad 10 lat bo sam używałem ich do pracy magisterskiej. Użycie google pozwoli Ci rozwikłać ta zagadkę. (at)Soberro Według mnie masz problem z problem z obsługą przerwań od przycisku. Byćmoże robisz tam coś czego nie powinieneś. Bez kodu nie da się więcej powiedzieć. Powinieneś zrezygnować...
kolega john_t myli się co do możliwości swobodnego ustawiania priorytetów przerwań. Wystarczy nie właczać globalnego zezwolenia i ręcznie sprawdzać przerwania (polling) Program autora wątku nie jest specjalnie skomplikowany (podejrzewam) więc spokojnie można dodać procedurę sprawdzania przerwań (zapewne nawet pod Bascom, w którym domyślam sie pisze...
Przecież wystarczy sprawdzić flagę źródła przerwania przez polling, co będzie tak samo skuteczne w sensie czasu, a nie będzie zbędnego wejścia i wyjścia z ISR, przerzucania danych na stos i nie będzie tej nieszczęsnej zmiennej globalnej zadeklarowanej jako bit flag. Pamiętaj że każdy procek będzie miał inaczej zrealizowane przerwania, cortex-m zrzuca...
Przy enkoderze zdecydowanie odczyt w przerwaniach, przy rozbudowanym kodzie w trybie polling (jak wyżej) po prostu przestaje działać. Pozdr
Jeśli obsługujesz jakiś układ peryferyjny przez polling (a nie w przerwaniach) i chciałbyś móc też wchodzić w tryb obniżonego poboru mocy, to opcja budzenia bez przerwań jest "jak znalazł".
Na początek kwestia formalna: jest za dużo tabulatorów w kodzie przed komentarzami, przez to prawa strona posta oraz kodu jest ucinana na ekranie (mam mały ekran). Co do kodu: czytanie zegarka oraz formatowanie sprintfem w procedurze obsługi przerwania jest mocno słabe. Diabli wiedzą jak jest zrealizowany lib TWI. Jakby był oparty na przerwaniach to...
Bo enkoder mechaniczny generuje drgania styków - a te mogą wywołać wiele przerwań. Dużo lepszym i oszczędniejszym w zasoby uC sposobem na enkodery jest polling w przerwaniu timera.
Nic nie robiłem z kartami, nic nie robiłem na PIC, nie znam Twojej procedury TimeOut-u a już mi się nie podoba. Albo zrób to na przerwaniu albo zrób polling. W przerwaniu- jak karta wystawi 1 wiesz że gotowe. W pollingu- co jakiś czas w głównej pętli sprawdzasz co jest na pinie. Jak jest 1- to gotowe. Sprawdzanie robisz wykorzystując timer. Najlepiej...
Po co wysyłasz poprzez polling a odbierasz w przerwaniu? Bez sensu to kompletnie.
sprawdź w ustawienich "opcje gier" na "panelu sterowania", w zakładce "identyfikatory kontrolerów" zobacz jak jest ustawiony "polling przerwań" ja mam odznaczone i jest dobrze, zaznaczę to wtedy pad wariujei ucieka w lewo,
Polling wymaga wyłączenia przerwań w pewnym momencie (na kilka instrukcji ale zawsze) Ale przerwań od I2C, czy w ogole wszystkich przerwań? tadzik85 DMA też używasz?
przerwać polling stm32 polling flagi przerwania
skanowanie komputera wyłączenie opróżnianie butli błędy wtryskiwaczy jumper
pralka gorenje ktora dobra pralka gorenje opinie
Zapalarka pracuje cały czas w palniku olejowym – Riello, Weishaupt, Satronic, objawy i diagnostyka Haier LE43K6600UGAy 43" 4K Android TV Specs, Board Types, Firmware, Common Faults