do zmiennych takich jak PORTx, PINx,DDRx podchodzi się w sposób bitowy (atomowy) Tak dla ścisłości atomowy IMHO nie oznacza dostępu bitowego. Mówimy o jakiejś operacji, że jest atomic (atomowa) jeśli jest niepodzielna, nieprzerywalna.
Tak przy okazji tematu jeszcze ;-) Jak rozumiem za pomocą bitbandingu można sobie zorganizować lepszy dostęp do flag programowych niż za pomocą pól bitowych? Tzn. bez R/M/W? Dokładnie tak, w 100% atomowy dostęp. Oczywiście 1 bitowa wersja flag, bo pola bitowe jak wiadomo bywają wielobitowe ;)
A nie prościej byłoby zablokować przerwania na czas modyfikacji? Te mechanizmy (STREX) są raczej przeznaczone do komunikacji w systemie wieloprocesorowym. Prościej na pewno. Ale wraz ze zmianą platformy sprzętowej na lepszą także programowo należy iść do przodu. Dlaczego na takim 32 bitowym sprzęcie nie korzystać np. z wątków? Albert
Freddie: Dostępy bitowe BitBand są atomowe z perspektywy procesora lub DMA, nie mamy jednak podstaw do twierdzenia, że są one atomowe z perspektywy peryferiali. Nie wydaje mi się, by mechanizm BitBand gwarantował, że sprzęt nie zmodyfikuje bitu w rejestrze peryferiala w tym samym czasie, gdy interfejs szyny będzie wykonywał na tym rejestrze operację...
Przy okazji zapytam: może mi ktoś wyjaśnić co oznacza bit-banding? Bo z dokumentacji STMa nie mogę do tego dojść. I jeszcze dostęp atomowy, bo według nich to dostęp do pojedynczych bitów, a zawsze myślałem że to operacje nieprzerywalne.
p.s. W systemach wbudowanych raczej unika się deklarowania zmiennych jako int. Najlepiej deklarować zmienne jako uint16_t, int8_t itp. W systemach 8-bitowych użycie zmiennej typu uint16_t nie gwarantuje atomowego do niej dostępu.
Dobrze kombinuję? Dobrze. Czyli jak wyłączę przerwania przed modyfikacją (asm ("di")), dokonam modyfikacji, a potem włączę, to nie ma prawa się nadpisać, tak? tak Czyli co - lepiej w tej sytuacji byłoby korzystać ze zmiennych globalnych zamiast pól bitowych? Trochę marnotrawstwa, ale większa pewność? Musisz mieć po prostu atomowy dostęp (; Czyli albo...
Uwaga, będzie trudne. Zamiast dwóch szesnastobitowych zmiennych volatile mam jedną 8 bitową. Jak chyba wiesz dostęp do takowej jest atomowy. Poza tym w wersji z x masz dwa dostępy do 2 bajtowych zmiennych volatile do odczytu i dwa do zapisu. prawie w każdym wywołaniu przerwania. W mojej wersji wystarczy 1 dostęp do odczytu ( i to bajtu) oraz co kilkaset...
(at)marek-czarny Programowanie nie jest dla osób szybko się irytujących. Rozwiązując problem, rozwiązuje się go po kolei. Obsługa LCD wprowadza znaczące opóźnienia, zapewne w kodzie tych funkcji masz delay lub oczekiwanie na jakiś stan. Efektywnie odpowiada to sytuacji w której delay, w dodatku losowy, wpakowałbyś do pętli głównej. Może tego nie dostrzegasz,...
Przeczytaj mojego posta wyżej. Jeśli chcesz sobie brnąć dalej w pola bitowe, to proszę bardzo. Traktuj moje posty jako ostrzeżenie dla szerszej publiczności, która na podstawie dwóch spojrzeń będzie sobie sama mogła zdecydować czy woli kod który używa jednego bajtu mniej i zajmuje więcej flash (a do tego najeżony jest problemami data race), czy może...
Witam W ostatnim czasie próbuję zapoznać się bliżej z procesorem ATxmega64B3. W ramach testów zająłem się tematem flag (czyli zmiennych bitowych), które mogą być zmieniane zarówno w pętli głównej jak i w przerwaniach. Jak wiadomo temat ten ściśle związany jest z zagadnieniem zapisu/odczytu atomowego. Ponieważ bitowy zapis/odczyt atomowy najłatwiej jest...
Jeśli nie zablokujesz przerwań na czas dostępu do flag z poziomu aplikacji, to jeśli ta sama komórka pamięci będzie modyfikowana z poziomu handlera przerwania, to zawartość zmiennej się całkowicie "rozjedzie". Dlatego, że operacje te nie będą atomowe. Problem rozwiąże umieszczenie zmiennej w obszarze dostępnym dla cbi/sbi, bo wtedy zmiana stanu flagi...
A dlaczego zamiast zmiennej data nie użyć struktury, która składa się z dwóch kawałków: dataH i dataL? W przerwaniu wykonujemy dwie atomowe operacje odczytu rejestrów do stosownych części struktury, a w programie głównym używamy całej struktury. Ale to nic nie zmieni. Co prawda w przerwaniu przepisanie danych do struktury będzie poprawne (ale ono zawsze...
Tzn. nie atomowe było by przepisywanie po jednym bicie, a nie sama pojedyncza operacja "BITBAND(&GPIOA->ODR, 5) ^= 1;" ? Najpierw musi odcztać ten bit, potem zxorować a następnie zapisać. Pomimo tego że zapisałeś to w C w jednej operacji nie oznacza to że tak to będzie zrealizowane w programie. Czyli operacja or, z bit bandingiem: "BITBAND(&GPIOA->ODR,...
Trochę nie na temat, ale nie uważasz, że nowe Megi to pudrowanie trupa? Chodzi o stosunek ceny do możliwości. Nie dziwię się, że Mega nie ma DMA, bo i niby po co? Gdzie stworzyć bufory dla DMA, np w przypadku LCD? Jak sensownie wykorzystać RTOS? Na te zadania potrzeba RAM. Jedyny sensowy Mega to 1284 z 16kB RAM. Tam DMA coś by dało a tak mamy przerwania...
"kontroler przerwań" nazywa się NVIC, ma coś takiego jak tail-chain przydatne gdy dwa przerwania przychodzą blisko siebie. Thumb2 - lepszy DMIPS/MHz i DMIPS/mW architektura harvard sprzętowe mnożenie i dzielenie dla procesorów ST teoretycznie pozwala na prace z prędkością 2x większą niż pamięć flash (u innych producentów pewnie też) dodatkowo u ST (u...
Jak już ci kiedyś pisałem blok z forceon zawsze kończy się z włączeniem przerwań, a nie przywróceniem ich stanu sprzed ATOMIC_BLOCK, stąd też działa to szybciej bo nie trzeba zapamiętać ich poprzedniego stanu. RESTORESTATE z kolei najpierw zapamiętuje stan przerwań, blokuje je i na koniec odtwarza zapamiętany stan - może się więc zdarzyć, że po zakończeniu...
Ilość próbek jeszcze nie jest dokładnie określona, więcej oznacza większy zakres możliwości zastosowania, około 500 na ADC raczej będzie trochę za mało, około 1000 na ADC będzie zadowalające - czyli przydałoby się móc zapisać z 8kB danych (możliwość zapisania ze 2X więcej będzie użyteczna - to pozwoli zachować gotowość do dalszego zbierania danych po...
A teraz obliczenia: Taktowanie procesowa 1MHz, preskaler 8 daje 125kHZ co przekłada się na czas impulsu równy 0,000008s . Ustawiając OCR2 na 200 nasze przerwanie będzie wykonywać się co 0,0016s co daje 625 przerwań na sekundę Problem w tym, że najprawdopodobniej bardzo rzadko spełniają się warunki porównujące wartości liczników w ifach czyli odswiez_wyswietlacz==312...
.......... BTW, to, że one pracują w innej domenie zegarowej i dostęp jest asynchroniczny nie ma nic do rzeczy. Hmmmm :?: :?: :?: Nawet jeśli te rejestry byłyby w tej samej domenie i dostęp byłby synchroniczny do CPU to jeśli masz kilka (więcej niż jeden) rejestrów, które stanowią jakąś formę licznika, to dostęp do nich wywoła dokładnie te same problemy...
Powrót małorolnego człowieka, a moderator burdel teraz zrobił. Zamiast zostawić potrzebne posty, to temat przeniósł do ??? Jaki mikrokontroler wybrać do... ??? Co to ma wspólnego z założonym tematem ? Jakiś nieogarnięty w temacie... Tylko spójrzmy na to obiektywnie - co kolega tymon_x sprawdził ? żeby nie było niedomówień! Otóż sprawdził (przepraszam...
Zakładając, że realizujesz np. bufor do którego można tylko dodawać nowe elementy z jednego końca i usuwać z drugiego. Potrzebujesz dwa wskaźniki - początku i końca bufora. W takiej sytuacji sam bufor nie musi być volotile - w ISR tylko dodajesz element, a w programie tylko pobierasz. Lecz w obu miejscach używasz wskaźników, które są modyfikowane i...
Chyba zaczyna się ujawniać wyższość procesorów o możliwie długim słowie danych - nawet operacje 32 bitowe będą atomowe. Nie będą niestety o ile operacja RMW będzie realizowana przez kilka rozkazów, które mogą być przerwane. Będzie natomiast w systemie, który będzie modyfikować pamięć jednym rozkazem, który nie może być przerwany (a często mogą być...
https://obrazki.elektroda.pl/2220939900_... Mikrokontrolery AVR cieszą się niezmienną popularnością, ze względu na swoją prostotę, a jednocześnie spore możliwości. Co ciekawe, mimo, że od lat wszyscy wieszczą rychłą śmierć mikrokontrolerów 8-bitowych, mają się one ciągle dobrze, a kolejne, nowe rodziny są wprowadzane na rynek. Jakiś...
U mnie (Katowice) z DCF77 nie ma problemu, oczywiście zdarza się, że przez jakiś czas nie działa, ale przecież nie musi - wystarczy że złapie sygnał od czasu do czasu. Z tego co zauważyłem, to strasznie przeszkadza w odbiorze DCF77 komputer. Kiedy miałem zasilane układy przez USB to generalnie był problem, gdy je zasilałem osobno - z sieci lub z baterii...
Makrosik: masz racje, moje niedopatrzenie. Rzucilem okiem na przyklad nie patrzac na dokladna realizacje. Niemniej twoj przyklad jest niezyciowy, bo powoduje gubienie przerwan - jesli licznik jest rowny 0 i nastapi kolejne przerwanie to nie wplynie to na licznilk. Takze powinna byc raczej inkrementacja licznika i jesli jest on rozny od 0 to nastepuje...
Hej, To jest rejestr, do którego dostęp wymaga dwóch zapisów/odczytów. Jesteś pewien? Gdzie znajduje się taka informacja? Datasheet milczy na ten temat. Mówi jedynie, że rejestr CAL zawiera 8 najmłodszych bitów 12-bitowej wartości kalibracji CAL natomiast w w bajtach produkcyjnych mamy zarówno LSB i MSB dla wartości CAL. Użyj rejestrów GAINCORR0/1 i...
Widzę, że powoli pomysł społeczny rusza. No dobra, to ja zbiorę troszeczkę linków na temat układów scalonych i innych elementów systemu. Co do pamięci ROM w środku. Raczej nie sądzę, żeby coś wyszło z dostępu do tej części układu, bo pewnie ściśle tajne informacje tam przechowują (hehe, pewnie kody dostępu do wyrzutni atomowych), a tak na serio, to...
Ponieważ dopuszczalne są też pytania z dziedziny, być może tych niemądrych Bynajmniej nie jest to żadne "niemądre" pytanie. Jest bardzo dobre i pokazuje właśnie jak bardzo zmitologizowane są RTOSy. czy taki STM32G070RBT6 z 36 KB ram oraz 128 KB flash (w detalu ok. 5.5 zł) to już się nada czy nie do RTOS? Jak najbardziej. Ilość flash jest zwykle mało...
To pytanie człowieka, który pierwszy raz dotyka problemu standardów branżowych. Identycznie jak z wyższością świąt.., oraz innymi normami, zaleceniami, standardami. Pomijając nawet fakt, że potrzeby rożnych odbiorców standardu się różnią i to co jedyni uważają za spełnienie marzeń, inni za ledwo wystarczające. Również ma znaczenie konkurencja pomiędzy...
Ja robię wyświetlanie w oparciu o transakcje - jest to może nadmiernie skomplikowane jeśli mówimy o alfanumerycznym LCD, ale ma zalety- m.in. łatwa synchronizacja, wysyłanie do LCD tylko tego co jest potrzebne, dostęp do LCD z różnych wątków. Możesz przybliżyć tę ideę transakcji? Jeśli kontroler jest naprawdę szybki to problem znika, jeśli są jakieś...
(at)ElektrodaBot Ta wersja wygląda najlepiej. Zweryfikuj jej użycie pod kątem pracy w środowisku ESP-IDF/FreeRTOS, w tym ISR. Bezpośrednia odpowiedź Funkcja `atomic_swap_relaxed()` (zamiana za pomocą `exchange + store`) jest: • poprawna i wystarczająco szybka w zwykłych wątkach FreeRTOS na ESP32 (dla typów ≤ 32 bit), • niewskazana do uruchamiania bezpośrednio...
Dzieki rowniez za motywacje bo gdy czasem widze tutaj niektorych kolegow, wydaje mi sie ze jestem jakas tepa strzala. Generalnie do ekperymentowania wykorzystuje narazie wykopana z czasow studiow plytke [url=http://www.kamami.pl/dl/stm32butter... ta docelowa nie jest jeszcze gotowa (bo nie opanowalem narazie nawet prostych rzeczy na tym...
http://obrazki.elektroda.pl/6663356200_1... Kiedy ostatni raz mieliście okazję obserwować zjawisko w pełni kwantowomechaniczne, bez żadnej klasycznej analogii? PyPPM to urządzenie, które umożliwi taką obserwację. Jest to magnetometr protonowy, urządzenie które pozwala mierzyć rezonans protonów w polu magnetycznym Ziemi. PyPPM składa...
Problemem są twoje zmienne adcresult. Jak zwykle to bywa zapomniałaś dodać magicznego modyfikatora volatile :) oczywiscie!!! wiedziałam ze coś takiego musiałam właśnie zrobić, dzięki! juz poprawiłam zapętla się ładnie odświeżając Poza tym diodami świecisz po 50ms, niezły cyborg z ciebie, skoro to ci wystarcza :) wychodzi na to ze cyborgiem jestem bo...
https://obrazki.elektroda.pl/4013441100_... Firma AMD zdobyła zlecenie na projekt dla procesorów nowej generacji, procesorów graficznych i interkonektów w Frontier - drugim z trzech superkomputerów najwyższej klasy w USA. Całkowita wartość kontraktu, wynosząca ponad 600 milionów dolarów, jest największą do tej pory transakcją dla AMD,...
https://obrazki.elektroda.pl/6876053500_... Wiele dzisiejszych architektur powstało podczas wieloletniego procesu udoskonalania i tworzenia coraz lepszych rozwiązań, aby były one jak najbardziej doskonałe. Firmy odpowiedzialne za daną architekturę wymagają opłat licencyjnych za wykorzystanie ich dzieła w produkcie. Czy jest więc...
dostęp atomowy atomowy dostęp dostęp bitowy
wymiana wirnika bosch lodówka duże zużycie bosch chłodziarka panel
Wentylator chłodnicy Peugeot 206 2.0 HDI nie włącza się Przebicie w wiertarce Makita HP2070 - diagnoza i naprawa