Włączanie samego SPI też bym wyniósł poza wszelkie konfiguracje. Czasami prowadzi to do problemów - wpisanie konfiguracji z jednoczesnym włączeniem. No i czy Twoje SPI Ma mieć 164,0625 kHz ? Jeśli tak, to polling nie jest najszczęśliwszym pomysłem :)
Idea generalnie jest prosta - jeśli po wystąpieniu przerwania będziesz chciał zrobić coś co trwa "długo", to nie robisz tego w przerwaniu, bo blokujesz tym cały program - wtedy stosujesz polling flagi programowej lub sprzętowej. Jeśli chcesz zrobić coś co trwa "krótko" lub jeśli chcesz zrobić coś co musi być zrobione "natychmiast" po wystąpieniu przerwania...
Dzień dobry, Zacząłem naukę STM32 i mam problem z USART2. Chciałem się połączyć z hyperterminalem. Od strony terminala wszystko działa poprawnie (sprawdzone przez zwarcie tx i rx). Od strony stm-a wygląda to tak, że kiedy chcę odebrać jakiś znak, to program wisi na fladze oczekującej na odebranie znaku. Natomiast kiedy chcę wysyłać, to nic się nie dzieje...
Dzień dobry, od dłuższego czasu próbuję wykonać projekt sterowania Transceivera RF CC120 firmy Texas Instruments za pomocą mikrokontrolera STM32F100RBT6B, który jest na płytce uruchomieniowej STM32VLDISCOVERY. Mam już napisaną część kodu, jednak nie jestem pewien czy SPI jest faktycznie poprawnie uruchomione oraz (i tu prośba do kogoś, kto się orientuje...
Witam, Od 2 dni walczę z tym błędem: Invalid ACK 0x4 in JTAG-DP transaction Problem powstaje w chwili gdy jest wysyłana CTRL_STAT, który zwraca ACK = 4, taki błąd niestety nie jest nigdzie opisany jedyne wartości jakie może przyjąć ACK to ACK_OK_FAULT, JTAG_ACK_WAIT. Dlatego kieruję do Was pytanie czy ktoś, kto bardziej się orientuje w protokole JTAG-DP,...
Poznałem już DMA o czym napisałem parę postów wyżej, w kontekście obsługi ADC. Właśnie taki sposób obsługi I2C jak w przypadku ADC via DMA byłby ideałem. Przy transmisji z ADC dzięki DMA nawet przez chwilę procesor nie jest wykorzystywany. Jedynie sprawdza co pewien czas czy dane z tablicy tych wyników mieszczą się w ustalonym przedziale. Przeoczenie...
Przepraszam za odkopywanie, ale po poprawieniu wszystkich błędów w programie debuger nadal nie działa. Wyświetla takie kominukaty. Error: JTAG failure -4 Error: JTAG failure -4 Error: JTAG failure -4 Error: JTAG failure -4 Error: JTAG failure -4 Error: JTAG failure -4 Error: jtag status contains invalid mode value - communication...
Dziękuję za sugestię :) Śmieszne... Trzymając przycisk RESET, odpaliłem OpenOCD i nic... Pomyślałem... Wcisnę desperacko do tego przycisk USER-> Podpięty do GPIOA PIN_0 Dioda sygnalizująca komunikację pomiędzy komputerem a płytką zaczęła migać... Odpalił się nawet mój stary program... SysTick Timer zaczął działać... Dioda zaczęła migać co sekundę......
Wersję Eclipsa mam LUNA Toolchain - bleeding-edge-toolchain 4.8 141002 W eclipse mam zainstalowany plugin GNU-ARM i za pomocą tego pluginu jest konfigurowany projekt. Niestety zwisy zdarzają się tak często że sprawdzenie głupiego uarta jest bardzo uciążliwe, a co dopiero ETH :( http://obrazki.elektroda.pl/3247323000_1... http://obrazki.elektroda.pl/6938620500_1...
Zaktualizowałem GDB i obecnie mam wersje: " C/C++ GDB Hardware Debugging 7.2.0.201309180223org.eclipse.cdt.debug.... CDT " Zmieniłem ustawienia w GDB tak jak mówiłeś. Przedstawia to załączone niżej zdjęcie: http://obrazki.elektroda.pl/5901709400_1... OpenOcd w dalszym ciągu poprawnie się uruchamia, natomiast...
Zastosowałem się do Twoich wskazówek, porzuciłem HID na rzecz właśnie vendor specific. Posprzątałem także ConfigDescriptor i teraz wygląda tak: [syntax=c]const uint8_t ConfigDescriptor[SIZ_CONFIG_DESC] = { 0x09, // bLength: Configuration Descriptor size USB_CONFIGURATION_DESCRIPTOR_TYPE,// bDescriptorType: Configuration SIZ_CONFIG_DESC, // wTotalLength:...
Cześć! Mam problem z procesorem stm32f107, z płytki waveshare port107v. Wszystko działało dobrze, mogłem debugować, wgrywać flash etc, aż w pewnym momencie openocd przy połączeniu wyświetla mi takie błędy: Open On-Chip Debugger 0.7.0 (2013-05-05-10:41) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/d...
Witam Uruchomiłem USB w trybie HID na przykładzie Custom HID z ST (ten gdzie się diody zapala i przyciski sprawdza). Przerobiłem go na swoje potrzeby żeby przesyłać m.in. ramki o długości 32B. W deskryptorze urządzenia są oryginalnie dwa pola: 0x20,/* bInterval: Polling Interval (32 ms) */ które pilnują żeby transmisja była wolna ;]. W aplikacji PC...
To już wiem, że mam zablokowaną pamięć Flash. Chyba nawet domyślam się, że mogłem tego dokonać próbując wgrać binarkę przez vsgui dołączonym do versaloon'a. OpenOCD wypluwa: Open On-Chip Debugger 0.8.0-rc2 (2014-04-15-16:15) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/d... xsvf adapter...
Witam, Stworzyłem płytkę z mikrokontrolerem STM32F407. Próbowałem ja zaprogramować przykładem "blink_led" ze strony Frediego i nie chciało działać. Oprogramowanie Eclipse + bleeding toolchain + openocd 0.7.0 zostało skonfigurowane wg tutoriala Frediego na Ubuntu. Nie chciało się poprawnie programować, więc próbowałem różnych porad z internetu, ale to...
Chciałbym sprostować to co wcześniej napisałem przy okazji podbijając temat. Problem polega dokładnie na tym, że jakakolwiek zmiana w deskryptorach powoduje kod 10 czyli nie można uruchomić urządzenia. Kod deskryptorów: [syntax=c_loadrunner]const uint8_t CustomHID_ConfigDescriptor[CUSTOMHID_SIZ... = { 0x09, /* bLength: Configuration Descriptor...
an2824 "stm32 i2c example polling" w google Kod lekko przerobiłem, gdyż jak każdy kod z ST jest demonstracyjny a nie jako biblioteka. Ale działa, testowane jako polling i interrupt
W pliku linkera zastąp to co masz tam tymi wartościami /* Highest address of the user mode stack */ _estack = 0x20002800; /* end of RAM */ /* Generate a link error if heap and stack don't fit into RAM */ _Min_Heap_Size = 0x200; /* required amount of heap */ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Specify the memory areas */ MEMORY...
Witam, Jestem dość początkujący jeśli chodzi o STMy dlatego proszę o wyrozumiałość. Do pamięci flash procesora wrzuciłem kod, który prawdopodobnie zawiesza procesor. Od tego momentu nie mogę się połączyć z uC używając OpenOCD. Komunikat j/n: D:\ARM\openocd-0.5.0\bin>openocd-... -f interface/olimex-arm-usb-ocd.cfg - f target/stm32f1x.cfg...
Sprawdziłem i faktycznie wchodzi w HardFault... W dodatku przy debugowaniu wysypują się jescze takie błedy [syntax=c] Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xb087b8 Error: JTAG-DP STICKY ERROR Error: MEM_AP_CSW 0x23000052, MEM_AP_TAR 0xb087b8 Warn : Block read error address 0xb087b4 Error: JTAG-DP STICKY ERROR Error: MEM_AP_CSW 0x23000050, MEM_AP_TAR...
Kiedyś też korzystałem z tych libów i w zasadzie tylko jedna z opcji (polling, irq-s, dma) mi działała całkowicie - chyba irq-s. Czemu tak się działo nie wiem, niektóre pozwalały tylko na odczyt danych a nie na zapis.
Po podłączeniu dostaję takie błędy od OpenOCD: Open On-Chip Debugger 0.5.0-dev (2011-06-07-18:11) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxyge... Info : only one transport option; autoselect 'jtag' 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 #0 : stm32.flash...
Witam. Poskładałem Jtaga ze strony Freediego Chopina. Niestety nie mogę zaprogramować targeta(płytka HY-Mini z STM32F103VCT6). Wszystko jest konfigurowane wg tutoriala. To pokazuje mi konsola eclipse: Open On-Chip Debugger 0.5.0 (2011-08-09-23:26) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxyge...
Niczego nie odbierasz - nieważne czy przez polling czy w przerwaniu czy przez DMA czy jakkolwiek sobie życzysz - układ MAX-485 masz przestawiony na nadawanie. Odpowiedź przychodzi w czasie Twojego delaya. Jeśli wiesz lepiej gdzie jest problem niż kilka osób (mówiących o tym samym problemie), to w sumie po co pytać na forum? Nie wiem gdzie jest problem,...
A i zrobiłem tak, że nadaję za pomocą DMA oraz odbieram pollingiem Sposób który wybrałeś jest po prostu z założenia zły. Nadając przez DMA osiągniesz max możliwą do uzyskania prędkość. Odbiór przy pomocy pollingu zwykle nie ma prawa w takim przypadku działać, bo kod który go realizuje jest fizycznie zbyt wolny żebyś w końcu nie trafił na overrun (oczywiście...
Witam. Mam problem z programowaniem pamieci FLASH w poziomu programu. Uzywam biblioteki peryferyjnej od ST, ale robiłem tez wlasne procedury. Od czasu do czasu pojawiają sie błedy programowania - niektóre komorki nie zapisuja sie lub zapisują sie błędnie (przed zapisem weryfikuje czy komórki sa puste a po zapisie weryfikuje czy wykonal sie poprawny...
Czyli po SDIO. Więc tak To select between DMA or polling mode refer to * "SD_DMA_MODE" or "SD_POLLING_MODE" F - Programming Model (Selecting Polling for SDIO data Transfer) * ========================================... * //Only SD Card Single Block operation are managed. * Status = SD_Init(); // Initialization Step as described...
Mam problem a jestem trochę dziewicą w temacie. Zrobiłem sobie płytkę developerską na STM32F205. Zrobiłem ja tak, że po prostu podłaczyłem piny zasilania układu do 3,3V, masy - do masy, BOOT0 do masy, kondensatorki dałem zgodnie z manualem do kostki, złacze J-TAG zgodnie z opisem Freddiego, popodpinałem jego piny do odpowiednich pinów na kostce i właczyłem...
Skompilowałem openocd wydając polecenia: ./configure --enable-parport --enable-parport_ppdev make Przełączyłem się nawet na konto root'a ale dalej to samo. EDIT: Spróbowałem skompilować z opcją: ./configure --enable-parport --disable-parport_ppdev Jednak teraz wywala: Open On-Chip Debugger 0.5.0 (2012-01-31-14:10) Licensed under GNU GPL v2 For bug reports,...
Znalazlem juz problem. Gdyby ktos byl ciekaw: Problem elzal w upgradzie CrossWorks. W wersji 2.0.5 -> 2.0.6 zmianie ulegla jedna wartosc domyslna DebugIO Implementation. Uzywalem w projekcie wartosci domyslnej, ktora jeszcze w 2.0.5 byla 'Mem Poll', czyli polling pamięci. Od 2.0.6 to sie zmienilo (nie moge znalezc co jest obecnie wartoscia domyslna)....
atom1477 napisał: No jak dla mnie to każda operacja na SPI to jest jednocześnie zapis i odczyt. Zapis to zapis, odczyt to odczyt. To że sprzętowo odbywa się to jednocześnie, nie znaczy że korzystając z komunikacji jednokierunkowej, trzeba bezwzględnie odczytywać rejestr DR. Najlepszym tego przykładem jest to, że tak mam zrobioną właśnie komunikację,...
wiem, ze 100 razy szybciej napisałbym sobie to od zera, ale trzeba poznać HALA i widzę, ze będzie to droga przez meke :( A po co w ogóle się męczyć? W repozytorium CubeMX (można też to ściągnąć osobno) masz gotowe przykłady jak obsługiwać I2C w HAL w różnych trybach poczynając od prostego pollingu przez przerwania i DMA. I to dokładnie na Twoją płytkę....
Czemu nie użyjesz nowszego OpenOCD i domyślnych plików konfiguracyjnych? Odpowiedź jest prosta - bo i tak nie ma tam plików konfiguracyjnych od STM32W108xx, a te od STm32F10xxxx nie działają. Wersja OpenOCD, którą mam - działała na pewno przez SWD (ale z MCU NXP). Niestety - jeśli próbowałem się połączyć przez samo SWD - efekt był żaden. Dopiero dopięcie...
Czy naprawdę stałaby Ci się krzywda jakbyś jednak poszukał czegoś na forum? Wciąż pytasz o rzeczy które już były wielokrotnie poruszone, oczekując że wszystko dostaniesz na tacy. Ja wiem że teraz studia wyglądają trochę inaczej, ale bez przesady... http://lmgtfy.com/?q=stm32+podgl%C4%85d+... Oczywiście PIERWSZY wynik... No tak w ostatnim...
Mieszanie do tej dyskusji bitbandingu nie ma sensu. Operacja "tylko-zapis" jest atomowa jeśli tylko zmienna którą zapisujesz ma "rozmiar natywny" (lub mniejszy), czyli na ARMach generalnie 32 bity lub mniej. Wszelkie operacje zdradzające cechy "read-modify-write" (a więc "a^= b", "++a", "a += b", "a |= b" itd) NIE są atomowe. To czy akurat "celem" danej...
(at)Piotrus_999 Te tajemnicze biblioteki są dostępne w internecie od ponad 10 lat bo sam używałem ich do pracy magisterskiej. Użycie google pozwoli Ci rozwikłać ta zagadkę. (at)Soberro Według mnie masz problem z problem z obsługą przerwań od przycisku. Byćmoże robisz tam coś czego nie powinieneś. Bez kodu nie da się więcej powiedzieć. Powinieneś zrezygnować...
Witam Nie potrafię tego procka zaprogramować. Miałem go na układzie z wyprowadzeniami UART1 + BOOT1 i 0 Próbowałem programować lock pickiem od freddiego (wyjście UART, bootloader) ale nic z tego (a wcześniej programowałem bliźniaczy układ STM32F103R4T6A taką samą metodą i poszło bezproblemowo). Następnie wyprowadziłem pełnego JTAGA z pinów procesora,...
3. Napisałem obsługę I2C na przerwaniach samodzielnie Nie napisałeś obsługi I2C na przerwaniach tylko masz polling I2C w przerwaniu timera. To jest klasyczny przykład na to jak czegoś nie należy robić. Obsługa I2C w przerwaniach polega na obsłudze przerwań przychodzących z tego waśnie peryferium. i zastanów się jak połaczyć przerwania I2C z przerwaniem...
Jeśli obsługujesz jakiś układ peryferyjny przez polling (a nie w przerwaniach) i chciałbyś móc też wchodzić w tryb obniżonego poboru mocy, to opcja budzenia bez przerwań jest "jak znalazł".
Hej, Napisałem (chyba) najprostszy program w assemblerze który ma szanse zadziałać (no dobra prostsze było by ustawienie jednego rejestru - lecz nie w tym rzecz ;) ). Po skompilowaniu, zlinkowaniu i przekonwertowaniu na format binarny, wgrywam na uC i dzieją się dziwne rzeczy. Otóż, program: arm-none-eabi-as -mcpu=cortex-m3 -mthumb -mapcs-32 -gstabs...
Witam, a więc działam sobie na płytce ZL31 z kamami, w wersji z odłączonym st-linkiem, za programator i debugger służy mi jtag-arm z andtechu, jest to urządzenie na bazie ft2232. Soft to toolchain skonfigurowany podług tutka freddiego chopina. Wszystko ładnie działało jak trzeba do dzisiaj, gdy w którymś momencie zauważyłem, że skompilowany program...
Dzień dobry, Nie mogę sobie poradzić z zaprogramowaniem stm32f4 na płytce discovery. Do programowanie używam wbudowanego st-lika. Mój system to Ubuntu 10.04. Program jaki chciałbym wgrać to przykład ze strony Freddiego Chopina pod tą właśnie płytkę. Jedyne co zmieniłem to w Makefile'u toolchain na arm-linux-gnueabi (linaro). Ogólnie program się niby...
Męczę bibliotekę USB z ST. I zaciąłem się w jednym miejscu, chciałem przestawić długość danych z 8 bitów na 16 bitów jednak wydaje mi się że biblioteka nie bardzo chce z takimi danymi współpracować. Może miał ktoś z was podobną zagwozdkę? A może ktoś będzie umiał mi pomóc? Na razie próbowałem zmienić rozmiar wysyłanych danych przez edycję Deskryptorów...
co ma prędkość procesora do programu, który pewnie większość czasu spędza w pollingu: while (__HAL_SPI_GET_FLAG(&hspi1, SPI_FLAG_RXNE) == RESET); jak tu na ten przykład.
Zacznij od zrobienia tego na pollingu, czyli w pętli while(1), bez przerwań, ale z poprawnym odczytywaniem flag TXE i RXNE przed zrobieniem czegokolwiek. Proponuje więc wrzucić do tej pętli coś takiego: [syntax=c]if ((USART3->SR & USART_SR_RXNE) != 0) { uint16_t x = USART3->DR; while((USART3->SR & USART_SR_TXE) == 0); USART3->DR = x; }[/syntax] Tym...
Witam, Próbuje uruchomić przykład oparty na bibliotekach ST (obsługa karty SD przez SDIO), niestety przykład nie do końca działa. Wszystko jest ok do momentu wejścia do funkcji: SD_Error FindSCR(uint16_t rca, uint32_t *pscr) w której program zawiesza się na następującym elemencie: [syntax=c] while (!(SDIO->STA & (SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL...
Witam. Po ogarnięciu portów i/o chciałem przejść do konwersji ADC. Początkowo zakładam, że nie korzystam z przerwań, nie korzystam z DMA. Screeny z Cube: http://obrazki.elektroda.pl/6506556500_1... http://obrazki.elektroda.pl/5974943000_1... http://obrazki.elektroda.pl/2033015600_1... Plik main: /** ****************************************...
Pasma 40 MHz nie, ale 40 Msps mam nadzieję że tak. Tylko chciałbym się dowiedzieć który sposób (bez stosowania dodatkowych zewnętrznych układów) będzie najszybszy. Ale przecież podaliśmy jeden sposób :) DMA na timerze. Odczytywanie wejść + zapis do tablicy + inkrementacja wskaźnika jest z automatu, a w pollingu tracisz czas na wykonanie kilku rozkazów....
Czy ustawienie priorytetów załatwi problem czy może jest jakiś inny powód że przestało to działać? Definitywnie to drugie. Na 99% Twoje przerwania trwają zbyt długo lub użyłeś w nich (pośrednio lub bezpośrednio) funkcji blokujących/oczekujących/pollingu. Jeśli zaczniesz kombinowac z priorytetami bez zrozumienia przyczyny, to tylko wpędzisz się w więcej...
To co napisałem to wiem po co od razu taka uszczypliwość , timery wykorzystuje do sterowania pinem CSN i CE chyba że powiesz mi jak to lepiej zrobić to zamieniam się w słuch, ok same flagi może trochę zaciemniają obraz bo brak do nich komentarzy, po krótce wygląda to tak. -gdzieś w programie wywołuje sobie softwerowo przerwanie od pinu IRQ -w przerwaniu...
przerwania polling przerwać polling stm32 projekty
radmor ul1200 metoda mostkowa grzeje manta
netflix pobieranie lodowka marka
Jakie temperatury wytrzyma PC i drukarka laserowa zimą? Wybór klimatyzatora do mieszkania w bloku