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 :)
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
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...
Tyle że to jest bezsensu... Przecież flaga ustawia się sama - wystarczy sprawdzać rejestr statusowy timera (czy czego tam trzeba) i już wiadomo, że można coś robić. Tym sposobem z "przerwań" robi się najzwyklejszy "polling". 4\/3!!
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...
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...
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...
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,...
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.
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,...
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...
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...
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...
Witajcie, mam problem z HID-em w STM32F103VB. Chce wysłać więcej bajtów niż, jeden tak jak jest to w przykładach do stm-a. Interesuje mnie transfer z PC->STM. Mój problem polega na tym, że po skonfigurowaniu mikro kontrolera i próbie wysłania pakietu za pomocą SimpleHIDwrite, program wypisuje mi komunikat: "WRITE ERROR: Urządzenie dołączone do komputera...
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...
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...
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...
A pamiętasz o tym, że czas zapisu dla tej pamięci wynosi do 5ms (przy zapisie bajtu lub bloku 4 bajtów). Czyli jeżeli nie stosujesz odpytywania (pollingu) o gotowości, to nie możesz zapisywać z większa częstotliwością niż 200Hz. Cytat z karty katalogowej: If the device is busy with the internal Write cycle, no Ack will be returned Pozdrawiam JarekC
Bez zmian. openocd -f /home/sulfur/openocd-0.6.1/share/openocd... -f target/stm32f1x.cfg -c "adapter_khz 1; reset_config trst_and_srst; init; reset init;" Open On-Chip Debugger 0.6.1 (2012-10-12-19:56) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxyg... Info : only one transport...
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...
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,...
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: /** ****************************************...
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...
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ę,...
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ę......
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ę....
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....
Otwórz konsolę, wpisz `telnet localhost 4444` a następnie spróbuj np. polecenia `halt`, `poll`, `flash info 0` i zobacz co ciekawego wyświetli. ~$ telnet localhost 4444 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger > halt > poll background polling: on TAP: STM32F103C8Tx.cpu (enabled)...
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...
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...
(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ć...
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...
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ł".
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...
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...
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...
Faktycznie, rozwiązanie kwestii działania SPI było dosyć proste i po sprawdzeniu - SPI działa. Odczytuję zapisany wcześniej rejestr poprawnie. Teraz mam inny problem. Poniżej zamieszczam program z pliku main.c, w którym są dodane miejsca wysyłania kolejnych numerów przez UART i program zatrzymuje mi się po wysłaniu numeru 88. Nic więcej się nie dzieje,...
Czołem! Chyba znowu utknąłem w bojach z STM32F2. Wysyłam taką komendę: openocd -f interface/jtagkey.cfg -f target/stm32f2x.cfg -c "init; reset halt; flash write_image erase out/test.hex; reset run; shutdown" i dostaję odpowiedź: Open On-Chip Debugger 0.5.0 (2011-12-03-10:15) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxyge...
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:...
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...
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...
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...
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...
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...
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,...
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.
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...
niestety nie mam, ale to jest tylko jakieś pierdzenie (nie da się w tym znaleźć żadnych powiązań z tym wavem). Wydaje mi się, że powodem mogą być te przerwy w nadawaniu powodowane odczytem karty? Może powodowane jest to że robię to w pollingu i powinienem przejść z powrotem na przerwania (w którym miałem problem z wysyłaniem próbek - dlatego testuje...
A korzystasz z przerwań czy z pollingu? 4\/3!!
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...
shy_moonŁ Taaak, w typowym przemysłowym urządzeniu UARTy otwiera się i zamyka dynamicznie, najlepiej przez system plików, i co 15 sekund zmienia się szybkość każdego UARTa i format danych/parzystość. Z tego to powodu MUSIMY mieć koniecznie jedną uniwersalną procedurę z czterema parametrami do inicjowania dowolnego UARTa na dowolną szybkość i format...
1. W jaki sposób piszecie kod do obsługi peryferiów występujących pojedyńczo w mikrokontrolerze? Np RTC, LCD, RNG, czy CRC. Najzupełniej normalnie, czyli jako zwyczajną klasę. Jeśli jest tylko jeden taki układ peryferyjny, to w projekcie po prostu mam jeden taki obiekt. Z pewnością nie bawię się w żadne singletony czy klasę w której wszystko jest statyczne....
I2C ma pewne ograniczenia opisane w erracie, obsługę odbioru chyba najlepiej zrobić w DMA. Jest pdf opisujący obsługę I2C [url=http://www.st.com/internet/com/TECH... STM32F10xxx I²C optimized examples Poniżej wklejam swój kod funkcji odbioru oparty o polling, bazuje ona na...
To semafora nie popchnę? to ja nie chcę tak:] Niestety nie (; Zasadniczo używanie dowolnej funkcji samego RTOSa jest wtedy zabronione i nic ciekawego się nie da na to poradzić wprost. Interfejs przerwanie <-> wątki trzeba wtedy zrobić jakoś cudacznie, np. przez polling.
Cześć wszystkim, Zwracam się do Was z prośbą o pomoc w rozwiązaniu problemu z poprawnym wysyłaniem stringa po UART za pomocą przerwania nadawczego. Męczę, się z tym już któryś dzień, czytam reference manuala, i cały czas nie udało mi się tego problemu rozwiązać. Ogólnie rzecz biorąc funkcje do buforowania zdarzeń odbiorczych/nadawczych są sprawdzone...
Ok ogarnąłem to na nowo. Ale problem pozostał. Zrobiłem tak. Goły przykład HID. Usunięcie raportu HID. Modyfikacja deskryptora konfiguracji: wysyłanie danych działa tylko wtedy kiedy nic nie wysyłam z komputera. Już na prawde nie wiem co się dzieje. Powinno działać, szczególnie przy trybie interrupt. Stosuję taką komunikację, że komputer ustawia jakiś...
To napisz sobie skrypt który będzie odpalał OpenOCD z odpowiednimi komendami, czekał aż się samo zamknie, czekał jakąś tam ilość czasu (żebyś zdążył podpiąć kolejny układ) i odpalał OpenOCD ponownie. Osobiście zamiast "czekał jakąś tam ilość czasu" wolałbym chyba aby skrypt czekał aż np. naciśniesz na klawiaturze spację albo dowolny klawisz. coś własnie...
Witam W ramach poszerzania wiedzy i umiejętności postanowiłem rozpocząć zabawę z architekturą ARM i natrafiłem na problem - nie potrafię poradzić sobie z transmisją UART przez kanał DMA, w trybie polling wszystko działa. Napisałem program w oparciu o CooCox IDE i HAL drivery. Transmisja w trybie poling śmiga, zaś próbując wysłać coś przez DMA - kiszka....
To jest z przykładu dołączonego do noty: [syntax=c] #define OAR1_ADD0_Set ((uint16_t)0x0001) Status I2C_Master_BufferWrite(I2C_TypeDef* I2Cx, uint8_t* pBuffer, uint32_t NumByteToWrite, I2C_ProgrammingModel Mode, uint8_t SlaveAddress ) { ... else if (Mode == Polling) /* I2Cx Master Transmission using Polling */ { Timeout = 0xFFFF; I2Cx->CR1 |= CR1_START_Set;...
Witam bardzo proszę Was o pomoc. Męczę się już z tym DMA na I2C z około miesiąc:( Chodzi o to, że niby wszystko działa, a np ID żyroskopu, który mam podpięty jest błędne. Dodam, że właściwe ID zwraca kod bez użycia DMA - polling. Pozdrawiam A.T.
Witam chciałem wykorzystać DMA do odczytywania wartości z akcelerometru poprzez I2C. Na stronie ST udostępniono przykładowy kod wykorzystujący DMA. Poniżej udostępniam przykład funkcji wysyłania danych. No i niby wszystko rozumiem, oprócz jednej podstawowej rzeczy. W którym miejscu jest to niby szybsze niż zwykły transfer poprzez i2c, tzn. wysyłanie,...
Gorzej, jeśli algorytm tego nie gwarantuje - a ja właśnie takie urządzenia ostatnio głównie robię. A jaka jest różnica, czy nie nadąży na przerwaniach, czy przez DMA? ;] Jak nie nadąży, i tak któreś dane musisz zadeptać, albo przyblokować nadawce RTSem. A to może robić supervisor, którego częstotliwość odpalania jest już tylko zależna od głębokości...
Ad.2 NIc sie nie stanie, tylko program moze róznie działać w zalezności jak sie zsynchronizują wątki tzn raz będzie działał a raz nie. No ok :] Skoro dla Ciebie raz_dziala_raz_nie != nie_dziala, to trwoga... Jesli juz precyzowac, niewiele zalezy od synchronizacji watkow. Zalezy od uzycia danego peryferium. Im czesciej watki beda konkurowac o jedno...
Tylko, że w tej lekturze jest tylko napisane, że jest to podobne do pollingu. Więc trzeba dodatkowo kasować ten bit ?
Da się to zrobić robiąc heapa programowego, no ale tu pozostaje kwestia tego jak tym heapem zarządzać. Można mieć heap per object (każda klasa ma z góry założoną pulę pamięci jaką można przeznaczyć na obiekty), ale w bardziej złożonych przypadkach wymaga to napisania jakiegoś chociażby prostego MemoryAllocatora, który zajmie się sprawdzaniem wolnej...
Wygląda po prostu jakby ADC nie było w ogóle zainicjowane. Polling zacina kompletnie procek, It i DMA nie są wyzwalane. TempSensor.cpp [syntax=c]/* * TempSensor.cpp * * Created on: 13 gru 2015 * Author: KryQ */ extern "C" { #include "stm32f4xx_hal.h" } #include "TempSensor.h" #include "ErrorHandler.h" #include "MathLib.h" TempSensor::TempSensor(uint8_t...
Witam, Od jakiegoś czasu zmagam się z komunikacją SPI pomiędzy dwoma procesorami stm32l452re. Transmisją i odbiorem danych zajmują się oba procesory. Wysyłam 6 bajtów po 16 bitów, co daje nam sumarycznie 3 przerwania. W taskach od FreeRtosa transmisja danych i sprawdzanie otrzymanych bajtów odbywa się w nieskończonej pętli while. Problem dotyczy tego,...
Cześć, ostatnio napisałem bootloader na STM32F4 pracujący w trybie USB HOST FS. Całość chodzi na Distortosie, używa HAL i bibliotek wygenerowanych przec CubeMX i zmodyfikowanych lekko przeze mnie. Modyfikację polegają głownie na: -modyfikacji obsługi przerwania: [syntax=c] void USBH_on_irq(void) { NVIC_DisableIRQ(OTG_FS_IRQn); usbh_irq_flag = true;...
Jak coś już coś muszę na pollingu robić to: tick_ms_irq musi być wywoływane w przerwaniu od tmera co 1ms. BTW: Ten kod z HAL'a to niezła padaka: if, if, if, if .... :)
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...
Witam. Zauważyłem, że coś jest nie tak z kilkoma pinami mikrokontrolera, wziąłem miernik i okazało się, że takie były napięcia na pinach : PIN HIGH LOW PA15 3.3V 0V PA14 2.18V 0V PA13 3.3V 1.81V PA12 3.3V 0V Dodatkowo debuger wykrzacza się na linijce z : Info : Previous state query failed, trying to reconnect Error: jtag status contains invalid mode...
Co do tłumaczenia not i korzystania z bibliotek to moje zdanie jest takie że początkującemu programiście takie podejście bardzo odpowiada. Ponadto wpajanie nawyku używania standardowych funkcji przygotowuje taką osobę do współpracy z innymi programistami. Zdarzyło mi się kilkukrotnie pisać kod z drugim programista i nie wyobrażam sobie żeby każdy z...
A więc stworzyłem deskryptory dla urządzenie kompozytowego CDC+HID. Obserwacje: 1. Jednak system ma również oddzielny driver dla klasy kompozytowej, instaluje go najpierw. 2. Potem instalują się sterowniki HID oraz Virtual COM (CDC) 3. Niestety Virtual COM nie chce mi się zainstalować, mimo że używam drivera, który działał, gdy urządzenie nie pracowało...
W jaki sposób wysyłasz dane? Przez DMA, w przerwaniach od TXE czy przez polling? To co opisujesz przerabiałem przy próbach odczytu danych przy użyciu DMA, kiedy bit EN w DMA->CCR był ustawiany przed otrzymaniem ACK ze slave'a. Po korekcie programu, nie notowałem innych problemów. Możesz pokazać tę część programu, która odpowiada za transmisję? STOPF...
No coś racji masz z tymi od ST... :) Zajmę się tą stertą jak rozwiążę obecny problem... Coś nie tak, bo mi się to nie chce debuggować (Twój JTAG, reszta jak widać): [syntax=bash]Open On-Chip Debugger 0.10.0 Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : FTDI SWD mode enabled swd adapter speed: 2000 kHz...
Sorry, oczywiście ten plik należy stworzyć samemu. To jest z projektu testowego: [syntax=c] #include <stm32f4xx.h> #include <usb_dcd_int.h> #include <usbd_ioreq.h> #include <usbd_usr.h> extern USB_OTG_CORE_HANDLE USB_Dev; USBD_Usr_cb_TypeDef USR_cb = { USBD_USR_Init, USBD_USR_DeviceReset, USBD_USR_DeviceConfigured, USBD_USR_DeviceSuspended,...
Po co wysyłasz poprzez polling a odbierasz w przerwaniu? Bez sensu to kompletnie.
Szkoda :cry: ... DMA requests are generated only for data transfer. In reception, DMA requests are generated by the Data Register becoming full (RXNE = 1). All remaining events (SB, ADDR etc...) must be managed by polling or interrupts . In the examples accompanying the application note, they are managed by polling. W każdym razie dzięki za pomoc :)...
Używam KT-LINK, OpenOCD 0.7.0, libusb. Środowisko działa prawidłowo, kilka identycznych płyt z STM32F4xx działa prawidłowo, debug, flash itp. Jedna idzie opornie. Po podłączeniu się OpenOCD: 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...
I2CInProgress zeruję po odebraniu wszystkich bajtów. W funkcji głównej rozpoczynam tylko wysyłkę 1 bajta (nr rejestru czujnika z którego mam czytać dane), a w przerwaniu od I2C po odebraniu 6 bajtów ustawiam na 0 (w podglądzie jak zatrzymam kod to jest 0). albertb myślałem, że tak jest najlepiej, ale w sumie mogę robić tak, że jak już 2 razy odbiorę...
Skorzystałem z CAN example który jest w COIDE: http://obrazki.elektroda.pl/5876838600_1... bit w rejestr MSR nie chce sie wyzerować.
Dochodzę do wniosku, że nie zdziałam za dużo opierając się na gotowej bibliotece do obsługi systemu plików. Ja dochodzę do wniosku, że Ty dochodzisz do błędnego wniosku [; FatFS, poprawnie skonfigurowany, jest w stanie zmielić dane z wystarczającą prędkością. Nawet zrobiony mega tępo działa całkiem szybko... Mam taki projekt, w który jest system operacyjny,...
Witam Pracuję na F405 i F415 teraz kupiłem wersję F427 która ma 256kilo ramu, jak chcę zaprogramować Flash OpenOCD daje mi takie coś [syntax=actionscript]Open On-Chip Debugger 0.7.0 (2013-05-05-10:44) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxyg... Info : only one transport option; autoselect 'jtag'...
Cześć! Wychowany na pollingu i AVRach , proszę o pomoc. Odbieram dane UART , 19200 8N1. Schemat ramki jest taki: XX A3 YY ZZ NN Paczka zawiera 8 takich ramek , i lecą one bez przerwy. ostatni bajt to suma kontrolna, prosta suma poprzednich bajtów. drugi bajt to zawsze 0xA3. Problemów co najmniej mam kilka. jak myślicie: Odebrać 40 bajtów, odszukać pierwsze...
Witam, Posiadam płytkę DISCOVERY z STM32F4 i próbuję uruchomić USB w trybie device. Napisałem prosty program w C# do wysyłania danych i wygląda to tak, że mogę wysłać jedynie 72 paczki danych. Steruję zapalaniem diod na płytce za pomocą strzałek na klawiaturze po 72 kliknięciu transmisja się zawiesza. Ma ktoś pomysł na co powiniennem zwrócić uwagę?...
3) Modbus - byłby idealny ale z tego co wstępnie czytałem to dość problematyczny w implementacji w STM32 - prawda to? Modbus jest bardzo prosty i jest dostępna (niestety stara) biblioteka FreeMODBUS, która implementuje slave'a. Problemem jest master, bo niestety do niego aż tak wielu bibliotek nie ma i tu byłby większy problem - ja np. w projektach...
Co to są za bzdury, gdzie ty widziałeś 16bitową atmege?! ------------- Rodzina propellerów nie zadziwia niestety niczym - scalaki są drogie, ciężko dostępne, i wolne . Naczytałem się kiedyś materiałów na ich temat. 1. Spin to badziewie. Sami się przyznali do tego, że soft w spinie marnuje sporo mocy obliczeniowej rdzeni. Siłę procka widać dopiero wtedy,...
Do działającej konfiguracji FATFS z SDIO zapragnąłem dodać obsługę DMA będąc twardym gdyż 1 raz go używam. Jednak nie działa to jak powinno. Przeanalizowałem już wszelkie pomysły i do nowych niestety nie doszedłem. Kod funkcji read: [syntax=c]uint32_t SD_SDIO_read(uint8_t *buff, /* Pointer to the data buffer to store read data */ uint32_t sector, /*...
Hej, korzystam z USARTA na STM32L4. Podczas odczytu / wysyłu danych zakładam że szerokość ramki jest stała (4 bajty). Odczyt 4 bajtów jest prosty i z tym nie mam problemu. Projekt zakłada jednak, że raz na jakiś czas dane mogą przyjść niepełne - np. 2 lub 3 bajty. Z obsługą takiej sytuacji mam jednak problem. Chciałem do tego wykorzystać flagi [syntax=c]USART_ISR_IDLE[/syntax]...
[syntax=c] Open On-Chip Debugger 0.7.0 (2014-01-29-12:41) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/doxyg... srst_only separate srst_nogate srst_open_drain connect_deassert_srst Info : This adapter doesn't support configurable speed Info : STLINK v2 JTAG v16 API v2 SWIM v0 VID 0x0483 PID 0x3748 Info...
W takim razie z cyklu nie zadane pytania, prosze o przykład jakiegoś bardziej precyzyjnego pytania wraz z odpowiedzią w tym zakresie. Chętnie się dowiem czegoś. Wiem że Twój nick zobowiązuje i trolowanie to Twoja domena, ale wystarczyło przeczytać trochę więcej niż to co zacytowałeś. Pomogę: Można na nie patrzeć jak na "jak wygląda dostępność driverów...
Rzeczywiście w AC6 jest inna wersja OpenOCD - 0.9.0-dev-00416-gc6629a9-dirty i jest krok do przodu. OpenOCD łączy się z tylko gdy trzymam wciśnięty reset bo inaczej: [syntax=OpenOCD] Open On-Chip Debugger 0.9.0-dev-00416-gc6629a9-dirty (2015-08-03-16:31) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info :...
Hej! Wbrew pozorom, projekt ciągle żyje i doczekał się kilku usprawnień. Oto kilka z nich: - pełna obsługa dla komunikacji po usarcie oraz i2c (polling i przerwania) wraz z opcjonalnym zwracaniem statusu co poszło nie tak - obsługa crc32, rng, watch dogów i exti (póki co tylko piny) - możliwość ustawienia zewnętrznego timera dla systemowych delay'ów...
Dzięki Fredy za pomoc. Jenak będzie jak zasugerowałeś (prawdopodobnie), że uszkodzony procesor. Mam jeszcze jedna prośbę abyś mi wyjaśnił co może oznaczać Error: EmbeddedICE v7 handling might be broken. Czy to może oznaczać uszkodzenie procka. Szukałem na necie i znalazłem jakieś wzmianki ale nic jednoznacznie co to oznacza. Telnetem się łączę wiec...
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)....
Witam! Po latach odkopałem "bohatera wątku" i próbuję go odpalić. Niestety nie chce zbytnio współpracować a openocd wypisuje co następuje: C:\Documents and Settings\dell>openocd -f interface/jtagkey.cfg -f target/stm32f 1x.cfg Open On-Chip Debugger 0.8.0-dev-00277-g871b34c (2013-12-15-11:29) Licensed under GNU GPL v2 For bug reports,...
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...
przerwać polling przerwania polling stm32 f103rb
licznik zwojów nawijarki motorola wyświetlacz pasek przekaźnik światła skoda felicia
telefunken czarny ekran mikrokomputer cobra1
Kody błędów pralki Samsung Eco Bubble - diagnostyka Regionalizacja telewizorów Samsung: dostępność aplikacji i usług