adamusx Ma znaczenie i to duże. I nie w kwestiach mechaników to należy rozpatrywać tylko funkcji zdefiniowanych w plikach "startup_stm32f4xx.c", "system_stm32f4xx.c" i "system_stm32f4xx.h". Dla CM4 wygląda to tak: Startup wywołuje funkcję SystemInit(); Ta funkcja przy domyślnych ustawieniach konfiguruje system taktowania uC na 168MHz, ale dla kwarcu...
Po wygenerowaniu projektu w Cube nie ma definicji tych funkcji w main.c No to chyba dość oczywiste. Zobacz jak się nazywają tam gdzie jest tablica wektorów. Np w projektach z cube to bedzie .S plik w katalogowy startup albo coś w tym guście
Jeśli korzystasz z stm32f4 discovery, to sprawdź czy masz dobrze ustawionego st-linka. Musisz mieć zainstalowany w systemie sterownik do niego, Keil nawet zaktualizuje w nim soft jeśli zajdzie taka potrzeba. Jeżeli chodzi o konfigurację st linka w Keilu, wszystko znajdziesz w dokumentacji u ST na stronie. Nie wiem też czy dobrze się zrozumieliśmy. Debug...
W pliku startup_xxxxx.s
plik startup S jest w assemblerze tylko i wylacznie dlatego, ze musisz ustawic na procku odpowiedni tryb i zainicjalizowac stos. absolutnie minimalny startup to (poza wektorami przerwan) ustawienie stosu. cala reszte w teorii mozna zrobic w C, ale... po co? gotowych plikow startup sa setki i tyle, wiec po co kombinowac i pisac je w C na sile? sztuka...
Mam jakieś przykłady z keila z kamami.pl, więc jak chcesz zzipuję i wrzucę. akurat ja używam zl10arm+zl9arm czyli też lpc2148. elm-fata kiedyś odpaliłem na avr, a pewno też będę chciał na lpc więc pochwal się, jak Ci się uda;) Tutaj proszę pliczek .s z tej paczki. //Plik startowy dla mikrokontrolerow LPC214x /****************** KONFIGURACJA *********************/...
A jeśli chodzi o typ, to w tym przypadku powinienem użyć IRQ? Nie powinieneś używać żadnego. Jeśli używasz STM32F1 (technicznie rzecz ujmując - jeśli używasz rdzenia ARM Cortex-M3 w rewizji r1r1), to po prostu na początku main() (albo w startupie, albo gdzieś "bardzo wcześnie" - byle przed pierwszym przerwaniem) dodaj taką oto magiczną inwokację: SCB->CCR...
Co dokladnie oznacza u Ciebie wywolanie funkcji z przerwania? Czy jest to: a) pierwsze wywolanie uzytkowej funkcji w C z poziomu asemblerowego "handlera" (tzn. tego, który bezposrednio reaguje na przerwanie), umieszczanego zwykle w startup.S a) kolejne wywolanie funkcji z tej pierwszej uzytkowej wyzej wymienionej ? Powodow mozesz miec mnostwo: 1. Jednak...
Sprawdź, cza nazwa Twojej procedury obsługi przerwania jest taka sama, jak w tablicy adresów przerwań w pliku startup. Wyrzuć zbędne wywołanie SetPriority.
Niestety za mało znam gcc od podszewki żeby coś poradzić. Wydaje mi się że pliki startup są już w postaci plików OBJ (.o) nie wiem gdzie szukać źródeł. Po pierwsze poruszyłbym ten temat na AVRFreaks. Wygląda że podobna sytuacja była również z innymi ATMEGAmi: https://www.avrfreaks.net/forum/atmega80... Wysłałem zapytanie...
Od pewnego czasu walczę z chińską płytką (blue-pill) z STM32F103 na pokładzie Przeczytaj ten wątek i kup sobie inną płytkę. https://www.elektroda.pl/rtvforum/topic3... Jeśli koniecznie chcesz się męczyć z chińskimi podróbkami, to na mojej stronie ( http://www.freddiechopin.info/ > Download > ARM > Przykłady > stm32_blink_led) znajdziesz szablon...
Jakie ostrzeżenie generuje kompilator? Poinformowałeś go w pliku stm32f4xx_it.h o tym jak wygląda funkcja void TIM2_IRQHandler(void); ? Chyba nie i dlatego lądujesz w Default_Handler, który jest na końcu pliku startup. Dodaj deklarację funkcji, dołącz plik nagłówkowy do main.c i pewnie będzie działać.
A ja znowu ze stronka :P http://www.siwawi.arubi.uni-kl.de/avr_pr... Tutaj masz projekt ktory na pewno dziala, wez startupa i zobacz jak powinno wygladac!!
Jeśli używasz szablonów generowanych przez CubeMX (czy ogólnie szablonów producenta), to one ustawiają zegar w funkcji która wywoływana jest ze startupa _PRZED_ main().
Może zbyt namieszałem. Zasadniczo chodzi po prostu o to jak stworzyć projekt w SW4STM, który nie zawierałby tych wszystkich śmieci z SPL i HAL i dało się pisać na rejestrach. Taki czysty podstawowy projekt pod rejestry z tylko niezbędnymi rzeczami jak w przypadku pisania na AVRy. Ja robię to tak: I. Potrzebne narzędzia: 1. System Workbench for STM32...
Co do 300 i 400 przerwania są w blokach OB ( z help-u ) OB1 End of startup or end of OB1 1 Free cycle OB10 Time-of-day interrupt 0 OB11 OB12 OB13 OB14 OB15 OB16 OB17 OB20 Time-delay interrupt 0 OB21 OB22 OB23 OB30 Cyclic interrupt OB31 OB32 OB33 OB34 OB35 OB36 OB37 OB38 OB40Hardware interrupt OB41 OB42 OB43 OB44 OB45 OB46 OB47 OB55 Status interrupt...
Jest coś nie tak z UART_BUFOR. W przedstawionym fragmencie brak definicji tego tworu więc nie wiadomo dlaczego. Poza tym typowy błąd AVRowca - nieskasowana flaga przerwania. Powtórzę to co przedmówca: poradnik szczywronka wyłuszcza to prosto i zrozumiale. Nazwy wektorów przerwań biorę z Reference Manuala albo z plików startowych np. vectors_stm32f10x.c...
BOOTLOG_LOADED > Ładowanie sterownika BOOTLOG_NOT_LOADED > nie ładuje sterownika ( dxgkrnl.sys ) plik jądra podsystemu graficznego DirectX * (DirectX Graphics Kernel) Poczytaj od M...Soft [url=https://answers.microsoft.com/en-us... * oraz [url=https://forums.tomshardware.com/thr...
Jak wygląda sprawa z przerwaniami? Tam zamiast przerwań są używane callbacki. To nie tak jest. Callbacki są całkiem do czego innego. W programie HALowym, to użytkownik pisze obsługę przerwań sprzętowych (tak jak w klasycznym podejściu "rejestrowym") a specyfiką HAL jest tylko to że dostarcza pewnych gotowców na obsługę przerwań. Przykładowo weźmy uart....
Skąd masz bazowe pliki (startup, tablicę wektorów, skrypt linkera)? Z tego pakietu AC6 czy może nie masz ich wcale? Nie postawiłeś po prostu za dużo tych breakpointów?
Witam. Wczoraj jeszcze debugowałem program i jeżeli się wysypuje to zawsze w startupie dokładnie /* Call static constructors */ bl __libc_init_array Zupełnie nie wiem co z tym zrobić ;/
Witam wszystkich, Po dwóch a może trzech tygodniach poszukiwań znalazłem błąd. Nie odkryłem samodzielnie tylko znalazłem tu na forum : [url=http://www.elektroda.pl/rtvforum/to... - I2C na przerwaniach Piszę w SystemWorkbench for STM32. Przy tworzeniu kodu w STM32CubeMX (czyli na bibliotekach HAL) program dodawał za mnie...
Mnóstwo zbędnych programów w autostarcie (O4 w logu, tak jak zauważyli poprzednicy) zastanów się czy Ci wszystkie potrzebne ! Ponadto: O4 - Startup: Kopia Neostrada.lnk = ? O4 - Startup: Skrót do Neostrada.lnk = ? O4 - Startup: Skrót do Połączenie telefoniczne.lnk = ? Trzy linki do połączeń telefonicznych odpalanych jednocześnie ?
Witam, mam problem z trybem RUN w sterowniku S7-1200 CPU1215C DC/DC/DC 215-1AG40-0XB0. Ze sterownikiem da się bez problemu połączyć, wgrać/załadować program, jednak nie mogę go w żaden sposób przesterować w tryb RUN. Brak przełącznika na sterowniku, przez TIA nie reaguje, czy to manualnie, czy podczas wgrywania programu. AI: Czy podczas próby przełączenia...
automatyczna konfiguracja stosu, zegara, przerwań (startup). Kolego, nie opowiadaj bajek. Gdzie jest ta automatyczna konfiguracja??? Na przykład dla STM32F4xx, wielkość stosu definiujesz w pliku startup_stm32f4xx.c, konfiguracja zegara w pliku startup_stm32f4xx.c, bazuje na ustawieniach zawartych w stm32f4xx_conf.c, co często sprawia, że rdzeń jest...
Witam Niedawno zacząłem "zabawę" z zestawem Kamami ZL27ARM z procesorem STM32F103VB. Mam problem z przerwaniem od timera SysTick. Jest ono generowane 4 razy za często - miało być 1 raz na sekundę, a jest 4. Kwarc 8MHz, SYSCLK = 72MHz, SysTick_CLK= 72/8=9MHz czyli załądowanie do licznika wartości 9'000'000 powinno dać zgłoszenie przerwania co 1s, więc...
Ja bym sugerowował, żeby zmienić w tym przykładzie zerową wartość 'main stack size' na różną od zera, bo osoba przechodząca od migania LED'em (który działa) na obsługę przerwań, ma problem z ich poprawnym działaniem - przy zerowym stosie obsługa przerwania ląduje w Default Handler i człowiek się dziwi co nie tak zrobił. Osoba początkująca może mieć...
kurcze, trudne zadanie. Mógłbyś podrzucić cały katalog projektu, tzn. bez rzeczy które chciałbyś zachować tylko dla Siebie. Chodzi mi o tą często zwaną 'rozbiegówkę'( nawiasem... świetna polska nazwa) w assemblerze i o 'startup' w 'C'. sam'a tylko na płaskich przerwaniach znam( bez priorytetów przerwań). Czy procesor wchodzi w to przerwanie? tu inicjalizacja...
Witam! Spędziłem już dobre kilka dni na czytaniu specyfikacji, przykładów i różnych wypowiedzi innych ludzi, a problemu wciąż nie mogę rozwiązać. Pracuje na procesorze AT91SAM7S64 z programem CrossStudio i potrzebuje skonfigurować Timer0 tak by zliczał od 0 do rejestru RC w kółko i przy tym generował przerwanie. Z Timerem poradziłem sobie bez większych...
(at)Piotrus_999 Może od razu napiszesz standardowy wywód na temat wyższości SW4STM32 zamiast zadawać tego typu pytania. Autor wyraźnie napisał: Zresztą, wolę unikać tego narzędzia, wolę rozumieć co gdzie jest i dlaczego. (at)maciej_zar Zamiast tych GNU Coreutils (z tego co wiem to jest tam nieco stara wersja tego) zainstaluj sobie MSYS2 albo przesiądź...
Przerwanie jest umieszczane pod 0x04 (sprawdzilem plik *.lst). Czy problemem moze byc brak inicjalizacji plikiem startup.as? Wczesniej pracowalem w srodowisku Eclipse i tam dodawal sie on automatycznie - pod MPLabem chyba nie jest on dodawany - w kazdym razie nie widze tego :( BF
1. W obsłudze przerwania flaga powinna być czyszczona jako jedna z pierwszych. 2. Należy sprawdzać od, którego rejestru porównyjącego wystąpiło przerwanie i na tej podstawie podejmować dalsze działanie. Zależnie od ustawień prescalera i wartosci MR0 timera niektóre wartości nie były prawidłowo wpisywane- ale najpierw zajmijmy się najprostszym przykładem...
PCONP podpina zegar do SPI i to jest zazwyczaj w startupie, jeżeli nie ma to musisz go włączyć. Jeżeli program tkwi w pętli while(1) w przerwaniu to dlatego, że nie może wysłać danych, zapewne kontroler SPI nie jest poprawnie skonfigurowany. A także PINSEL0 powinno być PINSEL0 |= 0x1500 skoro manualnie chcesz CS sterować.
Na 99% w startupie pod wektor FIQ przypisana jest funkcja o stałej nazwie, a nie wektor z AIC, tak jak to ma miejsce w przypadku IRQ. Z tego względu przerwania FIQ aktywuje sie zupelnie inaczej - wystarczy aby funkcja miała odpowiednią nazwę (do znalezienia w startupie), a w AIC trzeba jedynie przekierować, że źródło przerwania nr X będzie zgłaszało...
Piotrus_999. Nie tak zrozumiałem debugowanie ;P Dopiero jak mi powiedziano że w pliku startupa są zdefiniowane przerwania to tam zajrzałem, nie wiem kiedy bym sam do tego doszedł. Nie ciśnijcie po mnie;P Jestem początkującym dopiero, nie licząc przerw z miesiąc siedzę w ARM więc niewiele wiem, dopiero wszystkiego się uczę, ale że trochę czas mnie goni...
(at)szczywronek LCD_WriteText nie ma żadnych opóźnień od innych przerwań. Funkcja zawiera jedną instrukcję...która pośrednio odnosi się do jeszcze 3 innych funkcji. Jednak żadna z nich nie wykorzystuje przerwań. Tak, posiadam debugger. Działam na openocd+eclipse oraz startupie Freddiego. (at)BlueDraco Dziś podczas kolejnych nieudanych prób ten sam...
Domniemam, że ujarzmiasz jakiegoś Cortexa bo wspominałeś o stosie w startupie. W taki wypadku musisz trochę więcej doczytać o samej architekturze ( o ile jeszcze tego nie zrobiłeś) tego rdzenia. Chodzi o to, że Cortexy mają dwa wskaźniki stosu, jeden jest tak jakby dla przerwań( to ten który jest ustawiany w startupie) i drugi jest tak jakby na procesów...
Którego stosu i czy aby na pewno tego co trzeba? Jeśli używasz moich plików (skrypt linkera, startup, itd.) to polecam ze zrozumieniem przeczytać opis powyżej rozmiarów stosów w skrypcie linkera. 4\/3!!
No ale jeśli nie korzystasz z przerwań, to ten rozmiar stosu może być równy zero... Jeśli skonfigurujesz (w startupie) użycie tylko jednego stosu (albo raczej - "nie skonfigurujesz użycia dwóch" - jak jest to domyślnie zrobione), to musi być jeszcze inaczej... Prawda jest taka, że informację o tych stosach można znaleźć w 100 miejscach, włącznie z opisem...
Więc tak: zdefragmentowałem dysk(przykro mi, Dydelmax, za późno:) ),przeinstalowałem kodeki, używając System Mechanic 10 naprawiłem wykryte problemy, przyspieszyłem startup systemu(ale tak naprawdę nic się nie zmieniło), oraz dowiedziałem się, że to "zamulenie" to nie jest wina dysku (at)Dydelmax Ok, zaraz się za to wezmę. EDIT: Już odkurzyłem, ale...
ok, wycofuje sie z tej 1s <: pomylilo mi sie z msp430, gdzie xxPR znaczylo PeRiod, a tutaj znaczy PRescaler. poza zezwoleniem w kodzie, tryb w ktorym pracujesz musi miec zezwolenie na przerwania zawarte w CPSR - to jest ustawiane w startupie assemblerowym. tutaj przerwania sa wylaczone (bity I i F ustawione) msr CPSR_c,#SVC_MODE|I_BIT|F_BIT // ......
pytanie co masz w startupie/system init czy czym tam jeszcze. O, Freddie mnie wyprzedził ;)
Wczoraj uruchomiłem RTC, działa ładnie, choć nie wiem dlaczego na koniec wpisu do rejestru RTC_CNT muszę dwa razy wyzerować bit RTC_CRL_CNF:) W następnej kolejności chcę uruchomić przerwanie od RTC, no i oczywiscie nie działa, inaczej nie pisałbym tu. Jak rozumiem z dokumntacji (tej cześci którą przeczytałem) i opisu przykladów, najpierw powinny być...
Hi Dzieki za komentarze poszedlem w druga strone i teraz instaluje zgodnie z http://vsdev.me/notes/setting_up_arm_gcc... Aha przywrocilem jeszcze z orginalnych przykladow static inline cpu_t get_cpsr(void) { cpu_t val; asm volatile ("mrs %[val], cpsr\n":[val]"=r"(val):); return val; } static inline void set_cpsr(cpu_t val) { asm volatile ("msr...
Co to za środowisko? CoIDE. Mam takie ikonki. Tylko jak wyżej napisałem , w czasie kiedy wisi aktywny jest tylko stop i pause. Dodano po 48 Ale jeśli w czasie debugowania zatrzymam debugowanie "pause" to wychodzi na to że program jest w pętli w tym miejscu : Dodano po 3 Dodano po 10 Wypinając linie RX mikroprocesora z układu MAX485 program działa o...
Plik Vectors.S załączam. Chętnie przeczytam co o nim sądzisz. [syntax=c]// #=======================================... // # // # vectors.S // # // # ARM exception vectors (Olimex LPC-P2138) // # // # // # Copyright HighTec EDV-Systeme GmbH 1982-2007 // # // #=======================================...
Zakładam, że całą konfigurację sprzętu masz dobrze - bo miałem tylko chwilę żeby pobieżnie spojrzeć do UM i to co sprawdzałem się zgadzało. Zajrzyj do pliku startup.s i sprawdź tam, czy masz poprawnie ustawiony adres skoku do wektora obsługi przerwań...
A te przykady z katalogu WinARma do LPC rowniez Ci nie dzialaja ?? Opieraj sie o pliki startup.s z przykladow WInARMA. Ja osobiscie Philipsami sie nie bawilem, tylko Atmelami i problemow z przerwaniami nie bylo. Czy po kompilacji dostajesz jakies ostrzezenia ???
Podejrzewam ze problem moze byc wynikiem uzycia zlego pliku startowego Sprobuj tego, tylko pamietaj ze przerwanie w C musi byc z __attribute__((interrupt)) PS. Ten startup ma domyslnie wylaczone przerwania w rejestrze CPSR, musisz je dodatkowo wlaczyc (czyszczac bit I w CPSR), mozesz to zmienic w startupie.
SOA #1: u mnie działa [; może masz jakies złe pliki nagłowkowe, złego startup'a, zły skrypt linkera, źle skonfigurowane środowisko, etc? spróbuj skompilować i uruchomić jakiś działający przykład. 0x41 0x56 0x45!!
Zadziałało. Wgrałem program, nie wpada mi do boot, mogę debuggować. Komenda LOAD u mnie działa poprawnie. Z powodu wyjazdu robię przerwę na 2 tyg, proszę o nie zamykanie tego tematu. Zostało jeszcze sprawdzić pliki cfg dla 2364 i startup.s. Chwilowo używam pliku startup z 2103 i moja wiedza jeszcze nie pozwala określić czy to do końca OK, ale domyślam...
A masz włączony ten TIMER w rejestrze PCONP? To takie pierwsze co mi się nasuwa. No i czym się objawia to niedziałanie przerwań u Ciebie? Program staje i nic się nie dzieje? Czy może coś innego? Ustawienia wydają się być dobre. I dla Timera i dla VIC. Sprawdź jeszcze w startup.s czy masz poprawnie wpisany adres skoku do wektora przerwań. Poszukaj linijki:...
Od razu niemożliwe... ...jest możliwe. Trzeba by nie używać bibliotek standardowych ST i CMSIS - zrobić wszystko na rejestrach, a przynajmniej przepisać startup i tablice przerwań według siebie. Można też kombinować z manipulacjami tablicą przerwań, ale po co utrudniać sobie życie? Sam robię tak jak sugeruje -psiak-.
Mialem cos takiego telefon martwy v0.914036/UNI CARD SERIAL: 00054045 Loaded 51 flash descriptors SIGNED MODE (USING SERVER). ALTERNATIVE SECURITY BYPASS ENABLED. ChipID:9900,EMP protocol:0301 PHONE IS RED RETAIL PRODUCT FLASH CID detected:52 Speed:921600 OTP LOCKED:1 CID:51 PAF:1 IMEI:359----------------0 CERT:RED FLASH CID:52 COLOR:RED PATCH:061205...
teraz trafiłem na kolejną przeszkodę a mianowicie nie mogę skonfigurować debuggera w Eclipse sciągnołem najnowaszą wersje i brakuje mi obcji a mianowicie robie tak jak jest w tutorialu i tak jak jest na w ostatnim pocsie tu:http://www.elektroda.pl/rtvforum/topi... Z tym ze u mnie nie ma zakładki startup i a w zakładce debbuger wymagane...
Nadal nic nie ruszyło w temacie, czy ktoś ma jakieś pomysły, może ktoś kto dobrze się zna na pliku startup mógł by rzucić okiem na niego, być może tam tkwi problem? Pozdrawiam.
pliki vectors.s i startup.s mam od Ciebie /***************************************... * author: Freddie Chopin, http://www.freddiechopin.info/ * file: vectors.S * last change: 2010-04-08 * * chip: LPC2103 * compiler: arm-none-eabi-gcc (Sourcery G++ Lite 2009q3-68) 4.4.1 * * description:...
Hmmm. Wgrałem oryginalny program z Stm32 MassStorage. vectors.c startup.S i .ld o kolegi Freddie Chopin. Mam obecnie dwa przerwania z Usb: USB_HP_CAN1_TX_IRQHandler i USB_LP_CAN1_RX0_IRQHandler ( w vectors.c było bez jedynek kolo CAN ). Zrobiłem takie coś, orginalny program void USB_HP_CAN1_TX_IRQHandler(void) { CTR_HP(); }...
jest kompletnie niepotrzebn pod warunkiem że w tej rodzinie startup ustawił STKALIGN. Albo sam gdzieś napisał SCB -> CCR |= SCB_CCR_STKALIGN_Msk;
nie, chodzi o rozbiegowke w assemblerze. crt, boot albo startup sie to zwykle zwie. 4\/3!!
Konfiguracja wewnętrznego kontrolera przerwań (to co robisz funkcją), a odpowiedni prolog/epilog assemblerowy (to co robisz deklaracją z "__irq") to dwie odmienne sprawy. Jeśli tablica wektorów w startupie ładuje adres funkcji bezpośrednio (nie ma jakiejś funkcji wrappera), to obydwie te operacje są konieczne. U ciebie właśnie tak jest. 4\/3!!
Wszystko fajnie, pod warunkiem, że chce się używać STM32. Dodanie podstawowego wsparcia dla innych układów jest porównywalne z postawieniem projektu na FreeRTOSie - ot po prostu musisz mieć tablicę wektorów i skonfigurowane rozmiary/adresy pamięci i dokładny typ układu. We FreeRTOSie przecież wsparcie dla STM32 czy dla LPC tak samo nie istnieje - tablicę...
Moze w startup'ie masz przerwania zablokowane.
Witam Idąc za PM0075: The main Flash memory can be programmed 16 bits at a time. The program operation is started when the CPU writes a half-word into a main Flash memory address with the PG bit of the FLASH_CR register set. Any attempt to write data that are not half-word long will result in a bus error response from the FPEC. If a read/write operation...
Witam wszystkich specjalistów od telefonów , koledzy chciałem prosić was o pomoc mam telefon LG U8210 i w trakcie ładowania plików po przez blutufa do karty pamięci pojawił się monit że połączenie zostało przerwane po czym telefon zawisł więc by go zresetować wyjołem na chwilę baterie i już po włożeniu jej ponownie telefon zachowuje się w taki sposób...
Program zachowuje się gdyby chciał a nie mógł skorzystać z SysTick_Handler. Najpierw kod: http://obrazki.elektroda.pl/6717645500_1... Przy zmniejszeniu ilości taktów na przerwanie w systicku i debugowaniu po kroku przerwanie w ogóle nie występuje. A gdy przy w/w kodzie ma być wywołane przerwane (via step to line) program wiesza się w...
W pliku CubeMx utworzyło mi automatyczne połączenie obsługi przerwań HAL z biblioteką niskapoziomową. W przerwań tych nie korzystam w chwili obecnej, dlatego tez zastanawia mnie czy jeszcze gdzieś należy po Cube posprzątac. [syntax=c]#include "stm32f1xx_hal.h" #include "stm32f1xx.h" #include "stm32f1xx_it.h" /* USER CODE BEGIN 0 */ /* USER CODE END...
Jest to standardowa funkcja wywoływana jeszcze przed main() w startupie. Otwórz plik ze startupem to zobaczysz jej wywołanie. Możesz ją wykorzystać tylko musisz dostarczyć jej deklaracje odpowiednie dla twojego programu
Wywala sie przy wyjsciu z przerwania 0x000013ac <ADC_IRQHandler+92>: pop {r4, r5, r6, pc} BUG: couldn't calculate PC of next instruction, current opcode was 0x5c002000 should never reach this point Dorzuce jeszcze moj plik startup: /* Startup code for STR91x ARM-based microcontrollers based on STR912 startup source and some examples from www.stm.com...
Ileż się naszukałem w User Manualu co odpowiada za globalne włączenie przerwań w LPC2478. I okazało się że chyba nic. Po prostu to wymysł Keila ta funkcja. W User Manualu tego nie znajdziesz, tak samo jak szczegółów dotyczących przerwań, instrukcji assemblera itp. Dlaczego? Dlatego, że to są rzeczy specyficzne dla RDZENIA tego mikrokontrolera - rdznia...
Ten adres nie jest prawidłowy w STM32. Flash zaczyna się od 0x8000000 Flash jest widoczny zarówno od 0 jak i od 0x8000000. W "dolnym" zakresie może być widoczne coś innego - np. RAM - zależnie od konfiguracji pinów BOOTx. To samo dotyczy nie zainicjalizowanego statica w funkcji. Niezainicjalizowana zmienna statyczna ma zawsze wartość 0. ZAWSZE. Jeśli...
tak licznik będzie aktualną wartość wrzucał do %ID1000. aby zresetować musisz ustawić wejście CV w stan wysoki w CTRL_HSC a w pozycję NEW_CV wpisać wartość 0 Ja dodatkowo zrobiłem w programie przerwanie wywoływane cyklicznie, które aktualną wartość %ID1000 przepisuje do pamięci nieulotnej, która po restarcie urządzenia jako startup jest wpisywana jako...
Default Handler, więc pierwsze pytanie: Czy masz zdefiniowany wektor przerwania RTC_IRQ w pliku startup_stm32.s?
Sprawa załatwiona pomogła solucja : 1. Remove all the cards from the phone 2. Connect the dongle to the pc/laptop 3. Now connect the phone to the cable which is connected to the dongle 4. After doing this power on the phone 5. After powering on the phone startup the software and the phone should be in Local Mode now and you will see the Nokia Logo without...
Jeśli faktycznie TIM2 jest taktowany z częstotliwością 42MHz to Twoje przerwanie powinno być wywoływane co 10ms (konfiguracja RCC). Niemniej jednak kasowanie flagi przerwania powinno być pierwszą czynnością jaką przerwanie wykonuje a Ty kasujesz flagę raz na 100 wywołań. Poza tym umieszczanie funkcji USART_putint i USART_SendData wewnątrz przerwania...
Witam. Poniewaz chce zostawic w swoim programie pierwsze sektory nieuzywane (ewentualnie bez zadnych konkretnych funkcji) moj program powinien byc wygenerowany z okreslonym offsetem. Przebrnąlem przez skrypt linkera i mam pierwsze 4 kbyte flasha przeznaczone na moja sekcje BOOT, a reszta pamieci na sekcje FLASH. Skoro tablica przerwan tez sie przesuneła...
Startupu Freddiego nie znam, ale ta obsługa buforów nie wygląda na działającą. Zwykle tail wskazywał pierwszy bajt zajęty, a nie ostatni wolny. No i powinno być void USART1_IRQHandler(void) Mam nadzieję, że kod jest pisany w C, a nie w C++.
Witam, ostatnio zajmowałem się operacją zapisu i odczytu danych z pamięci flash na mojej płytce F3 discovery. Problem pojawił się w momencie próby użycia przerwania generowanego przez timer lub przy restarcie mikroprocesora. Procek wtedy się zwiesza (zapętla się w endless loop w pliku startup_stm32f303xc.s). Zapewne chodzi o to, że operacje na flashu...
CMSIS Core - to tylko startup i system i bodajże core_cm3 + skrypt linkera. Zaś ty korzystasz z pełnego CMSIS i to jego deklaracji brak. Rozwiń tą gałąź "Device"... Definicje są (dodałeś sam pewnie), bo ci przechodzi kompilacja. Błąd jest w momencie linkowania.
Czy twój kompilator to wersja ewaluacyjna? Bo wtedy obowiązują restrykcje: The startup code generated includes LJMPs. Code generated cannot be used in single-chip devices that support 2K Bytes or less of program space . Programs start at offset 0x0800. Programs generated with the evaluation software may not be programmed into single-chip devices with...
Problem jest zdaje sie bardziej skomplikowany - potestowalem calosc z parunastu konfiguracji i z sieci lokalnej i z inernetu. Wnioski: polaczenia z win xp sa obslugiwane w 100% poprawnie polaczenia z win7 powoduja wystapienie WWDG_IRQHandler - w moim przypadku wejscie do infinity loop. Aczkolwiek jeden ze znajomych polaczyl sie z internetu przy uzyciu...
Mimo to nie pozwoliło to na kompilację (czerwony napis "BUILD FAILED"). Zapewne projekt nie został poprawnie skomponowany (CMSIS, startup, ścieżki, skrypt linkera, itd.). Dlaczego piszesz w CooCox i bibliotekach SPL? Całkiem możliwe, że prowadzący zajęcia niestety nic innego nie zna.
Panowie, już nie mam pomysłów... kupiłem nawet manuala, żeby to działało, oparłem przerwanie na semaforze, a tu dalej nie działa.... Stworzyłem osobny plik ledsISR.c , w którym umieściłem prościutki kod: xSemaphoreHandle xSemafor; void initLeds() { vSemaphoreCreateBinary(xSemafor)... AT91F_AIC_ConfigureIt(AT91C_BASE_AIC... AT91C_ID_PIOA,...
A dla czego? Pamiętam, że jak kiedyś przygotowywałem strukturę która miała różnej wielkości zmienne (1, 2 i 4 bajtowe), to przy wysyłce struktury nie były ułożone dokładnie jedne za 2 gimi tylko miały wyrównanie do 32 bitów. Ale to może kwestia kompilatora. Robiłem to w uvision. Jestem tak blisko uruchomienia, a nie mogę sobie poradzić... Usunąłem więc...
Ja nie lubię STM32, a STM32 mnie! Muszę coś zrobić na STM32 i robię to w Truestudio. Na razie proste testy na przypomnienie sobie STMów i wejście w C++ i na dzień dobry ściana! Po kompilacji w tablicy wektorów przerwań jest tylko adres na DefaultHandler. Mimo tego, że nazwa funkcji obsługi przerwania jest taka sama jak w pliku ze startupem i funkcja...
Poszukaj w projekcie pliku cr_startup_lpc11xx.s. To, co zamieściłeś wyżej - to widok drzewa plików pośrednich, a nie źródłowych. W LPCXpresso jest plik cr_startup_lpc11xx.c , a w nim są nazwy funkcji ktore można zmienić na swoje (ale po co ?). P.S. Zrezygnowano ze startup'u w asemblerze na rzecz C.
Witam Napisałem kawałek kodu do obsługi przerwań IRQ Zasada miała być taka po wywołaniu przerwania (zwarcie PIO_PA2 do masy) miał zmienić się stan diody na PIO_PA27. Niestety program nie działa poprawnie (przerwanie nie jest wykonywane). Tytułem wstępu to tyle. Poniżej kod, który powinien realizować przerwania. main.c http://obrazki.elektroda.pl/7449929900_1...
Mialem kiedys podobny problem. Serwerek pod Leniuchem robil za mailserver. Rozwiazanie bylo nastepujace. Pod CRONem co minute byl uruchamiany skrypt wpisujacy do pliku time-stamp. Przy startupie servera uruchamiany byl skrypt analizujacy wpisy w pliku i wyliczajacy czasy gdy server nie chodzil. Nastepnie automat wysylal maila do sysopa. Proste i skuteczne.
Witaj brakuje Ci podstawowej wiedzy odnośnie inicjalizacji kontrolerów. Tutaj jest procedura inicjalizacji dla rodziny '51 więc Ci nic nie jestem w stanie wyjaśnić w 100% ale powiem jak to jest w ARM: - ARM rusza zawsze z wewnętrznego RC i w procedurze inicjalizacji trzeba ustawić parametry dla PLL - trzeba wstępnie zainicjalizować peryferia z których...
0. Na początek postaraj się zapomnieć o SPL. To już nie jest rozwijane i nigdy nie powinno było się pojawić. 1. Środowisko definiuje startup, a ten może konfigurować PLL. Poszukaj pliku startup.c, albo startup.s oraz wywołań funkcji System_Init czy jakoś tak. Poszukaj też definicji zewnętrznego kwarcu, pewnie będzie 25MHz, a wtedy zegar jest ustawiony...
1. Ta płytka nie ma wbudowanego JTAGa. W przeciwnym wypadku po do by jej było złącze JTAG 20-pin? 2 + 3. Na stronce dostępny jest trial wersji "rozbudowanej", w darmowej musisz sam zadbać o skrypt linkera i startup. Wbrew pozorom nie jest to takie trudne - dobry przykład (polecam te z mojej stronki dla stm32 - http://www.elektroda.pl/rtvforum/topic13...
Po długiej przerwie wracam do tematu bootloadera. Zrobiłem nowy projekt w Eclipse z pomocą tutoriala Freddiego i na podstawie projektu bootloadera z EP. Połączyłem projekt stm32_blink_led z plikami bootloadera wykorzystując makefile, startup i .ld z projektu Freddiego. Udało się uruchomić i debugować aplikacje bootloadera. W załączniku połączone projekty...
W startupie - nic nie zmieniasz W makefile - zmieniłeś już wszystko co potrzeba W skrypcie linkera - rozmiar pamięci (adresy początkowe zostają), jak masz potrzebę (np. używasz przerwań) to zmieniasz też rozmiar stosów (patrz stosowne komentarze) W tablicy wektorów - (jeśli potrzebujesz przerwań) należy dodać brakujące przerwania i poprawić te które...
Wpadłem na pomysł jak to "obejść". - w bootloaderze przekierować tablice na RAM; - "skoczyć" pod adres Reset_Handler w aplikacji użytkowej; - podczas inicjalizacji przekopiować adresy wektorów z flash do RAM (sekcja .data); Na razie próbuję: 1. umieścić wektor przerwań w sekcji .data; 2. umieścić startup.S na początku aplikacji użytkowej; Jak ktoś ma...
Dokument ten proponuje następującą kolejność procedury startowej: To o czym piszesz nie ma przecież nic wspólnego ze startupem... Poniekąd ma związek, bo startup.s dostarczany z Keilem, zawiera podobną sekwencję do tej co opisałem w poście wyżej. Nie jestem zbyt biegły w ASM, a konfigurację podstawowych bloków SCB i tak przeprowadzam w C, zatem postanowiłem...
Cześć, Mam problem ze zmianą położenia tablicy wektorów przerwań na STM32F417. Potrzebuję dostępu do pierwszych 4 sektorów pamięci, więc rdzeń musi od początku szukać wektorów pod innym adresem. Odpalenie programu normalnie, a potem ręczne przesunięcie wektorów nie wchodzi w grę. Potrzebują początkowych sektorów do przechowywania nieulotnych danych...
Udało się skompilować lwip i ... nagle przerwania przestały działać. Proc. lpc2148 Startup.S plik .ld i vector.S brałem z jakiegoś innego projektu z sieci (na mniejszy proc lpc zmieniając jedynie rozmiar sekcji ram rom) zapewne tu jest problem. Znalazłem na sieci projekt typowo pod LPC2148 http://gudjon.org/electronics/source_cod...
jeśli w startupie nie włączyłeś przerwań IRQ w trybie IRQ, to nic z tego nie będzie, choćbyś nie wiem jak próbował. Optymalność kodu na wysokim poziomie [; Szczególnie te zmiennoprzecinkowe przeliczenia w przerwaniu (które mogłyby być równie dobrze stałoprzecinkowe = 1000x szybsze), nie mówiąc już nawet nic o wysyłaniu floatów przez UART w owym przerwaniu....
Hmm, w pliku startup.S nie ma definicji. Jest natomiast w pliku vectors.c i tam też się nazywa EXTI15_10_IRQHandler linijka void EXTI15_10_IRQHandler(void) __attribute__ ((interrupt, weak, alias("__Default_Handler")));
U mnie po wpisaniu tych poleceń i reboot, po uruchomieniu pisze orangepizero login Czy ma znaczenie na jakim koncie się zainstalowało Domoticz ? Znalazłem jeszcze coś takiego: sudo cp domoticz.sh /etc/init.d sudo chmod +x /etc/init.d/domoticz.sh sudo update-rc.d domoticz.sh defaults Edit the startup script and change the USERNAME, DAEMON and DAEMON_ARGS...
startup kompilacja startup monitor stm32f103 startup
iveco czujnik obrotów przewody wysokiego rezystancja miernik ustawiania anteny
poszukuję projektu politechnika rzeszowska informatyka
Rok produkcji telewizora Sanyo 3022P Prąd roboczy diod mostka trójfazowego dla alternatora 170A