[syntax=c]RCC_APB2PeriphClockCmd(RCC_AHB... ENABLE);[/syntax] Zdecyduj się, czy konfigurujesz szynę APB2, czy AHB?
[syntax=c]if (poz_odczyt > ROZMIAR) { poz_odczyt = 0; }[/syntax] tablice w C są indeksowane od zera. Jak masz rozmiar = 3 to ostatnim indeksem tablicy jest 2. Powyższy kod powinień więc wyglądać tak: [syntax=c]if (poz_odczyt > ROZMIAR - 1) { poz_odczyt = 0; }[/syntax]
Nie pokazałeś całego kodu. W obsłudze przerwania nie stosuje się numerów z LCD i czymkolwiek czasochłonnym. Co do realizacji odczytu USART w przerwaniu to podpowiedź brzmi " bufor kołowy". Dodam też że po około 30min wysypują też się atmego8A, No ja się wcale temu nie dziwię, w ogóle nie dbasz o zapisanie SREG ani używanych rejestrów w obsłudze przerwania.
Odbiór danych o nieznanym rozmiarze przez DMA jest bardzo problematyczny... Ponieważ włączyłeś tryb "circular", to w zasadzie jedyna opcją jest późniejsze składanie danych w dodatkowym buforze - będziesz musiał skopiować to co jest na końcu bufora DMA i potem to co jest na początku - tak aby dane znów były w poprawnej kolejności. DMA realizuje po prostu...
Witam, Zwracam się z prośbą o pomoc przy moim projekcie. Tematem projektu jest obsługa termometru DS18B20 poprzez interfejs USART pracujący w trybie half duplex z przerwaniami i buforem kołowym. Wyszukiwanie urządzeń na magistrali 1-Wire, odczyt co zadany interwał pomiarowy podawany w milisekundach. Wiem mniej więcej, jak obsługiwać ten termometr poprzez...
Całego bajtu- i wtedy odczytujesz go w czasie pojedynczych us. Mało tego- możesz to zapisać w bufor kołowy i odczytywać po kolei.
Dzień dobry, To mój pierwszy post tutaj (jeśli jest w złej kategorii to proszę powiedzieć). Z góry mówię że w elektronice jestem BARDZO początkujący więc jeśli ktoś zdecyduję się odpowiedzieć to poproszę BARDZO prostymi słowami. Mam następujący problem. Mam zrealizować następujące zadanie -> za pomocą płytki STM32 NUCLEO-F401RE mam dokonać pomiaru temperatury...
Mam następujące zadanie; stworzyć projekt na laboratoria z mikroprocesorów. Męczę się z tym już od początku semestru i szczerze nie mam pojęcia gdzie robię błędy. Liczę na moc internetu i oczywiście odpłatnie na pomoc. Pełna specyfikacja projektu: 1. Komunikacja z komputerem za pomocą interfejsu USART z buforem kołowym. 2. Zaprojektowanie i implementacja...
OK, dzięki. Ale chodziło mi o coś porządnego. Np. dla usart: aby było na przerwaniach, oparte na buforze kołowym, z pełną sygnalizacją stanu transferu w przerwaniach. To co jest na stronach Atmela to jakieś przedszkole.... To tylko przykład podany przeze mnie dla usart. Z innymi peryferiami jest podobnie... Pozdrawiam.
Witam. Mam za zadanie zaprojektowanie i oprogramowanie protokołu komunikacyjnego pozwalającego na odczyt/zapis zadanych parametrów. Komunikacja z PC ma się odbywać po USART z użyciem przerwań i bufora kołowego. Jeżeli chodzi o bufor to będę opierał się na tej stronie: http://www.embeddeddev.pl/bufor... wiem od czego mam zacząć....
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ż...
Niektóre z funkcji faktycznie zawierają pętlę oczekującą na zwolnienie magistrali: [syntax=c] while ( TWI_Transceiver_Busy() );[/syntax] Autorzy założyli, że można będzie użyć tej funkcji w dowolnym momencie, niestety powoduje to, że kiedy wywołamy funkcję, kiedy magistrala jest zajęta, to będzie ona czekała na zwolnienie magistrali, co wprowadza czasami...
Ja kiedyś na AVRku zrobiłem bufor kołowy zapis do końca bufora a potem od zera. Jeden wskaźnik na zapis do bufora (wyzwalanie pomiaru z timera), jeden wskaźnik na odczyt (w wolnej chwili procesora) zapis inkrementował jedną zmienną a odczyt wysłanie RSem dekrementował (jak zmienna za wysoko urosła to przepełnienie bufora (usart się nie wyrabiał ) Ograniczenie...
Jeśli możesz użyć biblioteki to polecam http://homepage.hispeed.ch/peterfleury/a... jeśli nie to możesz się na niej wzorować. Ma bufor kołowy, odbiór/nadawanie w przerwaniach, przykład z parsowaniem danych też znajdziesz w google. Wyświetlając komunikat zachęty powinieneś ustalić ściśle akceptowalny format, np. Time:RR-MM-DD-GG-MM-SS,...
Fatalna wiadomość? Kurcze, nawet nie wiedziałem, że od kilku lat miałem problem :D 1. Pokaż ten program nadający znaki - możliwe, że jeśli nie masz nadawania opartego na buforze kołowym i przerwaniach to znaki nie są upakowane maksymalnie gęsto. 2. Jeśli znaki są odbierane z opóźnieniem po stronie ETHERNETU (znaczy badasz ich odbiór za konwerterem uart->ethernet)...
Chciałbym pomóc, ale... 1) Jak skonfigurowales DMA? Czy co koniec transmisji alokujesz nowy bufor i stawiasz tam wskaznik DMA? Czy może masz dwa bufory (ping-pong) i jeden przetwarzasz gdy w drugi DMA ładuje dane...? Ja na twoim miejscu wykorzystałbym właśnie ping-pong. W przerwaniu od DMA[TCIF] przelaczałbym tylko wskaznik na bufor i rekonfigurował...
To dodawanie na końcu znaku null rzeczywiscie nie jest potrzebne. Moge je przeciez dodać wtedy gdy potrzebuję. Niekoniecznie to zmniejszy ilość taktów potrzebnych na wykonanie procedury. Żeby wiedzieć, kiedy wstawić znak NULL, a kiedy nie, będziesz musiał sprawdzać jakiś warunek, a to też skonsumuje kilka taktów, oby nie więcej, niż zyskasz. No chyba,...
Jeśli nie chcesz zawieszać procesora to rób odbiór w przerwaniu i w formie bufora kołowego. Dodano po 47 Kolego na szybko napisałem Ci taki przykład obsługi takiego przerwania. Zakładam że znasz zasadę działania bufora kołowego bądź jesteś w stanie sobie doczytać w necie jego działanie. [syntax=asm] .dseg rxbuff: .BYTE 16 //bufor kołowy na odebrane...
Klepnąłęm kawałek kodu na STM32F0x dla obsługi transmisji uK=>PC. Jednak pojawił się dziwny objaw. Może ja nie widzę błędu.... Warto aby ktoś zerknął w ten kod: #define TBUF_SIZE_UART2 128 struct uart2_tx_buf_st { u16_t in; /* indeks zapisu */ u16_t out; /* indeks odczytu */ u16_t dat; /* licznik danych w buforze */ char buf [TBUF_SIZE_UART2];...
I bufor kołowy właśnie jest wykorzystywany w bibliotece Atmela :) (at)Piotrus_999 - uważasz, że powinienem napisać tutaj własne funkcje do obsługi uarta? Panie Tomku - rozumiem zamysł, poprawię kod :) Powiem może dokładniej co mam do zrobienia i dlaczego uparłem się na tę bibliotekę Atmela. Trochę mi nie wychodziło stąd wróciłem do początku żeby sobie...
Obróbkę danych GPS jak najbardziej zostaw w przerwaniu, ale dorzuć zabezpieczenia przed przekroczeniem długości. Nie przesadzaj z tymi buforami "kołowymi", o ile masz gwarancję, że zdążysz przed następną porcją danych. Kod, który wkleiłeś, obejrzę nieco później,
Witam kolegów, mam dość dziwny kłopot. Poniższy program zawiera jedynie procedury służące do komunikacji Atmega16 z PC. Jest tu obsługa wejściowego i wyjsciowego bufora kołowego o pojemności 255znaków. Pętla główna jest w zasadzie pusta. W celu przetestowania każdy przychodzacy znak jest dodawany do bufora wyjściowego i odsyłany (echo). Program testuje...
jeeeez!!... "czegoś mi tu brakuje" jest chyba zbyt ogolnym stwierdzeniem aby cokolwiek pomóc... Zrobilem sam na dokladnie tych samych STMach conajmniej 5 roznych interfejsów CAN<->UART i za tydzien bede robic kolejny... Więc mogę podpowiedzieć: 1) TXuj UARTa przez DMA. Tylko. Zawsze. Najzawszej... 2) Tego UARTa TXuj przez DMA z bufora kołowego....
A po co w ogóle chcesz ręcznie wywoływać przerwanie od nadania? Wrzuć po prostu dane do TDR to się samo wywoła w odpowiednim momencie. [syntax=c]volatile unsigned charut0_mst=0, ut0_sta=0, ut0_end=0, ut0_buff[32]; //pomocnicze dla nadajnika/odbiornika rs //bufor kołowy nadajnika void rs_tx(uint8_t data) { TX_1;//led tx //ltx0=2; EnterCritical(); if(!ut0_mst)...
Nie jestem pewien zapisu USART1->CR1 |= USART_CR1_RXNEIE w main Tzn jeżeli coś wysyła mi dane, to automatycznie pojawia się informacje o tym w rejestrze ISR? jeśli tak to czy powinienem w main sprawdzać tę flagę i włączać przerwanie od odbioru czy nie ma to znaczenia i od razu bez żadnego sprawdzania włączam przerwanie na odbiór a potem przerwanie...
https://obrazki.elektroda.pl/5705909000_... NA WSTĘPIE Wiem, wiem, ktoś zaraz powie, że układów aktywnego obciążenia nie sposób zliczyć i kolejny taki projekt przyczynia się do klęski urodzaju… 8-) Mimo wszystko chciałbym przedstawić projekt aktywnego obciążenia. Aktywne obciążenie samo w sobie nie jest czymś szczególnym, ale...
Teoretycznie wiem chyba jak to zrobić, ale nie potrafię tego praktycznie wykorzystać Przedewszystkim odbieraj dane w przerwaniu ISR(USART1_RX_vect) // przerwanie do odbioru znaku i zapisu do bufora { bufor[ilosc_znakow]=UDR1; ++ilosc_znakow; } GPS bezprzerwy sra danymi, praktycznie tylko dobierasz od niego dane. Najprosciej...
Nie rozumiem również linijki w usart_getc: UART0_RxTail = (UART0_RxTail + 1) & UART0_RX_BUF_MASK; Po co ta maska? Zajrzyj do przykładów z dokumentu o którym wspomniałem, tam jest opisany przyklad takiej funkcji getc z prawidłowo użytymi indeksami. Wyjaśnię za autora. Masz tablicę 2*N elementową, maska (N jedynek) w tym przypadku ogranicza zasięg i...
bufor kołowy bufor usart bufor kołowy stm32
iskrownik ustawić odzyskanie certyfikatów zjawisko naskórkowości
spotter blacharski kosiarki spalinowe najlepsze
Ford Focus C-Max 2004: Problemy z elektryką po wymianie żarówek na LED Krups ekspres do kawy - migające lampki, co robić?