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?
To co napisałem to wiem po co od razu taka uszczypliwość , timery wykorzystuje do sterowania pinem CSN i CE chyba że powiesz mi jak to lepiej zrobić to zamieniam się w słuch, ok same flagi może trochę zaciemniają obraz bo brak do nich komentarzy, po krótce wygląda to tak. -gdzieś w programie wywołuje sobie softwerowo przerwanie od pinu IRQ -w przerwaniu...
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...
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...
Tak się tego nie robi - nie przerwanie ale polling mode - sprawdzasz stan bitu w pętli i zgrywasz dane - wtedy masz w pełni kontrolowana sytuacje i możesz wyliczyć czas trwania instrukcji - alternatywnie możesz zrobić to sprzętowo - inny temat. Dobrze byłoby gdyby gdyby źródło zegara dla CPU i tego co zgrywasz pochodziło z tego samego miejsca.
To co- wtedy gdy jest polling to wyłączasz obsługę przerwania? Przecież polling jest stale- jak można wtedy wyłaczyć obsługę przerwania. A jak w trakcie pollingu wejdzie przerwanie- to w maliny. Albo jedno albo drugie. Ja Ci radzę- rób jak uważasz.
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...
(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...
Odbiór danych nie przez polling tylko poprzez przerwanie z wektorem TIMER0_OVF_vect Ciekawa koncepcja, ale to chyba jednak polling? Otwarte pozostaje pytanie jak często. Jeśli w kodzie jest więcej takich kwiatków to jednak bez całości kodu wgranego w procesor nie spodziewaj się pomocnej odpowiedzi. Albert
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...
odpaliłem sterownik ze strony producenta o nazwie Firmware polling rate adjustment to 500Hz, przestała działać po 5s i wyłączyłem instalator. To nie sterownik a oprogramowanie układowe - czytaj co pobierasz - był zapewne pasek postępu a Ty przerwałeś.
To semafora nie popchnę? to ja nie chcę tak:] Niestety nie (; Zasadniczo używanie dowolnej funkcji samego RTOSa jest wtedy zabronione i nic ciekawego się nie da na to poradzić wprost. Interfejs przerwanie <-> wątki trzeba wtedy zrobić jakoś cudacznie, np. przez polling.
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...
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.
Przy enkoderze zdecydowanie odczyt w przerwaniach, przy rozbudowanym kodzie w trybie polling (jak wyżej) po prostu przestaje działać. Pozdr
Jak zaprogramowac sterownik 8259a w trybie polling, uzywajac debuggera i pokazac jak przyjmuje przerwania IRQ& iIRQ^ z przyciskow?
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,
Po co wysyłasz poprzez polling a odbierasz w przerwaniu? Bez sensu to kompletnie.
Tyle że to jest bezsensu... Przecież flaga ustawia się sama - wystarczy sprawdzać rejestr statusowy timera (czy czego tam trzeba) i już wiadomo, że można coś robić. Tym sposobem z "przerwań" robi się najzwyklejszy "polling". 4\/3!!
Ależ właśnie o to! To o czym Ty chyba myślisz jako priorytet to tylko kolejność sprawdzania (polling sequence) warunków przerwania. http://www.8052.com/tutint.phtml Albert
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...
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?
Nie wiem dlaczego czytasz informacje "z drugiej" ręki, zamiast skupić się na dokumentacji ? Mam tu na myśli książki i jakieś poradniki. Wszystko jest tam idealnie opisane. Nie sprawdzałem tego kodu. Jeżeli nie chcesz przerwań i wystarczy Ci tzw. "polling", to jeszcze prościej. Zakładam zegar na 16 MHz. Inicjalizacja USART0 dla 9600 b/s, 8N1, jako interfejs...
Polling- czyli odpytywanie. Pojedyńczych pinów na tyle często żeby ich stan zmieniał się kilka-kilkadziesiąt razy wolniej niż to odpytywanie. Ponieważ procesor jest szybki a sygnały na pinach zmieniają się zwykle wolno to tak się robi. W głównej pętli- raczej nie w przerwaniu. Oczywiście to trzeba oszacować albo czasem dokładnie obliczyć- zależy od...
polling- odpytywanie. Okresowe testowanie stanu pinów.
W takim razie rozwiąż to inaczej - skonfiguruj przerwanie zewnętrzne tak, aby było wyzwalane zmianą stanu i osiągnij ten efekt w ten sposób - polling pinu to w tym przypadku moim zdaniem nie jest najlepsze rozwiązanie.
Niczego nie odbierasz - nieważne czy przez polling czy w przerwaniu czy przez DMA czy jakkolwiek sobie życzysz - układ MAX-485 masz przestawiony na nadawanie. Odpowiedź przychodzi w czasie Twojego delaya. Jeśli wiesz lepiej gdzie jest problem niż kilka osób (mówiących o tym samym problemie), to w sumie po co pytać na forum?
Obie metody są ogólnie dobre (polling i przerwania). Natomiast co do szczegółów - bierzcie z kolegami do ręki User manual, kurs C i do roboty. nenpa8lo: Twój opis shadow registers może być bardzo mylący dla początkującego - sugeruje, że są jakieś 2 miejsca do wpisywania. Postępowanie jest dobrze opisane w UM rozdział o PWMLER. I nad tym 499 też należałoby...
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...
No i co się wtedy stanie? Problem byłby, gdyby tam było ==, a jest <. Delay będzie dłuższy o czas przerwania, tak że precyzja jet średnia. Działanie w przerwaniu jest dokładniejsze a nie polling licznika. Jak już napisałeś o ARM-ach to w więszości wypadków konieczności robienia czegoś w dokładnie określonych okresach czasu lepiej wykorzystać timery...
W jaki sposób wysyłasz dane? Przez DMA, w przerwaniach od TXE czy przez polling? To co opisujesz przerabiałem przy próbach odczytu danych przy użyciu DMA, kiedy bit EN w DMA->CCR był ustawiany przed otrzymaniem ACK ze slave'a. Po korekcie programu, nie notowałem innych problemów. Możesz pokazać tę część programu, która odpowiada za transmisję? STOPF...
Nie mogę się zgodzić, choćby dlatego, że można do tego zaprząc DMA i mikrokontroler nie będzie musiał NIC robić. Wersja "manualna" - przerwanie od ADC albo polling i wpisanie na port - też spokojnie by wyrobiła moim zdaniem. Ale z czym się nie możesz zgodzić? Że ledwo zapewnia? Napisałem tak bo zapewnia tylko przy określonej częstotliwości zegara (28MHz...
Hej! Wbrew pozorom, projekt ciągle żyje i doczekał się kilku usprawnień. Oto kilka z nich: - pełna obsługa dla komunikacji po usarcie oraz i2c (polling i przerwania) wraz z opcjonalnym zwracaniem statusu co poszło nie tak - obsługa crc32, rng, watch dogów i exti (póki co tylko piny) - możliwość ustawienia zewnętrznego timera dla systemowych delay'ów...
Nie należy wprowadzać _delay() do przerwania! To jest jak z papierosami- łatwo zacząć a potem bardzo trudno się odzwyczaić. Proponuję przerobić program na taki bez przerwań na początek. Wprowadź polling- czyli po polsku- odpytywanie stanu klawiatury. To się robi tak- pętla główna kręci się w kółko i trwa to jakieś mikrosekundy. W tej pętli sprawdzasz...
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.
Nie wchodząc we wszystkie szczegóły - staję przed próbą podłączenia mikrokontrolera Atmega do pewnego systemu mikroprocesorowego jako emulatora pamięci zewnętrznej z programami. Aktualnie zadanie jest realizowane przez CPLD xc95 podlaczony do dwóch układów ROM 27c040. Zarys był taki, żeby użyc atmegi i karty SD ale timing jest raczej nieosiągalny, więc...
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...
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ś...
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...
Program ma wysyłać "powitanie" na port szeregowy. Kompilowany przy pomocy Winavr + avr studio(w najnowszych dostępnych wersjach). Bez optymalizacji wysyła "Witam" ale tylko raz, a powinien dwa razy. Po włączeniu optymalizacji nie wysyła nic. Gdy robiłem transmisję przez polling wszystko było ok. Przerwanie włącza makro TXON; . Dzięki Plik iom16.h /*...
Timer- np. Timer1- jako licznik zlicza impulsy zewnętrzne. Podane na odpowiednią końcówkę- T1 w wypadku ATmega8. Nie potrzebuje żadnego preskalera- bo preskaler dzieli impulsy z zegara- a tu nie ma co dzielić. Ustawiamy bity CS10-CS12 na external clock source- falling lub rising. Czy ustawiamy końcówkę T1 jako wejście- nie pamietam. Można ustawić. Ilość...
A pytanie jest takie- czy da się to zrobić bez while()? Tylko na przerwaniach. FIFO na instrukcje, kolejkowanie kolejnych tranzykcji. Opracowujesz Sobie zgrabną strukturę: teraz operował. I masz pełną dowolność, prosta maszyna stanów FSM i sprawdzasz za pomocą if co można zrobić i zmieniasz stany. Nie ogranicza Ciebie timeout, bo takiego z reguły nie...
A jaka to będzie różnica, czy robi to przerwanie a program sam nic, czy robi to program a przerwanie nic? Poza tym przerwanie realizuje przyciski zmiany godziny, żeby to miało ręce i nogi trzeba polling robić w równych odstępach czasu, program główny tego nie gwarantuje, musiałbym używać delay. Po zmianie godziny przyciskami trzeba przeprowadzić aktualizację...
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...
Co się dzieje jak ARM VIC vector mode jest zablokowany w rejestrze Host Control Register? To w jaki sposób przerwania są realizowane, tzn. wiem że poprzez metodę odpytywania (polling)... z tym, że zauważyłem, że i tak jest wykorzystywana tablica wektorów adresów procedur obsługi przerwania (z rejestru Interrupt Vector Address Register0-N (gdzie N to...
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,...
Było robione na eventach - to dopiero była masakra... wysłanie kolejnego żądania musiało się znajdować w kodzie eventu odebrania odpowiedzi - problem z przerwaniem odpytywania, z obsługą przekroczenia czasu oczekiwania z wprowadzeniem wymaganych opóźnień. Polling portu powinien się odbywać w oddzielnym wątku i w pętli.
Linia do przerwań, jest tylko dodatkiem o którym pomyślałem, polling z ATMegi i tak będzie wykonywany (co pewien czas) ale jeśli w żadnym urządzeniu nic się nie zmieniło to po co? Magistrala to 1-Wire, myślałem tylko o dorobieniu takiej dodatkowej lini żeby niepotrzebnie nie generować ruchu na tej magistrali. Co do rezystancji to masz rację, mój błąd,...
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...
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?
Jesli transmisja ma być nieblokująca to polling odpada. Jak rozumiem można podłączyć modem tak, że po wykonaniu rozkazu dostaniemy przerwanie (również gdy coś się nie powiedzie). Wtedy wg. mnie trzeba zrobić bufor (np. cyrkularny) do którego będzie wpisywać pakiety główny program i inicjowac transmisję. Przerwanie będzie sprawdzało status, zdejmowało...
Co ja widzę? Ty Cały kod programu z dziesiątkami pętli nieskończonych i delay'i wrzuciłeś w kod obsługi przerwania?? Gratuluję pomysłowości... :) Po co stosując przerwanie od zakończenia transmisji używasz jeszcze jakiegoś USART_vReceiveByte(void) które miałoby sens gdybyś stosował polling. Nie prościej w [syntax=C] ISR(USART_RXC_vect) { data=UDR; //dalszy...
Chodzi mi, o to że ustawiamy (można powiedzieć podciągamy, bo w anglojęzycznych opracowaniach nazywają to tryb polling czy pullup-nie pamiętam dokładnie-może mi się tak wydaje) wyjście SDO w stan wysoki i oczekujemy na stan niski, którego pojawienie się na SDO sygnalizuje, że kolejka FIFO została zapełniona znakami. Pull-up i polling to dwie kompletnie...
Program w tej wersji działa dla ośmiu kanałów. No pewnie że dla innej ilości kanałów będzie źle. Albo dla portu dać maskę i wystawiać dla mniejszej ilości kanałów. Albo zmieniać zależności czasowe. A spróbuję połączyć te dwie funkcje. Ale z wylączeniem przerwania od ADC- to nie wiem. Żądanie pomiaru jest ustawione sprzętowo w rejestrze SFIOR- od przepełnienia...
Polling w tym przypadku oznacza mniej więcej przesył manualny :D Procesor ma 168MHz, a czekając na paczki, które idą z prędkością 160kHz to równie dobrze mógłbyś go zwolnić do 1MHz. W przypadku tak wolnych transferów DMA jest idealne. Jeśli chcesz mieć większą kontrolę nad transferem to przerwania. Jeżeli nie przeszkodzi Ci to w dalszym postępie projektu...
Sensu w tym żadnego nie widzę - skąd i po co te przerwania Jeżeli chodzi o moje rozwiązanie, to przerwania będą pochodziły od 8275, 8042, 8251 i może jeszcze od czegoś. Jak na razie uruchamiałem układy przez polling, zaś 8259 testowałem osobno z generatorem funkcji na jednym z wejść. Jeszcze nie podłączałem poszczególnych peryferii pod linie IRQ 8259....
Witam wszystkich, Tytułem wstępu: Jestem poczatkującym użytkownikiem Arduino (i dlatego piszę w dziale dla początkujących). Jednym z moich projektów jest sterowanie urządzeniem za pomocą enkodera. Problem wydaje się bardzo prosty - ale na Arduino. Z GitHub'a (https://github.com/brianlow/Rotary) ściągnąłem doskonałą bibliotekę do obsługi enkodera, która...
Debugger służy tylko do obserwowania skutków działania programu, np. pokazuje zawartość komórek pamięci. W debugerze się nie porgramuje. Musisz mieć skompilowany program, którego działanie podglądasz. Podejrzewam, że będziesz go pisał w assemblerze. Żeby pokazać polling musisz w jakiśch sposób generować na zmiane sygnały IRQ6 i 7 . W tym trybie nie...
Bez przerwań nie da się zrobić absolutnie niczego, co jest bardziej skomplikowane. Dzięki zastosowaniu przerwań mikrokontroler nie musi stale sprawdzać, czy zaszło jakieś zdarzenie. Ciągłe sprawdzanie czegoś takiego (ang. polling) spowolniłoby program. Ponadto kolejny kłopot to odczytanie danej flagi z układu zewnętrznego (np. przez SPI/I2C) to dodatkowe...
Mam problem w poczynieniu założeń. W urządzeniu przypominającym małą suwnicę bramową mam zamontować ok. 20 czujników - w zasadzie krańcówek. Czy to będą transoptory szczelinowe czy kontaktrony- jeszcze nie wiem. No ale żeby nie ciągnąć grubej wiązki wymysliłem żeby badać ich stan przez I2C albo 1Wire. PCF8574 albo DS2413. Odległość jest głupia- 6-10m....
Napisano mi wcześniej, że nie mogę bezpośrednio użyć UDR w switch czy w if, żeby wrzucić z UDR do zmiennej tymczasowej i tą zmienną sprawdzać. Tak więc zrobiłem. Niestety zrobiłeś to źle. Napisano Ci również, że po odebraniu każdego bajtu rejestr UDR można odczytać tylko raz, a Ty wywołujesz funkcję odbierz() , która odczytuje i zwraca wartość rejestru...
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...
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...
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
A jaki właściwie masz ten mikrokontroler? Jeżeli coś z nowszych (mega88 itp), pozwalających na włączenie przerwań z dowolnego pinu, to widzę jeszcze szansę (dla trybu standard - 100kb/s). Natomiast nie wydaje mi się, aby dało się to zrobić całkowicie w polling-u. Jak byś to sobie wyobrażał, jeżeli procesor ma jeszcze czymś sie zajmować? Zrobienie programowego...
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,...
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...
Transakcja przerwaniowa ( którą jest np hid- moje przyp. )jest elementem transferu przerwaniowego.Nazwa może być myląca, ponieważ przerwanie kojarzy się na ogół z natychmiastową obsługą zdarzenia, podczas gdy w systemie USB transfer przerwaniowy polega na odpytywaniu urządzenia(polling) w regularnych odstępach czasowych -tak małych jak 1ms lub wielokrotność...
Nie- polling to sprawdzanie stanu (wejść, wyjść czy jakiejkolwiek zmiennej) co jakiś czas. Zwykle w głównej pętli- ale wtedy nie wiemy co jaki czas. A w tym wypadku zależy nam aby wiedzieć co jaki czas sprawdzamy. Po to aby obliczyć czas. To że w przerwaniu- to tylko dlatego że chcemy wiedzieć ile czasu trwa sygnał wysoki na wejściach.
Witam W ramach poszerzania wiedzy i umiejętności postanowiłem rozpocząć zabawę z architekturą ARM i natrafiłem na problem - nie potrafię poradzić sobie z transmisją UART przez kanał DMA, w trybie polling wszystko działa. Napisałem program w oparciu o CooCox IDE i HAL drivery. Transmisja w trybie poling śmiga, zaś próbując wysłać coś przez DMA - kiszka....
Z tego co czytalem w datasheecie to przy ustawieniu bitow preskalera CS.. na 0 licznik sie wylacza. Da sie to robic inaczej? Jest to dobry sposób. Zerowanie wartosci licznika 2 zrobilem na wszelki wypadek, bo nie bylem pewny czy czegos nie wpisuje jeszcze przy ostatnim takcie zanim sie wylaczy w przerwaniu, uwazasz ze to zbedne? Nie oto chodzi. Pętla...
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...
Przepraszam za literówkę, polling. https://pl.wikipedia.org/wiki/Odpytywani... Za zwyczaj jak odpalisz coś sprzętowego w AVR, to potem nie ruszasz tych pinów. Musisz wybrać które chcesz używać. Możesz wstępnie coś ustawić na tych portach przed przejściem na sprzętowe, ale zwróć uwagę na polaryzacje i fazę (2 bity, dokumentacja) bo przy odpaleniu sprzętowego,...
Witam! Z pewnością chcesz wykorzystać mechanizm "polling" :) jak to się ładnie nazywa w dokumentacjach. Po pierwsze w ATmega8 nie ma flagi Tirf.0, jest natomiast flaga Tifr.0 o którą zapewne Ci chodzi, dlatego pewnie nie do końca che działać. ;) Pozatym aby używać przerwań w ATmega8 musisz też odblokować globalny system przerwań, ponieważ po starcie...
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....
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...
Sprzętowo tak, jak zrobi programowy I2C to 1,1Mb/s da sie uzyskać przy Fosc16MHz, więc przy 20MHz (np Mega324) jakieś 1,3Mb/s. Inna sprawa to na ile slave pozwala. Programowe I2C o prędkości 1.3Mb/s. Nie ma jak 100% czasu procesora przeznaczać na komunikację przez polling. To brzmi jak rozsądny pomysł. Na slave to będzie już trzeba AVRa z zegarem 100MHz....
Ja bym zrobił polling- czyli odpytywanie stanu wejścia. Co jakiś czas- dużo mniejszy niż minimalny czas trwania impulsu. W petli głównej. A czas odpytywania wyznaczany przez któryś timer. Skoro czas odpytywnia wyznaczany przez timer to co szkodzi od razu skoczyc do obslugi tego timera i odpytać w przerwaniu? Angazowanie programu głównego do tego celu...
Znalazlem juz problem. Gdyby ktos byl ciekaw: Problem elzal w upgradzie CrossWorks. W wersji 2.0.5 -> 2.0.6 zmianie ulegla jedna wartosc domyslna DebugIO Implementation. Uzywalem w projekcie wartosci domyslnej, ktora jeszcze w 2.0.5 byla 'Mem Poll', czyli polling pamięci. Od 2.0.6 to sie zmienilo (nie moge znalezc co jest obecnie wartoscia domyslna)....
Nie ma potrzeby stosowac interrupt. Jezeli jednak go stosuje to bezposrednio w jego subrytynie moze wpisac "Exit For" , natomiast moze bezposrednio w petli "for...next" sprawdzac (polling) Stan logiczny pinu wejsciowego I w przypadku jego zmiany zastosowac "EXIT FOR" E Marcus
Nie wiem jak podłączyć lcd zgodne z biblioteką, biblioteka XPT2046 nie pozwala mi zdefiniować innych pinów SPI To prawda, że bezpośrednio nie pozwala, bo to taka uniwersalna biblioteka jest ;) Używa natomiast domyślnych pinów dla magistrali SPI (kanał HSPI ): SCK - 14 MISO - 12 MOSI - 13 CS - 15 W ten sposób trzeba połączyć TS z ESP32 i na razie odłącz...
Co to są za bzdury, gdzie ty widziałeś 16bitową atmege?! ------------- Rodzina propellerów nie zadziwia niestety niczym - scalaki są drogie, ciężko dostępne, i wolne . Naczytałem się kiedyś materiałów na ich temat. 1. Spin to badziewie. Sami się przyznali do tego, że soft w spinie marnuje sporo mocy obliczeniowej rdzeni. Siłę procka widać dopiero wtedy,...
Może zamiast tak kombinować, to spróbujesz tego co jest opisane na stronie 69 w sekcji Unlimited Length Packet Format i dalej do strony 71? Jeżeli wysyłany pakiet ma długość 107 bajtów, albo jest ładowany na raz do bufora nadajnika z odpowiednio niską prędkością po SPI, albo musi być ładowany po kawałku, z odpytywaniem flagi FIFO, albo zachowaniem zależności...
(...) 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...
Szukasz dziury w całym. Obsługa przez polling ma być prosta, bo czego tu oczekiwać? Wciskanie tam używania FIFO czy czegoś takiego - a po co? Będzie dzięki temu szybciej działało albo coś? Kod na pewno będzie większy i bardziej skomplikowany, ale coś mi się wydaje, że będzie działał dokładnie tak samo szybko - w końcu to wciąż tylko polling. Pisanie...
No oczywiście że nie ma problemu, ale trzeba umieć to napisać :] Nie każdy potrafi.... Trudność (nie problem) polega właśnie na napisaniu tego dispatchera, bo: 1) transakcje nie powinny być wskaźnikami w fifo, lecz powinna być lista niezrealizowanych transakcji tak samo jak lista zrealizowanych transakcji 2) transakcje powinny być priorytetowane 3)...
Getrc5 działa bez problemu na at90s2313 i attiny2313. Takie porady są najbardziej rzeczowe na tym forum ;), bardzo dużo pomogłeś, prawie problem rozwiązany :). Takie "nabijanie" tematu powinno być przez moderatorów korygowane... To dlaczego ciągle na tym forum jest mnogość tematów na temat GetRC5 i tiny2313 np. Witam Mam problem z odbiornikiem RC5...
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ę,...
I2CInProgress zeruję po odebraniu wszystkich bajtów. W funkcji głównej rozpoczynam tylko wysyłkę 1 bajta (nr rejestru czujnika z którego mam czytać dane), a w przerwaniu od I2C po odebraniu 6 bajtów ustawiam na 0 (w podglądzie jak zatrzymam kod to jest 0). albertb myślałem, że tak jest najlepiej, ale w sumie mogę robić tak, że jak już 2 razy odbiorę...
Witam! Mam taki oto problem dotyczący fragmentu kodu dołączonego do tego postu. Po wyłączeniu optymalizacji poniższy kod wyrzuca mi na wyświetlacz (funkcja write_char) znaki "ba" , czyli wszystko jest OK. Gdy optymalizacja jest włączona to wyrzuca mi "aa"! Czy ktoś wie jak coś takiego rozwiązać. Środowisko AVRStudio 4. Chciałem sobie zrobić elegancki...
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...
Jak w temacie. Nie mogę wgrać programu do procesora. Tak wiem, to nie jest pełna komenda, ale już na niej się wysypuje. Programowanie STM32F103 działa świetnie. JTag od Freddiego. openocd -f interface/jtagkey.cfg -f target/stm32f1x.cfg -c init -c "reset halt" Open On-Chip Debugger 0.6.1 (2012-10-12-19:56) Licensed under GNU GPL v2 For bug reports, read...
Hej, Mam moduł pomiarowo-sterujący, pracujący na LPC1769 pod kontrolą FreeRTOS (5 tasków przy zegarze 100MHz, komunikacja na dwóch UARTach, wykorzystane trochę GPIO, 4xADC, PWM na 4 kanałach, jeden timer i SSP do komunikacji z kartą microSD). W projekcie pojawiło się zagadnienie pomiaru impulsu PWM o długości rzędu 1-2ms, powtarzającego się co ok. 20ms...
Dziękuje...jeszcze pytanie o nadajnik - rfm02. Wg dokumentacji http://www.hoperf.com/upload/rf/RFM02.pd... , patrząc na przebieg czasowy, jest tak, że aby wysłać dane przez SDI, należy wpierw nadać 0xC6, a potem bez zegara nadawać daną...jak to synchronizować (skąd wiadomo, że nadaną np. jedną jedynkę a nie dwie jedynki)? Patrząc na przykład programowania...
Następna sprawa, tak szumnie nazywanie normalnych flag synchronizacyjnych muteksami i semaforami. No przecież to się w "tradycyjnych" systemach rozwiązuje zwyczajną flagą (tudzież kilkoma flagami) synchronizacyjną. Jest to kompletna bzdura, ponieważ obiekty synchronizacyjne blokują wątek, a odczytywanie w kółko zmiennej "volatile bool" raczej niezbyt....
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...
Najłatwiej, jeśli masz np. oscyloskop, to zrobić kilka powtórzeń takiego "awaryjnego zrzutu" danych, ze wszystkim co wtedy chcesz mieć zrobione (żeby uwzględnić wszystkie instrukcje do wykonania) i monitorując GPIO (przestawiane na początku i końcu procedury) zmierzyć czas empirycznie (no a prąd to jakoś oszacować średni na podstawie miernika). Kilka...
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...
przerwania polling stm32 polling stm32 przerwać przerwać
plastik przekładnia licznik zwojów nawijarki update retry
renault mascott renault mascott
Skoda Yeti 1.8 TSI 4x4 2012 - Kierownica multimedialna nie działa po wymianie radia na Android Znaki na kole zamachowym silnika Andoria 1CA90