W ciągu ostatnich dwóch lat w EP pojawił się cykl artykułów poświęconych programowaniu STM32 bez SPL z wieloma przykładami. A i ważna uwaga co do tekstu: w aktualnych, nowych wersjach plików nagłówkowych dla F4 już nie ma BSRRL i BSRRH, a jest BSRR (co powoduje, że programy napisane pół roku temu już się nie kompilują z nowymi plikami nagłówkowymi)....
1. Przycisków nie obsługuje się na przerwaniach portów. 2. Nie potrzebujesz do tego trzech przerwań - wystarczy przerwania timera i UART. 3. Nie zmieniaj priorytetów przerwań - jeden poziom zdecydowanie wystarczy. Nie potrzebujesz zagnieżdżania, a próbując je zrobić brniesz w ślepą uliczkę, bo 5. Ogólną zasadą jest, że w procedurze obsługi przerwania...
Proszę o informacje, gdzie w nocie katalogowej można znaleźć informacje na temat priorytetów wykonywania przerwań, jeżeli wystąpią w tym samym czasie. Nie można, ale ten co ma niższy adres w tablicy wektorów wykona się pierwszy jak przyjdą w tym samym czasie. Co najwyżej możesz właczyć przerwania na początku obsługi aby umożliwić obsługę kolejnych...
Niektóre modele uC z rdzeniami Cortex mają mechanizm sprzętowy gwarantujący determinizm czasu odpowiedzi dla jednego przerwania o najwyższym priorytecie, np. nowsze modele serii LPC11xx NXP. To ci feature ;-) Nie sądzisz, że ten "mechanizm" mają praktycznie wszystkie 8 bitowce a nie tylko nowsze? Co więc jest zaletą Cortexa, że proponujesz zamienić...
Wskazany w linku debugger to zapewne JLink ale za cenę niespełna 10 $ to napewno nielegalny klon :) Jeżeli chcesz poznać LPC'ki i mieć debugger to wejściami . Kiedyś zapomniałem o tym fakcie i dziwiłem się dlaczego program nie działa tak jakbym się tego spodziewał.
SimpleMAC ma możliwośc obsługi do 10 węzłów, Ja bym nie był taki pewny :) Panowie z EP napisali coś, o czym nie mają pojęcia. Każde urządzenie (każdy MCU) ma własny, unikalny numer (wykorzystywany w przykładowej aplikacji jako long address) - 8 Bajtów. Dodatkowo (w przykładowej aplikacji solar-system.c) adres tzw. krótki programiści ustalili na UINT16....
To systemowe przerwanie bedzie mialo mniejszy priorytet tylko w przypadku > 0010_1000 i nie bedzie podzialu na pre i sub priorytety ? Dokładnie tak. The combination of the group priority and the sub-priority is referred to generally as the priority. Grupowanie działa tylko na zewnętrznych przerwaniach i powoduje, że przerwania z tej samej grupy nie...
https://obrazki.elektroda.pl/6446769600_... Wraz z dostępnością coraz większych mocy obliczeniowych oraz pojemności pamięci, często słyszałem narzekanie, że teraz programy nie są optymalizowane, tak jak kiedyś . Programiści idą na skróty, korzystają z bibliotek a kiedyś to było :) Czasami było to prawdą i łatwość tworzenia oprogramowania...
Witam, Proszę o opisanie jak napisać program z przerwaniem korzystając z rejestrów (nie gotowych bibliotek). Używam języka C (Asamblera nie jestem w stanie oswoić). We wcześniejszych (ARM7) dla każdego kanału jest rejestr definiujący początkowy adress kodu, gdzie jest kod tego przerwania. W Cortexach nie ma tych rejestrów, jest tylko jeden NVIC_Offset...
Zamieniłeś nienajmłodzszy, ale jeszcze nie przestarzały LPC17xx na zabytkowy, głupszy i trudniejszy LPC21xx. Taki sobie pomysł... LPC17xx występują w obudowach 80- i 100nóżkowych LQFP, które łatwo lutuje się ręcznie. Stałe zapisuj sobie jak chcesz, tylko nie oczekuj potem, że ktoś będzie analizował Twoje szyfry. Tak napisany program nie daje się czytać....
Wg mnie się da - http://infocenter.arm.com/help/index.jsp...
Mikrokontrolery 32 bitowe zawojowały rynek, jednakże ich 8 bitowi przodkowie nadal są równie popularni na rynku, co 32 bitowe układy. Układy 32 bitowe o szerokim wachlarzu peryferiów, są idealnymi kandydatami do wielu aplikacji, co tłumaczy czemu są tak popularne wśród projektantów systemów elektronicznych. Projektanci wiedzą, że kompleksowe i skomplikowane...
Pomysł już był - procesor idzie spać i nie ma żadnych innych przerwań oprócz tego najistotniejszego. Być może da się to zrobić tak, że wszystkie inne czynności uda się przenieść do obsługi tego przerwania, np. jeśli wiesz, że pomiędzy przerwaniami nie przepełnisz FIFO UARTa (bo np. ten, kto współpracuje z Tobą nie będzie nadawał danych bez opamiętania),...
Tu nie chodzi o sam potok Cortexa, a o to, że sterownik przerwań jest wolniejszy od samego procesora, więc skasowanie przerwania zajmuje zapewne nawet kilka cykli zegara procesora. Cortex nie zdejmuje ze stosu rejestrów na końcu przerwania, jeśli ma zgłoszone przerwanie, więc ten powrót z przerwania na końcu procedury w praktyce nawet się nie wykona,...
Na Cortexach i MSP430 nie ma takiej potrzeby - procesor po zainicjowaniu peryferiów usypia w takim trybie, że po powrocie z przerwania śpi i nie rusza ani instrukcji dalej. W Cortex nazywa się to SleepOnExit.
Ciekawe czy to ma szansę, i do ilu MHz, do 60 MHz na przykład (na LLC)? Samo wejście i wyjście z przerwania (nie licząc ŻADNEGO KODU) to 12 cykli zegara. Tak więc przy 80MHz zegara rdzenia przerwania zewnętrzne z częstotliwością ledwo kilku MHz zasadniczo zajmą Twój układ w 100% samym wchodzeniem i wychodzeniem z przerwań.
Wersje Cortex nowsze od starego, pierwszego M3 mają zawsze domyślnie włączone wyrównanie, często bez możliwości wyłączenia. Na starym M3 (STM32F1xx) najlepiej jest włączyć w module startowym, zaraz po resecie, i zapomnieć o problemie i dziwadłach typu "interrupt". Wyrównanie jest potrzebne dla konwencji wołania ARM, a brak wyrównania odbija się czkawką...
Jeśli mówimy o ATmega, to najmniej czasochłonnym sposobem nadawania jest użycie SPI, a wtedy trzeba generować ponad 300.000 przerwań na sekundę, co jest niemożliwe do obsługi, zstaje więc aktywne oczekiwanie na SPI z zablokowanymi przerwaniami. Każdy inny sposób transmisji na ATmega (bibang) również wymaga zablokowania przerwań na czas transmisji do...
A nie prościej byłoby zablokować przerwania na czas modyfikacji? Te mechanizmy (STREX) są raczej przeznaczone do komunikacji w systemie wieloprocesorowym.
O stosie piszesz herezje, o nakładaniu przerwań też. Ja tylko zauważyłem, że Cortex M0 (LPC1114) ma ghosty na irq (PIO) i jest możliwe krótko po sobie manie przerwania po mimo że układ zewnętrzny sprokurował jedno. Dodałbym że CM0 jest przetaktowany na 60Mhz i po zmniejszeniu częstotliwości do 20Mhz jest dokładnie to samo :P Moim zdaniem jest jakiś...
I wszystko Ci od początku ze sobą gadało? Mi moduł nawet preambuły nie wykrywa - włączyłem przerwania enswdet, enpreaval, enpreinval i nic się nie dzieje mimo, że nadajnik wysyła pakiety z 64 niblowymi preambułami itd.
LD PC, [PC, #-0x0ff0] oznacza, że do PC zostanie załadowana zwartość komórki pamięc spod adresu PC - 0x0ff0. Ponieważ owa instrukcja leży na początku pamięci odjęcie od PC -0x0FF0 spowoduje ze powstanie "ujemny" w postaci 0xfffffxxx. Jeśli LDR PC ... będzie leżalo na adresie 0xF0 po odjeciu 0xff0 wyjedzie wynik 0xfffff100 czyli adres początku tablicy...
Ad. 1 A to po co ? Co to ma niby robic ? i= (i<<3) + (i<<1) + (*string - '0'); Sprobuj zrzutowac na const char* to nie powinno byc warningow. Ad.2 A masz globalnie przerwania wlaczone ? I jakbys mogl sprecyzowac co oznacza "cos nie do konca chodzi" ?
Dobra rada: nie rób tego w aplikacji. Był już kiedyś wątek nt. bootloaderów dla Cortex - odszukaj i poczytaj, znajdziesz tam prawie wszystko. Powrót z aplikacji do bootloadera w sposób inny, niż przez programowy reset, to też nieszczególnie szczęśliwy pomysł.
No tak, kwestie w których musiałbyś mi przyznać rację sprytnie ominąłeś :) Niech tak będzie. To nie tak :). Po prostu miałem mało czasu na napisanie postu i musiałem go trochę skompresować. tmf, ja bardzo sobie cenię Twoją wiedzę w dziedzinie AVR 8-bit, naprawdę. Ja po prostu chciałem podyskutować, wiesz, żeby się coś działo ;). Nie miało być napastliwie,...
Przerwania i wyjątki używają 'Main Stack'. Po resecie procesor Cortex jest w 'Privileged Thread Mode', chcąc pozostać przy jednym stosie ustawiamy 'Main Stack'. W skrypcie linkera: [syntax=script]__main_stack_size=1024 __process_stack_size=0 [/syntax] W startupie inicjalizujemy: [syntax=asm]Reset_Handler: ldr sp,=_estack [/syntax] I na tym poprzestajemy....
Gdzieś znajdziesz dokładne info, ale wejście to chyba ~12 cykli, a wyjście to chyba ~6. Tak więc generalnie same te operacje zajmują tak ze ~12-18 cykli, +/- oczywiście. 4\/3!! Wg UM rdzeń arm powinien obsłużyć przerwanie w ciagu 15 cykli. (3.5.28 IRQ latency register). Dotyczy to rdzeni ARM Cortex M0. Troszkę mnie to zdziwiło, bo kiedyś wyczytałem,...
Cóż dużo popularnych ARMów też ma architekturę Harvardzką: https://en.wikipedia.org/wiki/ARM_Cortex... Udają tylko w dokumentacji Von neumann'a :D Michalko12, super że wrzuciłeś tego typu listę to mi podsunęło pewną myśl. A mianowicie: AVR nie są łatwiejsze niż inne uC, gdyż wykorzystanie ich możliwości (lub ominięcie ograniczeń) wymaga wiedzy porównywalnej...
skąd wiadomo że wybranie zewnętrznego oscylatora domyślnie dzieli sygnał przez 8? W dokumentacji o tym nic nie jest napisane, a dowiedziałem się o tym dopiero z forum. Jak nie jest, jak jest? Ino tylko faktycznie rozpisane jest na dwa dokumenty... Na przykład w F1, nie wiem jak jest w innych: Bit 2 rejestru CSR mówi o wyborze zegara - zegar procesora...
Czołem, Stworzyłem kilka testowych projektów, skonfigurowałem NVIC dla kilku źródeł przerwań. Wszystko działa ok, przerwania są wywłaszczane itp. Mam jednak wrażenie, że nie do końca czuję temat tak jak powinienem. Czy opowiecie mi jaka jest zależność pomiędzy priorytetami grupowymi i podpriorytetami w Cortex M3? Jak z zasadami sztuki konfigurować rejestry...
Chwilowo nie mam dostępu do urządzenia żeby podłaczyć debuger, moge korzystać wyłacznie ze zrzutu FLASH. Co do tego najmłodszego bitu to ja nie widzę w specyfikacji czy on decyduje czy procesor jest w stanie Thumb 16 bit czy Thumb 32 bit. Bardziej bym przypuszczał że to zaszłość z procesorów ARM z trybami ARM/Thumb. Według specyfikacji starych procesorów...
Sprawdź, czy w module startup masz w ogóle w tablicy wyjątków nazwę procedury obsługi tego przerwania. Kiedy ostatni raz bawiłem się AC6, generował puste tablice wyjątków. Nie ma tam nic :( tylko to: g_pfnVectors: .word_estack .wordReset_Handler .wordNMI_Handler .wordHardFault_Handler .wordMemManage_Handler .wordBusFault_Handler .wordUsageFault_Handler...
Co to do pierwszego, to przecież o tym napisałem, że to tylko nazwa, czytaj dokładnie. Nie ma to związku z ARM7, zresztą była to odpowiedź na powyższy post, gdzie podałem "i nie ma osobnego przerwania FIQ ", a jedno z przerwań otrzymało nazwę FIQ, która może być myląca. Cytat: Co do tej pamięci, żebrz była jasność. Normalnie, zarówno w Cortex jak i...
Jej, ślepy jestem. Wyrzuć atrybut static z deklaracji SysTick_Handler !!! Ze static jej nazwa staje się prywatna dla modułu i niewidoczna dla linkera. Dodano po 15 Freddi: ty błądzisz :) Kompilator w obsłudze przerwania musi zapamiętać rejestry grupy saved, bo rejestry grupy temp są zapamiętywane automatycznie przez procesor. Tak samo każda inna procedura...
Startup jest "lewy", gdyż jeśli chcesz dodać przerwanie, to musisz je jakoś nazwać, a potem pamiętać o tym, żeby tą nazwę wstawić w odpowiednie mniejsce startupa. W typowym startupie to jest załatwiane automatycznie (atrybut "weak") - po prostu nazywam funkcję przerwania tak jak trzeba (cośtam_Handler) i gotowe. Prędkość debuggowania jest zależna od...
Myślę, ze BlueDraco chcąc wyjaśnić namieszał autorowi jeszcze bardziej. Pierwsza kwestia volatile. Tu faktycznie mamy tylko kwestie języka C. Taki modyfikator mówi kompilatorowy : nie optymalizuj. Jeśli jest przypisanie to je wykonaj. Jeśli jest modyfikacja to ją wykonj. Gdy nie ma takiego modyfikatora kompilator może instrukcję pominąć (np przypisanie...
Probowalem zrobic jak mowiles, dalem wysylanie nawet zaraz po sprawdzeniu zmiennej odebrano_polecenie. Wyglada na to ze ta instrukcja warunkowa nigdy nie wykonuje sie poprawnie. Zmienna odebrano_polecenie jest zadeklarowana na poczatku pliku main jako int odebrano_polecenie = 0; Natomiast w pliku zawierajacym obsluge przerwania mam: extern int odebrano_polecenie;...
http://obrazki.elektroda.pl/8660171200_1... Celem projektu było zbudowanie odtwarzacza MP3/WAV, używając jedynie układu FPGA, pamięci RAM i przetwornika stereo DAC. Układ wykorzystuje 32-bitowe jądro procesora programowego pracujące przy taktowaniu poniżej 60MHz, które odpowiada za dekodowanie MP3 bez wsparcia sprzętowego - poza wykorzystaniem...
Witam. Dla ćwiczebności napisałem sobie funkcję zwracającą ilość cykli zegara w celu pomiaru długości wykonywania funkcji itp. Aby to osiągnąć odczytuję "PENDSTSET" oraz stan licznika SysTick. Jednak pomiędzy tymi dwoma odczytami upływa trochę czasu i wartość licznika jestem w stanie skorygować znając czas jaki upłynął miedzy tymi dwoma instrukcjami...
Witam. Parę pytań, przemyśleń, proszę o wypowiedzenie się. Temat dotyczy programowania embedded C głownie mikrokontrolerów raczej większych 32 bitowych. 1. Stosowanie wielu zmiennych globalnych jest bee Czy w świecie embedded bez dynamicznej alokacji pamięci da się inaczej? Zakładając, że mamy jakieś stałe duże struktury globalne (zawierające mnóstwo...
Nie zauwazylem zadnej struktury dla SysTicka poza tymi definicjami. Zajrzyj do core_cm3.h , tam jest gotowa funkcja z CMSIS SysTick_Config(uint32_t ticks) i tam też znajduje się odpowiednia struktura w tym headerze. SysTick jest dostarczany z rdzeniem przez ARM. Dlatego konfigurację NVIC, ITM czy SysTick nie szukasz na stronach producenta mikrokontrolera...
Czas odpowiedzi na przerwanie o najwyższym priorytecie zależy od tego, ile czasu spędzi oprogramowanie przy zablokowanych przerwaniach. Jeśli oprogramowanie nie blokuje przerwań, a w rejestrze czasu odpowiedzi ustawi się wartość rzędu 25 lub więcej (co wynika z ew. złośliwego ale deterministycznego opóźnienia dostępu do pamięci i wolnych peryferiali),...
Temat czas zamykać, ale jeszcze spytam się uprzejmie szanownych kolegów, czy ktoś z was uruchomił USB HOST na LPC1758. Wg erraty mikrokontroler ten ma błąd w tym trybie i nie ma na niego lekarstwa - a płytki zrobione :(. Nie jestem pewny, ale schemat i podłączenie układu jest poprawne. Przemierzone, sprawdzone 100 razy. Załączanie napięcia przez układ...
Zrobiłem kiedyś coś takiego na atmedze 644, taktowanej kwarcem 24MHz. W pamięci zewnętrznej miałem zapisane tablice z próbkami różnych przebiegów, nie tylko sinusa itp ale także składających się z kilku harmonicznych. Próbki kopiowałem do RAMU i wysyłałem cyklicznie na 8 bitowy scalony przetwornik DA. Za przetwornikiem miałem 3 stopniowy filtr dolnoprzepustowy...
Witam Idea działania programu jest taka, że po starcie na wyświetlaczu pojawia się komunikat "napis testowy", a po naciśnięciu przycisku wyświetlany jest napis "STANDBY MODE" i układ przechodzi w tryb standby. Po naciśnięciu przycisku napis wyświetla się, ale mikrokontroler nie pracuje w trybie standby (podłączony miernik na pinie IDD). Niestety nie...
Cześć, Projekt zaraz będę konfigurował od początku. Fakt, podałem za mało danych, wybaczcie, skrajna nerwica mnie na to wzięła. Od początku: Używam SW4STM32, ale chciałbym od tego odejść mocno, bo za dużo automatów i za mało szczegółów, może dlatego, że nie potrafię tego wszystkiego ogarnąć. Kompilatora używałem poprzez naciśnięcie "build". W ustawieniach...
Witam temat podobny do http://www.elektroda.pl/rtvforum/topic23... Lecz sprawa wygląda troszkę inaczej. Z racji tego, że atollic udostępnił wersję litte postanowiłem przesiąść się z keila. Dotychczas korzystałem z example usb hid na keila. W Atollicu skonfigurowałem sobie nowy procesor, wrzuciłem kod z uvision i po małych przeróbkach (dostosowanie...
Nie uda Ci się coś takiego jak liczenie ilości iteracji dla rdzenia Cortex-M3 - zapomnij. Musisz sobie stworzyć timer na przerwaniach (najlepiej na SysTick) i sprawdzać ile czasu już minęło. 4\/3!!
Porada: napisz to od nowa. W obecnej wersji masz delay w przerwaniu EXTI i brak przerwania timera do obsługi wyświetlacza.
Przerwania, w odróżnieniu od starych ARMów są w całości zarządzane przez ARM'a czyli CortexMx. W dokumentacji ARM znajdziesz opisy rejestrów i jako to działa. Każdy producent, taki jak ST zmienia znaczenie linii przerwań, definiując je po swojemu za wyjątkiem kilku pierwszych zarezerwowanych przez ARM. Ponadto, Cortex'y mają możliwość nadania przerwaniom...
cortex firmware cortex assembler cortex manager
moduł napęd aktywność karty graficznej mission glosniki
bateria macallister frania podgrzewanie
Cena oscyloskopu HAMEG HM 504 na rynku wtórnym Myszka nie działa po instalacji DualShock 3 na Windows 10