Bufor cykliczny trzeba zorganizować na RS232 oraz wysyłanie na przerwaniach i po kłopocie.
-blokowanie przerwania następuje tylko w momencie kiedy pętla while czeka na zwolnienie bufora, czy się myle? Przerwań nie blokuje się w żaden sposób, żadnym while-m. co do bufora cyklinego to jego zasada działania z tego co czytałem polega na tym, że dane zmieniają swoją pozycje, w związku z tym nie będę mógł później wykorzystać w programie konkretnej,...
Mógłbym jeszcze prosić o podpowiedź odnośnie wykrycia ciągu znaków, pojawiającego się na uarcie? :) Tak, zastosuj bufor cykliczny do odbioru, a później w przerwaniu badaj wystąpienie albo ilość wystąpień znaku 0x0d czyli (ENTER) .... wtedy będziesz wiedział ile przyleciało stringów do bufora i kiedy można je w całości ładnie odczytać.
Zrobiłem taki termometr na tych najtańszych modułach i tak jak pisze poprzednik jest tam rozbiegówka do synchro, na przykład ciąg 01010101 (0x55) i 10101010 (0xAA). Do tego on obsługuje ID dla kilku termometrów zewnętrznych. Przesyła też dane o napięciu baterii... Ma bufor cykliczny po to by się lepiej synchronizować. Zrobiłem go dawno temu bo w 2017...
Bufor cykliczny - tablica o długości N bajtów. Dwa wskażniki na elementy tegoż. Pierwszy wskażnik do odczytu (wo), drugi do zapisu (wz). Początkowo oba wskażniki ustawione na początek bufora. Zapis: Procedura przerwania po każdym odebranym bajcie zapisuje go w miejscu wskazanym przez wz. Następnie wz jest inkrementowany i jeżeli wskazuje na element...
Bufor cykliczny, inaczej też nazywany kołowym, to najlepsze rozwiązanie do tego co chcesz zrobić. Tym bardziej, że jak zaznaczyłeś danych będzie sporo. Każdy odebrany znak wpisujesz do bufora i przesuwasz wskaźnik zapisu o 1. Możesz to robić przez obsługę przerwania od portu szeregowego, albo możesz do tego wykorzystać DMA. Dlaczego bufor? Ponieważ...
Niestety pomimo wgrania przykładowego kodu z biblioteki wciąż nie jestem w stanie uzyskać danych powrotnych z bufora, po raz kolejny otrzymuje liczbę 134 i znak CR w terminalu. W przypadku gdy wysyłam dane przez terminal jedynie przez ułamek sekundy zauważam pojawienie się danych jednak przypominają one krzaki... Kod programu: https://obrazki.elektroda.pl/1181338100_...
Witam, próbuję zaprogramować mikrokontroler,aby obsługiwał USART do komunikacji przez RS232. Chcę wykorzystać do tego bufor cykliczny, który zaimplementowałem w następujący sposób: [syntax=c] #include <inttypes.h> #define BUFFER_SIZE 32 #define BUFFER_MASK ( BUFFER_SIZE - 1) typedef struct { uint8_t buffer[BUFFER_SIZE]; uint8_t head; uint8_t tail;...
No tak na marginesie to bardzo ciekawy efekt ci wyszedł ;) A na poważnie to działasz na ATmega32 więc jak możesz próbować nawet tworzyć bufor w RAM o rozmiarze 2026 ??? nie wspominając o większym - skoro cały RAM tego procka to 2kB. Zastanowiłeś się nad tym? hmmm widzisz tutaj twoim problemem jest na razie prawidłowe zorganizowanie binarnej transmisji...
http://obrazki.elektroda.net/23_12536510... Wszystko zaczęło się od wyświetlacza od kasy fiskalnej IBM 93F1090, który w roku 2006 dostał się w moje ręce. Chciałem go uruchomić lecz niestety nigdzie nie mogłem odnaleźć informacji jak się do niego dobrać. http://obrazki.elektroda.net/46_12536505... http://obrazki.elektroda.net/18_12536509...
Pozostaje problem tych zakłóceń na AY3 kiedy są przerwania, ale to chyba będzie temat dekodera adresów i taki dekoder na GAL Czy te zakłócenia są też na emulatorze? Nie wiem, co jest ich przyczyną, ale jeżeli przyczyną jest wywołanie przerwania akurat w chwili wysterowania AY i przez to AY jest źle wysterowane, to myślę, że przed znalezieniem sprzętowego...
http://obrazki.elektroda.net/42_12648689... Na temat projektu avr-cdc z [url=http://www.recursion.jp/avrcdc/]htt... napisano już wiele i jeszcze więcej - nie będę się rozpisywał o samej idei - można zajrzeć chociażby do wątku [url=http://www.elektroda.pl/rtvforum/to... prosta niezawodna przejściówka...
Szukaj pod hasłem "ring buffer". Bufor cykliczny operuje na bajtach. A mnie interesuje bufor bitowy z jednoczesnym przesuwaniem tychże bitów. Spójrz na kody, które podesłałem. Rozumiem, że można stworzyć w ten sposób bufor cykliczny bitowy, ze wskaźnikiem bitu, ale to chyba będzie mistrzostwo nieefektywności.
Ten sposób to tryb LinkedList w DMA. Opisujesz listę buforów, które DMA ma wysłać do wybranego interfejsu. Element listy pokazuje na następny bufor, który mechanizm DMA sam sobie wczyta i przygotuje do następnego transferu. Ostatni element listy niech pokazuje pierwszy i masz bufor kołowy... U mnie na SAM3U4(at)96MHz (CM3) transfer 4MBit/s po SSC działa...
Program jest mojego pomysłu i autorstwa.Sterownik zbiera dane co 20 minut w buforze w pamieci ram.Jest stworzony bufor cykliczny obejmujący 24h. czyli 72 pomiary. Programem mogę pobierać dane kiedy chce i dodatkowo zapisywać do archiwum w komputerze a potem można sobie przejrzeć i porównać. Generalnie jeszcze robię drobne poprawki a jak będzie wszystko...
Witam, Mam może trochę naiwne pytanie, gdyż dopiero zaczynam interesować się DSP, ale nurtuje mnie kwestia optymalizacji kodu programu napisanego na te procesory. Przykładowy problem to np. jak zorganizować z poziomu C bufor cykliczny tak aby procesor nie liczył wszystkiego "na piechotę". Czyli: jak napisać kod w C aby kompilator "tłumacząc" go na język...
Bufor cykliczny o nieco zmodyfikowanej funkcjonalności: - Nowy element można dodać zawsze; jeśli bufor jest pełny, zamazujemy najstarszy. - Oddzielone funkcje odczytu n elementów i usuwania z bufora - czytamy nie usuwając, następnie usuwamy oddzielnym wywołaniem. Tu trzeba uważać na synchronizację, bo nie będzie dobrze, jeśli pomiędzy odczytem i usunięciem...
(...) rony jak i dowolnej liczby bajtów mniejszej od rozmiaru strony. Czy jeżeli zrobię zapis 2 bajtów na środku 64-bajtowej strony, to czy pozostałe 62 bajty zostaną "przepisane", a więc ich żywotność obniży się o cykl zapisu? Czy może EEPROM faktycznie wewnętrznie dokona wymazania i zapisania tylko 2 bajtów. Algorytm bufora cyklicznego jest powszechnie...
(at)fachman1964 Przepuściłem ten kod przez Qwen z opcją refaktoryzacji "Advanced C++23". Dla AVR nie ma dostępnej std, więc wiele nie mógł zrobić, ale wynik moim zdaniem jest całkiem OK. Miłej analizy ;) [syntax=c]#include <TM1637Display.h> #include <OneWire.h> #include <DallasTemperature.h> #include <EEPROM.h> // ========================================...
Co do ulepszenia, to załączałbym GPS co cykliczny okres czasu, czy tak naprawdę potrzebujesz odczytu do 1 sekundę? Wyłączyć zasilanie GPS na 30 sekund, załączyć na 10 sekund, bo tyle pewnie zajmie złapanie ponownego fixa. To Ci da dużą oszczędność energii. Rzuć okiem na Quectel funkcja "Supports AlwaysLocate". Ponadto buforuj dane w RAM do zapisu i...
Brzmi trochę pogardliwie. Mimo wszystko odbieram to jako pochwałę - mało techniki = mały koszt i wysiłek. Po prostu jestem rozczarowany artykułem. "Symulator EKG" to nic innego jak urządzenie wysyłające stały bufor danych w sposób cykliczny na wyjście analogowe lub cyfrowe - nie ma tu absolutnie nic ciekawego, a to prawie połowa artykułu. Dalej też...
1ms spokojnie przerwanie zewnętrzne Ci zliczy (piny 2, 3) https://www.arduino.cc/reference/en/lang... dalej myślę, że musisz odliczać czas np. licznik 1 i przerwanie powiedzmy co 1 sekundę (konfigurujesz przez rejestry TIMER1), tam sobie liczysz sekundy i za każdym razem (może być w loop() ) przeliczasz...
Całkowanie przeprowadzasz na skończonej ilości próbek. Tworzysz po prostu bufor cykliczny rzędu "n", z którego pobierasz próbki do całkowania. Jest to nic innego jak cyfrowy, dolnoprzepustowy filtr typu FIR.
Wszystko powinno poginac na buforach kolowych , powinien istniec regularny parser tego co przylazi ok, bufor cykliczny wydaje sie byc ciekawszym rozwiazaniem :) Zrobie dwa wskazniki jeden do odczytu drugi do zapisu. * Wskaznik do zapisu pokazuje nam gdzie zapisac kolejny znak, po czym jest inkrementowany. * Wskaznik odczyt u ustawiony na znaku ktory...
Podchodzisz do problemu ze złej strony. Zamiast optymalizować ilość cykli w sekcji krytycznej lepiej wykorzystać strukturę, w której zapis i odczyt nie kolidują ze sobą - na przykład bufor cykliczny z dwoma wskaźnikami - jeden na pierwszy bajt do odczytania, drugi na pierwszy wolny bajt w buforze. Dyskusja: http://www.elektroda.pl/rtvforum/viewtop...
pomoge odgrzac kotleta :) dlatego najlepiej zawsze wykorzystywać system przerwań USART aby spokojnie i bez przeszkód wyrabiać się z operacjami odbioru - a do tego można wtedy zastosować własny bufor cykliczny - odbiorczy i wtedy wszystko działa - miodzio ;) Staram sie napisac program z analiza przewidzianych potwierdzen i nie przewidzanych zdarzen w...
W przypadku ramki transmitującej pojedynczy pomiar, wystarczy jeden bufor cykliczny na dane oraz ewentualna opcja powtarzania pojedynczej ramki (jeśli chcemy pilnować danych). Płacimy za to większym obciążeniem kanału, ale przy proponowanych parametrach spokojnie się mieścimy.
Witam, Nie, może nieprecyzyjnie się wyraziłem, moduł zachowuje się tak jak napisałeś, ale dla Ciebie, jako "obserwatora" z zewnątrz mogą przyjść dane w dowolnej chwili. Bo moduł odpowiada jeszcze np. "OK", "busy" i coś tam jeszcze.... Bo wyobraź sobie sytuację, że dostałeś to +IPD i całą resztę, parsujesz te dane, a w tym czasie ktoś nacisnął przycisk...
Z przerwaniami chodzi o to, że przy kopiowaniu nie blokujesz w ogóle procesora pętlą while, tylko robisz sobie coś innego i czekasz na przerwanie, żeby obsłużyć zdarzenie końca kopiowania bufora. Co do kopiowania tylko raz - wtedy w takim przerwaniu blokujesz kanał, a jak chcesz kopiować znowu, to gdzieś go sobie odblokowujesz. DMA nie kasuje rejestrów...
Dobrze. Da się inaczej. Wersja łatwa: Tablicę (string) zrobić globalną i sprawdzać czy poprzednia transmisja została zakończona przed wysłaniem. Wtedy wywołanie dbguPrintf() zakończy się od razu, za to oczekiwanie nastąpi przy kolejnej okazji, ale czasu procesora zmarnuje się mniej, bo w trakcie transmisji będzie mógł coś robić. Wersja trudniejsza:...
Przejście na DMA uprości Ci komunikację i program. masz bufor cykliczny. DMA używasz po to aby za Ciebie wpisywał lub wyczytywał dane z rejestru UART. Po co robić to ręcznie. Lepiej skupić się na analizie danych. Zakładam że odbiór masz w przerwaniu. Zrób prosty bufor cykliczny o wielkości 256 bytes. GSM_communication.counter_RX - będzie bajtowy. Drugi...
Jeśli upierasz się przy "głównym wątku", to proponuję zrobić bufor cykliczny FIFO, odbiór znaków do bufora w przerwaniu i całą interpretację danych w głównym wątku. Przy innej dekompozycji (automat parsujący dane w przerwaniu) będziesz miał więcej roboty z utrzymaniem spójności, bo zapewne wątek główny musi się dowiedzieć, która dana przyszła i być...
Pracowałem ostatnimi dniami nad małym kontrolerkiem, sterowanym przez RS232. Obsługa niektórych poleceń, wydawanych do niego, trwała nawet po kilka milisekund i... okazało się, że użyty przeze mnie 16F628A ma bufor wejściowy USARTa rozmiaru... 2 bajtów. Tak, to nie pomyłka :| Dlatego postanowiłem napisać obsługę cyklicznego bufora wejściowego - o rozmiarze...
Z poolingiem to ty tego dobrze nigdy nie zrobisz :( konieczne wydaje się użycie przerwań i buforów cyklicznych. Chyba że coś źle zrozumiałem. Więc jak możesz pisać że wykorzystujesz pooling i program ci się nigdzie nie zatrzymuje - to niestety jest sprzeczne zdanie.
Wykorzystam chyba ramkę (A-wartoscA). Załózmy ze z PC przychodzi ramka: A-123\n Sprawdzanie czy pierwszy bajt 0 to A czy B ogarniam, nie wiem jak z bajtu 2, 3 i 4 odczytac całą liczbę do jednej zmiennej i jak sprawdzac ile bajtów nadeszło zeby nie odczytywac bajtow ktorych nie ma jak przyjdzie np ramka A-4\n. Wiem ze trzeba do tego zbudować bufor cykliczny...
Robot: jasne, że na procku byłoby prościej, tylko ja tutaj muszę dosyć szybko działać. Zrobienie tego na procku wiązałoby się z obliczaniem dwóch 16-bitowych adresów i sterowaniem magistralą - czyli tracę sporo czasu, a w moim systemie każdy zaoszczędzony takt zegara jest na wagę złota. Dodatkowo tracę 2 porty mikrokontrolera na wystawienie adresu -...
W rzeczywistości do DSP (metody) używa się DSP (procesora sygnałowego) :) One są idealne do takich obliczeń, przy 40MHz, które wydają się śmieszne, można na nich uzyskać nawet i 300 MIPSów lub FLOPSów No tak, tyle to i ja wiem ;). No ale w DSP-kach masz bufory na sygnał wejściowy i na współczynniki, masz sprzętowy bufor cykliczny do przesuwania okna...
Co może zakłócać generowanie Master Clock podczas transmisji I2S? Na moje oko to aliasing z częstotliwością próbkowania analizatora stanów logicznych. Pewnie próbkuje z częstotliwością 24 lub 25MHz. MCK zapewne jest w porządku. Z timerem to się już zorientowałeś, że niewypał. Dane muszą być oczywiście wysyłane w chwilach wyznaczanych przez opróżnienie...
Witam wszystkich Forumowiczów. Szczerze mówiąc to moja pierwsza tak poważna przygoda z asemblerem...ale do rzeczy...znalazłem na necie programik który przekształciłem na swoje potrzeby. Program ten jest odpowiedzialny za odbieranie łańcucha znaków (tekstu złożonego z ok. 15 znaków) przesyłanego z modułu Bluetooth (wt11) do interfejsu USART (w trybie...
Procedury odbioru danych z UARTA sa 4 i wszystkie identyczne: Wydaje mi się, że wszystkie te procedury nie są zbyt obciążające. Co o tym sądzicie? Zakładając że rx0_index jest typu 'volatile' można zrobić coś takiego : [syntax=c]interrupt [USART0_RXC] void usart0_rx_isr(void) // a co to za konstrukcja? { register char data = UDR0; register uint8_t...
od jakiegoś czasu mam taki problem ze po jakimś czasie kończy się net (radiówka) i komputer zawiesza się co chwile na parę sekund.w dzienniku zdarzeń pojawialy się komunikaty: Protokół TCP/IP osiągnął limit zabezpieczeń ustalony dla liczby równoczesnych prób połączeń TCP. Bufor cykliczny przechowujący przychodzące dane myszy jest przepełniony (rozmiar...
Jeżeli ja mogę dorzucić swoje dwa grosze. Ja obsługę tego termometru robię zazwyczaj na maszynie stanów, którą umieszczam w przerwaniu od timera. Timer zazwyczaj wywołuję co 10 ms i on mi generuje nazwijmy to tyknięcia zegarowe, dla funkcji sprawdzającej stan klawiszy i do wspomnianej maszyny stanów. W main() w nieskończonej pętli mam zrobioną maszynę...
... mam pieknie dzialajacy kod, wykorzystujacy 2 przerwania i obslugujący cykliczny bufor we i wy. Dzięki temu trzeba się tylko zajmować wpisywaniem do bufora przy nadawaniu i ew odczytywaniem przy odbiorze. Dzięki przerwaniom uC wogóle nie jest obciążony operacjami na UART ;) .... ale niestety tylko w asemblerze ;)
[url=http://8052.com/codelib/files/efdUa... UARTa z buforami cyklicznymi - projekt ze strony 8052.com - sam nie używałem, ale możesz sprawdzić. Kod podobny do tego, który pokazałeś, ale na oko dużo lepiej dopracowany ;) Na początek zacznij od pollingu, bez przerwań, nie uruchamiaj wszystkiego na raz. Poza tym w keilu masz przecież świetny...
Witam ! Pytanie pewnie trywialne, ale ja odpowiedzi nie znam. Chce nawiązać komunikację pomiędzy dwoma AVR'ami. Programowane w Bascomie. Czy to się robi tak, że w przypadku SPI, jak i UART, jeden uC nadaje, a ten odbierający po odebraniu wywołuje przerwanie które odbiera bajt z bufora i przypisuje do jakiejś zmiennej ? Bo jeśli nie i odbiór następuje...
Przechodzą do sedna, jak zaprogramować transmisję żeby układ pierwszy nadawał wtedy gdy układ drugi czeka na sygnał Nie za bardzo rozumiem... Jaki masz tutaj problem? Najzwyczajniej w świecie jedna Atmega odpytuje drugą. Najprościej i najszybciej zrobić to z użyciem znaków ASCII: - wysyłasz np"1" - odbierasz odpowiedź - wysyłasz np"2" - odbierasz odpowiedź...
Charakterystyczną właściwością bufora cyklicznego (kolejki FIFO) jest to, że wskaźniki początku i końca (odczytu i zapełniania) przemieszczają się niezależnie - każdy w swoim tempie. Stąd w Twoim programie indeksy powinny być niezależnymi zmiennymi globalnymi/statycznymi. Przypisanie liczniku=usartbufferlicznik zakłóciłoby normalny tryb pracy bufora...
Witam wszystkich mam do was nietypową i zarazem trochę głupie pytanie czy pomoglibyście mi odpowiedzieć na takie pytania 1 co chroni atmegę przed nagłym spadkiem napięcia, jak działa 2 bitbanging 3 transmisja różnicowa, zalety 4 bufor cykliczny 5 rtos z wywłaszczeniem i bez - różnica 6 warstwa fizyczna do spi 7zasilanie z 1-wire 8 wysłanie danych przez...
Impedancja wejściowa około 2Mohm dla kanału 2 i ponad 0,5Kohm dla kanału 1. Nie stosuję interpolacji. (po co?) Wyniki z ADC są odpowiednio zamienione na dane które strawi LCD 1. Co do impedancji wejściowej interesowało mnie głównie czy znasz szacunkowo pojemność wejściową i czy podejmowałeś się sprawdzenia jej wpływu na wynik pomiaru np przez obserwację...
/* Autor: Miroslaw Lach Kontakt: mrqchip(at)op.pl lub mrq5(at)wp.pl Warunki uzywania oprogramowania ------------------------------- Oprogramowanie ponizsze jest oprogramowaniem darmowym, z zastrzezeniami ponizej. Autor wyraza zgode na bezplatne wykorzystanie oprogramowania, tak w czesci,jak i w calosci, w dzialalnosci gospodarczej i na uzytek...
praca cykliczny samsung cykliczny odwołać cykliczny
irfz44 zamiast karta pamięci uszkodzona siada napięcie przetwornicy
wybor lodowki polar wyczyść filtr
Bull 624 ESA - Błąd U1.02, brama nie przesuwa się Skracanie przewodu grzewczego - czy to możliwe?