Rejestr DR jest "specjalnej troski" - wpisując coś do niego rozpoczynasz nadawanie, odczytując go odczytujesz to co interfejs SPI odebrał wcześniej. Zapis i odczyt odwołują się fizycznie do innych elementów układu peryferyjnego. Innymi słowy - wartość odczytana != wartość wpisana (pomijamy oczywiście...
Już znalazłem błąd. Nie ustawiałem FSMC_BCR1->WREN; [url=][STM32] Obsługa LCD poprzez FSMC - HardFault
Witam :) Chce zapisać zmienną do pamięci EEPROM w procesorze. Testuje peryferia dynamicznie i nie wiem co się z nimi dzieje w trakcie działania. Wysyłają do mnie dane po USARCIE i chciałbym je zapisywać w wewnętrznej pamięci. Znalazłem realizacje zapisu, lecz wszędzie bazuje się na bibliotekach HAL,...
Witam, Mam problem z zapisem rejestrów z poziomu biblioteki j2mod (Java) w STM32 (FreeModbus). Problem polega na tym, że przy użyciu funkcj i WriteMultipleRegistersRequest a następnie wywołaniu metody execute() na ModbusSerialTransaction . Dane dobrze się wysyłają do STM32 (sygnalizacja diodami)...
Witajcie, Zmieniam właśnie w moim projekcie gyro i akcelerometr na cyfrowy MPU 6050 i mam problemy z i2c (pierwszy raz tego czegoś używam :). Problem jest taki, że przy odbiorze danych po losowej ilości odebranych danych (kilka do kilkunastu odczytów, proc się zawiesza na 99% tutaj [syntax=c] //...
Sposób mam bardzo prosty - po kolei ładuję rejestry sterujące każdego peryferiala i dzięki temu kod inicjujący wszystkie peryferia w dużych projekstach nie przekracza kilkudziesięciu linii. żadna pseudowuniwersalna biblioteka nie obejmie wszytskich potrzeb projektu, a inicjowanie peryferiów potworkami...
Moja konfiguracja spi, plus odczyt i zapis rejestru. Pewnie jest nie optymalnie ale działa:), nie używam sprzętowego NSEL żeby później móc czytać z bufora w trybie burst. Oczywiście do inicjalizacji gpio korzystam z headear'a od Freddiego. [code][syntax=c] void Rfm23Init() { //PA5 -> SCK -> SCK GPIOA->CRL...
Witam, W kodzie nie udaje mi się ani odczyt, ani zapis. Mam STM32 128kB. Dopiero zaczynam z nim. Program działa w ten sposób, że po odczycie naliczone w danej sesji pracy motogodziny mają się zapisać do jakiejś zmiennej wraz z odczytaną liczbą z flasha i razem ponownie zapisane na końcu po wyłączeniu...
Witam, Mam następujący problem przy wpisie do rejestrów konfiguracyjnych cc1100, do takich rejestrów jak np. (PKTCTRL0, FSCTRL0, TEST2, TEST1, TEST0, FSCAL2, FSCAL3, MDMCFG2) nie da się wpisać żadnej wartości. Dane wygenerowane przez SmartRF Studio więc są dobre. Konfiguracja spi też na 99% dobra bo...
Witam, Realizuję pracę inżynierską na zestawie uruchomieniowym ZL27ARM z mikrokontrolerem STM32. Praca jest w zasadzie gotowa, ale niestety nie działa do końca poprawnie. Praca jest tworzona głównie w oparciu o książkę STM32 Aplikacje i ćwiczenia w języku C. Środowiskiem programistycznym wykorzystywanym...
Cześć Chciałbym zrobić emulowanego EEPROM-a i mam problem z odblokowaniem zapisu do pamięci FLASH. Pierwsze co zrobiłem to FLASH->KEYR=0x45670123; FLASH->... Następnie sprawdziłem stan bitu LOCK w rejestrze CR i jest na 0 czyi dostęp do flasha jest możliwy. Chciałem zrobić...
No to wszystko czytałem ale chyba nie rozumiem. CNF musi być ustawiony programowo, żeby wpisać coś do tych rejestrów, zapis jest wykonywany kiedy CNF bedzie wyzerowany przez program po jego ustawieniu.... takie trochę mydlate mydło, więc jak powinno być? CNF = 1 zapis np. RTC_CNT CNF = 1 CNF = 0 alboo...
Rada praktyczna: ustaw preskaler tak, żeby podzielony zegar timera miał jakiś "okrągły" okres, np. 1, 10 lub 100 us, wtedy nie będziesz musiał pracowicie wyliczać wartości okresu timera, np. preskaler 7200 -> okres zegara 100 us; w celu uzyskania jednej sekundy ładujesz do ARR 10000-1. Twój problem,...
OK. Udało się wreszcie. Problem tkwił w funkcji do zapisu danych. Wydawało mi się że zapis był realizowany poprawnie. Zapisywałem zmienną 16 bitową naraz a wolno tylko po pół słowa, jednak po zapisie zbyt dużej ilości danych sprawdzałem tylko jedną komórkę i wyświetlałem na wyświetlaczu i się zmieniała...
OpenCV uruchamiany jest głównie na wysokowydajnych platformach obliczeniowych czy mocnych mikroprocesorach, ale pakiet ten może wykonywać kilka rodzajów aplikacji do przetwarzania obrazu na prostych mikrokontrolerach. Przetwarzanie obrazu stało się częścią naszego życia. Nikogo nie dziwi rozpoznawanie...
Problem rozwiązany mój błąd należało jeszcze w rejestrze RCC->CFGR3 ustwić bit I2C1SW, który włącza zasilanie z SYSCLK. Dla potomnych wrzucam działający kod obsługi I2C1 na STM32F303VC6 [syntax=c] RCC-> CFGR3 |= 1<<I2C1SW;// SYSCLK dla i2c RCC->APB1ENR |= 1<<I2C1EN; //włacz...
Witam serdecznie, dziś chciałbym zadać pytanie z serii "dlaczego nie działa...". Od dłuższego czasu mnie to zastanawia i rozwiązania nie widzę. Mianowicie chciałem, żeby mój kod zajmował jak najmniej miejsca - a zatem optymalizujemy. do -O2 wszystko jest w jak najlepszym porządku, natomiast przy...
Jakiś czas temu pisałem już o moich problemach z SPI na STM32. Niestety problemu nie umiem sam rozwiązać. Chodzi o odebranie pierwszego bajtu danych który powinien automatycznie zostać wpisany do rejestru po wysłaniu pierwszego bajtu. Niestety mimo wielu prób i zmian konfiguracji SPI nie udało mi się...
W tym samym rejestrze (AFIO->MAPR) znajduje sie bity konfiguracyjne JTAG/SWD. Dokumentacja mówi, że są one tylko do zapisu, a odczyt tych bitów daje wynik niezdefiniowany. Może warto sprawdzić bezpośredni zapis do rejestru [syntax=c]AFIO->MAPR = AFIO_MAPR_TIM4_REMAP; // bez |[/syntax] albo z maską na...
Te operacje muszą być wykonywane atomowo, ponieważ to są trzy różne operacje odczyt rejestru - modyfikacja - zapis do rejestru. Nie powinno cię dziwić, że jeśli między tymi operacjami wystąpi przerwanie, w którym modyfikowane są ODR bitbandingiem i nie tylko to cała operacja z przerwania zostanie anulowana....
Dzieki Panowie, udało mi sie uzyskać zamierzony efekt kierując sie zaleceniami kolegi Sareph , dobrze wiedzieć jak sie ustawia poszczególne bity rejestrów, jednak mam pytanko: właśnie zrobiłem to w taki sposób jak powyżej, bo nie wiem jak ustawić bit25 jeżeli pod nazwą SWJ_CFG Piotrus_999 napisał,...
z tego co rozumiem żeby dokonać jakiejkolwiek zmiany w rejestrze AIRCR należy tam również wpisywać 0x5FA po to by zapis nie został odrzucony. Chyba że źle kombinuje:P Dobrze kombinujesz, wcięło mi ten zapis :P SCB->AIRCR = AIRCR_VECTKEY_MASK | (3<<8); gdzie: #define AIRCR_VECTKEY_MASK...
To API jest bez sensu więc nie ma co szukać o tym informacji. Dlaczego uważasz, że jest bez sensu? To według Ciebie lepiej pisać odwołując się bezpośrednio do rejestrów? Korzystanie z tej biblioteki poza tym mają również inne wady: 1) Struktury inicjalizacyjne marnują pamięć. Te struktury...
Czy ktoś zmusza Cię bronią do używania tej biblioteki? Przecież żeby wystartować transfer trzeba (z tego co pamiętam) wykonać JEDEN zapis do JEDNEGO rejestru, a ty chcesz wywoływać 3 funkcje... To już szybciej będzie te dane ręcznie kopiować... Tutaj masz np przykładową PEŁNĄ konfigurację dwóch kanałów...
Panuje nawet pogląd, że LPC się programuje tak jak AVR bo się używa zapisów z rejestrami. Wiele ludzi twierdzi, że są prostsze niż STM. ST upakowało naprawdę wypaśne peryferia, ale też je się da programować jak AVR:) Najbardziej śmieszy opinia o tych "mega-wypaśnych" ustawień, jak to musi być skomplikowane,...
Nie wiem z jakiej dokumentacji wziąłeś komendę 0x0012 dla sterownika w mojej nocie aplikacyjnej SSD1289 taki rejestr nie istnieje. Poza tym w czasie inicjalizacji sterownika SSD1289 po każdej komendzie wysłanej do rejestru trzeba odczekać ok. 50ms przed wysłaniem żądania zapisu kolejnego rejestru. Dane...
wojlej: ADC trzeba skalibrować przed włączeniem go do pomiarów. Zobacz, które bity NIE mogą być ustawione podczas kalibracji - jest o tym w manualu. Podpowiem - ADEN, czyli enable. Co do Twoich obaw dot. rejestrów - jeśli potrafisz "ogarnąć" pola struktur, to potrafisz i rejestry. Dla mnie pierwszy...
Dodajmy, że jak już ktoś musi zmieniać stan portu programowo, to w STM32 służą do tego raczej rejestry BSRR i BRR, a w innych uC albo analogiczne rejestry pod innymi nazwami (np. FIOSET, FIOCLR w LPC17xx) albo zapisu maskowany (np. w LPC11xx). W każdym razie nie robi się tego przez programowe operacje...
Mam jakąś podstawowa bibliotekę z makrami peryferiów. Wiem że dane makro odpowiada bitowi w rejestrze statusowym i sprawdzam czy jest ustawione czy nie tą metodą zrobiłem już i2c i usart. Jakąś? tzn. jaką. Bo na pewno są tam makra o których mowie i korzystaj z nich zamiast tworzyć własne dziwactwa....
Witam. Zaczynam zabawę z mikrokontrolerami STM32 a dokładniej ze rdzeniem Cortex-M3. Posiadam płytkę z mikrokontroler STM32F103VBT6. Nie chcę się bawić w gotowe biblioteki tylko programować "po rejestrach" i tutaj pojawia się pierwszy problem - które środowisko wybrać. Próbowałem Atollic TrueSTUDIO...
Witam wszystkich Jestem w trakcie realizacji projektu STM32 F4 + kamera MT9D111, który zakłada odczyt ramki z kamery i zapis na kartę SD. Rejestry kamery programuje się poprzez interfejs I2C. Chciałbym sprawdzić czy mam dobrze ustawioną tą komunikację i w związku z tym mam pytanie czy bez DCMI oraz...
Dzięki wielkie! wałkowałem to ładne parę dni a takiej głupiej pomyłki nie zauważyłem ;) za to poznałem dość dobrze kod fatfs ;) ... oprócz zapisu TRZEBA także odczytać rejestr SPI...
Odpowiedź na Twoje pytanie jest dosyć prosta - protokół SWD nie ma rozkazu zapisu do flash i tego się po prostu nie da tak zrobić jak zapisu do RAM. Oprogramowanie na PC, które się komunikuje przez SWD z układem (np. program do ST-Linka, OpenOCD) wgrywa do RAMu specjalną procedurę, która fizycznie realizuje...
ARM7, Cortex-M3 to - powiedzmy - "handlowe nazwy" architektur, odpowiednio ARMv4 i ARMv7-M. Oczywiście nowsza jest ARMv7 czyli własnie Cortex. ARM7 jest już nieco przestarzały, a układ LPC2106 to w ogóle antyk - NXP od czasu tego układu wypuściło bardzo wiele fajnych układów z tym rdzeniem, dokładnie...
Dzięki za odzew. Rozumiem, że nie miałeś praktycznego kontaktu z tą biblioteką. Jak chcesz opracowywac od podstaw to zycze powodzenia W złożoność tematu nie wątpię i właśnie dlatego zainteresowałem się ta biblioteką. Skoro ST nie definiuje rejestrów w CMSIS, tylko w "low level driver" używa makr...
mylisz się |= - potrzebujesz dwóch operacji odczytu i zapisu a przy BB tylko jednej Bit banding się nie opłaca jeżeli chcesz ustawić kilka bitów w jednym rejestrze, ale dla zmiany/odczytu pojedynczych bitów nic lepszego nie ma. No i wykorzystałem rejestr ODR do którego się poprostu wpisuje...
Rejestr GPIOx_ODR jest standardowym rejestrem do odczytu i zapisu do portów. Rejestr ODR jest dodatkowo rejestrem stanów wyjściowych - nie da się z niego odczytać wejść. Wszystkie zagadnienia poruszone są w manualu. 4\/3!!
Jeszcze trzeba dodać że to linia FSMC_NE1 obsługuje pamięć NOR/PSRAM która to jest tych na adresach od 0x6000 0000. A linia A16 ma wagę 16 czyli zwiększa adresy co 65536. Ale że adresowanie zewnętrznej pamięci jest co 2 bajty bo pamięć jest 16-to bitowa to adresy widziane od strony procesora będą szły...
Przepraszam , że nie dokończyłem wczoraj ale przysnołem. Nie poszło tak prosto bo nie otrzymuje zapisu na kartę , cały program kompiluje się mi w porządku tzn otrzymuje hex -a, zadaniem poniżej przedstawionego programu jest tylko odczyt jednej wartości z wejścia adc1 oraz zapisanie jej na karcie do pliku...
No myślę, że rozwiązaliśmy problem dostatecznie go podsumowując, także zamykamy. A ja dziękuję za zagorzałą :) dyskusję. Pozdrawiam. Temat okazał się być niedostatecznie rozwiązany gdzyż funkcje nie działały poprawnie. A oto 100% działające kody do obsługi flash: Wyłączenie zabezpieczenia...
Ale twój program składa się tylko z tej jednej linijki, to gdzie ma stawać? No i czy naprawdę zapis do każdego rejestru musi się składać z 3-4 linijek? Fajnie że używasz definicji, ale poskładanie w głowie tego co chcesz osiągnąć jest mocno utrudnione, zwłaszcza że w rejestrach które tak modyfikujesz...
[syntax=c] RCC->APB1ENR |= (3<<27); //Włączenie CLK dla PWR i BKP PWR->CR |= 0x0100; //ZEZWOLENIE na zapis do BKP registers BDP =1 //RCC->BDCR |= (1<<16);//Reset rejestrów Backup na to trzeba uważać //RCC->BDCR &= ~(1<<16); RCC->BDCR |= (1<<0);...
Lek na twoje bolączki jak ci sie nie podoba na rejestrach przepisz analogicznie na funkcjach bibliotecznych ja jeszcze nie zdążyłem. [syntax=c] RCC_APB1PeriphCl... | RCC_APB1Periph_PWR, ENABLE); PWR->CR |= 0x0100; //ZEZWOLENIE na zapis do BKP registers BDP =1 RCC->BDCR...
1. funkcja sprintf zwraca długość sformatowanego ciągu. Dlaczego statycznie zakładasz, że będziesz zawsze wysyłał 6 znaków, jak z kodu nie wynika stała ilość znaków w formatowanym ciągu. 2. Przez zmienną br dostajesz ilość zapisanych znaków. Rozumiem, że się zgadza ? 3. Jaki realnie zakres przyjmuje...
Witam, pozwolę się podpiąć do tematu, bo mam mniej więcej podobny problem i akurat nie używam bibliotek. Mam nadzieję, że ewentualne rozwiązanie mojego problemu pomoże i autorowi. Mianowicie - chcę również skorzystać z DAC na Discovery w trybie Passthrough. Na wyjście Dac wrzucam dane - częstotliwość...
Jeśli nie chce używać rejestrów backupowych to zostaje Tobie tylko zapis do flasha. Twój uC ma 128KB flash, chcesz zapełnić całą pamięc programem? Zakłożę się, że nie, więc nie widzę problemu z poświęceniem mniej niż 1% pamięci na tą flagę. Inny sposób to zapis wybranej komórki EEPROMA jakąś znaną...
Nie trzeba go przekonywać. Dla DMA jest wszystko jedno pod jakie adresy mają się zapisać dane. Ale nie jest mu wszystko jedno, w jakich okolicznościach ma to robić. W przypadku UART TX, DMA request jest generowany za kazdym razem, gdy flaga TXE==1 (jesli UART ma włączony DMA oczywiscie). Wtedy DMA...
A pytanie mam czy trzeba jeszcze dodatkowo odczytywać rejestr albo kasować jakieś flagi. Bardzo to niestabilnie chodzi. Być może problemów nie będzie kiedy miałbym na stałe włączony eeprom. Jak to zrobić aby mogło działać stabilnie. Prędkość to około 20kHz a więc żadna prędkość. Niestety dalsze zmniejszanie...
Skąd wynika różnica aż kilku cykli? Porty GPIO mogą być taktowane inaczej niż rdzeń. I jeszcze ciekawiej skąd wynika to "około (~)? To nie wiadomo dokładnie ile zajmie? Wydawało mi się, że przypisanie to jedna instrukcja assemblera, ale faktycznie trzeba jeszcze ustawić rejestr na wartość rejestru...
Chodzi o to co pisze NAD opisem bitów z rejestru RCC_BDCR. Można tam znaleźć takie oto info: The LSEON, LSEBYP, RTCSEL and RTCEN bits in the RCC backup domain control register (RCC_BDCR) are in the Backup domain. As a result, after Reset, these bits are write-protected and the DBP bit in the...
vp32: Do czego jest Ci to potrzebne? Rozumiem pęd do wiedzy, ale mam wrażenie, że gonisz własny ogon. SetPriority robi dokładnie tę samą głupotę, niezależnie od typu rdzenia, tylko zapis tego dla M3 niekiedy jest jeszcze bardziej pokręcony niż dla M0. Ja na ogł ustawiem priorytety przez bezpośredni...
(at)tmf Z tego co wiem to nie można obsłużyć karty SD interfejsem QSPI (no chyba że w trybie jednoprzewodowym). Z tymi transferami to nie byłbym takim optymistą. Specyfikacja kart wyraźnie mówi, że zapis pojedynczego bloku może trawą do 250ms a wielu bloków do 500ms. Z moich doświadczeń wynika to...
Sam zapis może faktycznie nie jest optymalny, bo nie do tego służy rejest BSRR (tak jak opisał Freddie). Sam tak robiłem na początku z ostrożności, żeby nie nadpisywać jakichś bitów, co tutaj akurat nie miało sensu. Jednak program i tak zawsze działał. Wygląda to jakby procek wieszał się na tej funkcji...
Hej, mam następujący problem. Napisałem niewielką klasę opakowującą ADC1 dla STM32L4 (tak, piszę w C++ ;) ). Jako, że chciałbym aby była dość ogólna, wskaźnik do adc przechowuję jako pole volatile ). Np. nie działa: [syntax=c] this->p_adc->CR |= ADC_CR_ADDIS; this->p_adc->CR &= ~ADC_CR_ADEN; [/syntax] ale...
Ponieważ nie zdradziłeś tajemnicy jakiegoż to STMa używasz to poniższa funkcja może być błedna (np L4 programuje się podwójne słowa a można też programować sekwencje 32 podwójnych słów za jednym zamachem). Czasami RM sugeruje odczytanie zapisanie słowa a czasami tylko sprawdzanie EOP. Zakładam że już...
Po co funkcja? - wystarczy prosty zapis do rejestrów BSRR / BRR - krótszy zapis w kodzie, szybsze wykonanie.
Zapis i odczyt jest realizowany w tym samym cyklu. Odczytanie rejestru DR nie wymusi transmisji.
Jednak chciałbym spróbować wersji "kilku plikowej". Lubię trudności, a poza tym Ride7 zajmuje na HDD 240MB, a te programy ponad GB. Co dla mnie jest przydużo. Czy są o mniejszej zajętości HDD ? Poradnika kolegi Freddy znalazłem wcześniej, ale tam nie ma wersji "kilku plikowej" :) Niestety Ride7...
Biblioteki czy plików nagłówkowych? Jak to drugie to: - www.st.com - Products → Microcontrollers → STM32 32-bit ARM Cortex MCUS → STM32F4 Series → STM32F407 - (po lewo) Software → STM32Cube -> (w nowo otwartym oknie) STM32CubeF4 - (na samym dole) Get Software →...
a plik startowy masz dla dobrej lini STM? z tego co się orientuję i rozumiem to tak. Dlaczego głupia biblioteka do stm32 rządzi swiatem i wiecznie jest ktos, komu ona nie działa?... Ludzie, opamiętajcie się... Dlatego, że jest dość przejrzysta i dużo bardziej przystępna dla kogoś kto miał...
Witam. mam procesor stm32 i próbuję uruchomić wyświetlacz na sterowniku ILI9325. Walczę już któryś dzień i nie daję rady. Procek chodzi na 72mhz. Podłączenie wyświetlacza : reset pb6 rd pb7 rw pb2 rs pb1 cs pb0 linia danych cały port C 0-15 inicjacja wyświetlacza, nie wiem czy na pewno jest...
Korzystanie z tej biblioteki poza tym mają również inne wady: 1) Struktury inicjalizacyjne marnują pamięć. Te struktury są spakowane, więc dostęp do bitów w tej strukturze jest utrudniony. Co modyfikacja bitfielda kompilator musi uzywac instrukcji BFI,AND,ORR,BIC. Marnuje to sporo czasu, zamiast...
Nie generuje pliku *.hex, tylko *.elf, ale do pełnego debugowania wystarczy. Można wybrać tylko zapis Little-endian. Widać, że jest zakładka SFR do podglądu rejestrów (ODR z GPIOx itp.), bez konieczności szukania po adresie, ale cwaniacy zablokowali. Ogólnie jest to skonfigurowany Eclipse i tyle w temacie....
Czy ten zapis jest koniecznie potrzebny: USART1->SR=0x80;. Powinno działać bez ingerencji w rejestr SR w przerwaniu. Witam! Pewnie masz rację bo z nim i bez niego tak samo nie działa dobrze. Nie jestem pewien, czy debugger mnie nie oszukuje odnośnie zawartości rejestrów, ale odczyt rejestru danych...
Flagę TXE powinno się sprawdzać PRZED wpisaniem czegoś do DR (to akurat nie jest wielkim problemem), ale przed odczytaniem DR powinno się sprawdzać czy flaga RXNE jest ustawiona - dopiero wtedy można odczytać to co jest w DR. Bez tego wciąż nie odczytujesz tego co chcesz - na etapie inicjalizacji odczyt...
W manualu jest tylko wykaz jaka funkcja do jakiego portu może być przypisana. A mi chodzi o konkretny kod, jak go skleić. Chyba masz tylko datasheet do klocka. Freddiemu chodzi o RM0008 w którym wszystko o co pytasz jest opisane. Kodu nie trzeba podawać bo zapis jest w postaci prawie że takiej...
Witam Konfiguracja sprzętowa jak w powyższym temacie natomiast kod jak w temacie . Mam problem z inicjalizacją wyświetlacza. Błąd występuje w momencie pierwszego zapisu do LCD funkcją LCD_WrReg(u8 reg, u16 data) [syntax=c] LCD_WrReg: 200004ac: mov.w r3, #1811939328 ; 0x6c000000 200004b0:...
Trochę powoli mi to idzie ale do przodu. Przeglądam różne rozwiązania, klasa CDC jest interesująca ale skupiam się na czymś już zdefiniowanym w Windows i na razie będzie to HID. No więc z tego co narazie widzę to transfer interrupt (funkcja WriteFile) może maksymalnie nadawać 64B/ms co wynika bezpośrednio...
Ale dlaczego instrukcja PIN_x_y = z miałaby sterować konkretnym pinem? Proszę o definicję. Bo PIN_x_y jest makrem operującym bezpośrednio na pinach za pomocą bit-bandingu, czyli czegoś o czym użytkownicy biblioteki nie wiedzą i raczej się nie dowiedzą, bo w bibliotece nie ma takich możliwości, a...
W sumie ciekawa sprawa. Z tego by wynikało że później można wyłączyć taktowanie a opcja remapowania powinna pozostać taka jaką ustawiliśmy. Wartość zostanie, zegar jest potrzebny do zapisu i odczytu z rejestrów oraz napędzania maszyny stanów (której AFIO brak). Wyłączenie zegara uniemożliwi zmianę,...
Chyba powoli będę zamykał temat. Ale nie znalazłem dokładnego opisu zależności między BSRR i BRR - gaskoin, podaj mi stronę, bo może ślepy jestem... Znowu chcesz zamykać ? Fajnie się czyta :) I widać, że Twoje tematy szybko zyskują na popularności :P Jakie zależności ? Oba to rejestry na przerzutnikach...
Jeżeli chcesz do szyny wykorzystać np. połówkę portu (8 bitów) to najszybciej BSRR. Najszybciej wtedy wykonywać 8-bitowy zapis do rejestru ODR. 4\/3!!
Nie możesz jeden po drugim, bez żadnego czekania odczytywać czy wysyłać kolejnych bajtów przez I2C. Właśnie problem w tym, że próbowałem zrobić to jak należy ( czekając na flagi ) i w ten sposób zapisuje więcej danych. Razem z adresem urządzenia I2C musi być ustawiany bit R/W - w zależności od tego...
Kolega pewnie zrozumiał, że przy takim zapisie: REJESTR = 0xe43432. ARM jedzie bit po bicie a AVR wstrzykuje całą wartość w ciągu pół taktu zegarowego ;)
Czyli tak jak myślałem, dzięki:) Właśnie nie pomyślałem ze w C taka linijka TIM3->SR &= ~TIM_SR_UIF to przecież wczytanie rejestru, wykonanie operacji logicznej i zapis. Jest juz zrobione jako bitbanding. Muszę nauczyc sie pilnować takich rzeczy, do tej pory używałem bitbandingu tam gdzie często wykorzystywalem...
Bitmapa jest w pamięci programu, bo to są wstępne testy narazie. Do generacji pliku c z bitmapą używam GIMP, który konwertuje od razu kolor do rgb565. Funkcja wyświetlająca bitmapę. [syntax=c]void LCD_Color(void) { unsigned int w,p; __IO uint16_t color; LCD_WR_REG(CMD_SET_COL_ADDRESS); ...
Specyfikacja architektury mówi, że jeśli bit STKALIGN nie jest zaimplementowany, to procesor wyrównuje stos przy wyjątku. Jak jest zaimplementowany, to programista może wyłączyć wyrównanie. Domyślna wartość - to 1 (czyli włączone wyrównanie, ale ja nie dotarłem do jednoznacznego potwierdzenia, że tak...
Mnie się udało do tej pory znaleźć tylko jeden przypadek w którym bit-banding nie działa z takimi specyficznymi rejestrami, ale to na LPC1769 akurat, choć też w I2C - jest tam jeden rejestr write-only do którego zapis na jakimś bicie powoduje wyczyszczenie bitu w innym rejestrze (w tamtym rejestrze można...
A moim zdaniem obie instrukcje są sobie równoważne. Nieważne czy ustawię rejestr z zerem w miejscu, w którym znajduje się bit do wyczyszczenia, czy zamaskuję rejestr i wstawię zero. Obie instrukcje działają tak samo, obie dają ten sam rezultat w debuggerze jak i z prostej obserwacji. To, że zapis jedynki...
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...
przerwanie przeciez jest wlaczone, bo sie wykonuje handler. chyba ze nie wiem co to znaczy wlacz EXTI... problem jest w tym zapisie do rejestru EXTICR
Nie znam SPL'a i nie wiem w jaki sposób jego funkcje zapisują do rejestrów, może dla obliczonej wielokrotności 2250 zapis powinien być taki TIM_TimeBaseStructure.TIM_Period = 2250 - 1, to samo może dotyczyć TIM_OCInitStructure.TIM_Pulse = 128 - 1 Poza tym przy incjacji nie ustawiał bym wypełnienia,...
Bez bibliotek zajmuje to jedną linię z jedną instrukcją - zapis wartości do rejestru AIRCR.
po co wertować "plik .h" skoro rejestry i bity w pliku nagłówkowym są nazwane (w 99%) tak samo jak w RM? A może po to by wiedzieć co z tym dalej robić? hę? Nie każdy jak elektrodowy speć rodzi się z umiejętnością pisania programów po przeczytaniu RM. Być może się mylę, ale w "atomowości"...
Nowa wersja Poradnika gotowa do pobierania. Najważniejsze zmiany: - poprawiony rysunek pokazujący wyjścia w konfiguracji push-pull/open-drain - natchniony Reference Manualach ST zmieniło nazwy "prędkości" wyjść GPIO (zrobili High Speed i Very High Speed zamiast Fast Speed i High Speed )...
Udało się zrobić zapis czasu do rejestru RTC Dodano po 1 Problem rozwiązany. Znalazłem w Internecie funkcję "unix_time_in_seconds". Akceptuje ona liczby bin a DS3231, jak większość RTC, operuje na liczbach BCD. Napisałem więc funkcję "unix_time_in_secondsBCD". Konwersję BCD->BIN zaczerpnąłem...
Wcześniej użyłem volatile bo chciałem wymusić odczyt tych tablic za każdym razem z pamięci FLASH. A nie z jakiegoś rejestru gdzie wartość mogła by zostać zapamiętana. W tym celu, żeby po przeprogramowaniu pamięci, program na pewno operował na nowych wartościach. Ale mam rozumieć że w tym wypadku volatile...
To uporządkujmy: 1) Przede wszystkim chodziło mi o wskazanie kierunku jak można pisać do pamięci Flash z programu, dziękuję koledze tmf za wskazówki 2) Opisałem do czego jest mi to potrzebne, padło pytanie o liczby, więc odpisałem trochę na szybko i liczby podałem od czapki, co spowodowało ogólny zamęt....
Zastanawiam się tylko po co sprawdzać to: [syntax=c]USART3 -> CR1 & USART_CR1_TCIE[/syntax] nie rozumiem powodu. Przecież to jest "This bit is set and cleared by software." Programista nie wie czy ustawił to przerwanie czy nie? Dodatkowo ten zapis: [syntax=c]if(( USART3 -> CR1 & USART_CR1_TCIE)...
Witam Jestem zupełnie początkujący w mikrokontrolerach i w ramach ćwiczeń zakupiłem akcelerometr ADXL345 komunikujący się przez SPI. O ile rozumiem sposób działania SPI, to nie bardzo wiem jak czytać z konkretnego adresu lub zapisywać do rejestru urządzenie z wykorzystaniem tego protokołu. Będę wdzięczny...
GPIOB->BSRR=0b00000000000000000000000... //ustawi 1 na PB.0 bez zmiany pozostałych pinów? GPIOB->BSRR=0b000000000000000... //wpisze 0 na PB.0 bez zmiany pozostałych pinów? Jednak wolę Bascom niż zabawę w liczenie 32 bitów To nie Bascom, nic nie trzeba liczyć. Piny...
Nie wiem o co chodzi, support STM mi powiedział, żebym wgrał kod do ramu oraz wektor przerwań. Cały problem od początku: Zadanie programu jest następujące: ze sterownika sczytuję wartości enkoderów i zapisuję je do pamięci flash. (powinno to być wykonywane timerem co 10ms). Następnie odczytuję te...
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka...
To jest straszne w porównaniu z każdym zwykłym timerem zwykłego uC, w którym do wygenerowania PWM wystarczy 4..5 zapisów rejestrów (a twój kod powyżej nie jest jeszcze kompletny - to tylko ustawienia zdarzeń i sterowania wyjściami). SCT jest bardzo silnym modułem (np. właśnie do modulacji transmisji...
Moduły zasilaczy warsztatowych, takie jak DPS5005, dostępne są od dłuższego czasum.in. na AliExpress. Doczekały się wielu recenzji, w większości pozytywnych. Jednakże często wskazywanym problemem z tymi modułami jest kiepskiej jakości oprogramowanie – interfejs użytkownika pozostawia wiele...
Ostatnia rzecz jaka przychodzi mi do głowy, to zabezpieczenie pamięci przed zapisem. Do odbezpieczenia może być konieczne ustawienie pinu WP w stan wysoki, po czym zapisanie do rejestru statusu (instrukcja WRSR) wartości 0x00 (cała pamięć odbezpieczona, brak zabezpieczenia rejestru statusu pinem WP)...
Czy one kiedykolwiek są "dualne" tzn raz słowowe, raz bitowe ? Owszem, są takie architektury, w których jest wymagany specyficzny dostęp do rejestrów. Przykładem może być moduł SPI w nowszych STM32. Dane do transmisji zapisuje się do rejestru danych, który może mieć 8 lub 16 bitów szerokości. Operacja...
Akurat nie, bo w portach z maskowanym dostępem operacja logiczna jest wykonywana w samym rejestrze portu, a nie w sterowniku szyny, więc nie ma tu r-m-w. Nigdzie nie pisałem, że BitBand jest zły. Napisałem tylko, że niekoniecznie nadaje się do zerowania znaczników przerwań w rejestrach peryferiali,...
Witajcie, siedzę i szukam błędu w bibliotekach do obsługi NRF24L01. Skopiowałem je z biblioteki, którą wykorzystuje w ATmega8. Działa nawet dobrze tam, niestety na STM32F0DISCOVERY już nie chce. Będę bardzo wdzięczny za pomoc. To najpierw kody, które wyrażają więcej niż tysiąc słów ;) : main.c ...
Witam, na początku dodam, że od dawna piszę w języku C, na AVR, od niedawna na ARM Atmela, oraz od kilku dni na STM32. Jako, że 2 pierwsze nie sprawiały mi większych trudności, mam kilka pytań dotyczących procesorów ST, na początek zamieszanie z bit-bandem, może ktoś mi wytłumaczyć na jakiej zasadzie...
Przykładów można szukać w SPL - można się w ten sposób dowiedzieć, w których rejestrach i co trzeba wpisać. Powoli szykuję tutorial do STM32 bez biblioteki, ale to jeszcze trochę potrwa. Kłopoty z bibliotekami są wielorakie. Ostatni kłopot - to to, do czego nas zachęcają przykłady z użyciem bibliotek,...
Powrót małorolnego człowieka, a moderator burdel teraz zrobił. Zamiast zostawić potrzebne posty, to temat przeniósł do ??? Jaki mikrokontroler wybrać do... ??? Co to ma wspólnego z założonym tematem ? Jakiś nieogarnięty w temacie... Tylko spójrzmy na to obiektywnie - co kolega tymon_x sprawdził ?...
Udalo mi sie w koncu, dokonczyc program. Zaczne moze od polaczenia: gpio13 <->mosi (sda) gpio14<-> sck (scl) gpio16<-> reset gpio3<->dc gpio5 ->pwm do sterowania podswietleniem (nie podlaczac bezposrednio pod podswietlenie tylko przez tranzystor - wiekszosc modulow ma...
1. Mówimy o F103, nie o innych rodzinach. W tej rodzinie tak się składa, że te bity "są być prawidłowe" 2. Te symbole u8 i u32, to z którego standardu wziąłeś? Stare czasy SPL na STM32. Po prostu przywykłem do tego, i tak mi zostało. Imho zmienną w kodzie winno się tworzyć ad hoc, a nie...
Witam, męczę się z prawidłowym ustawieniem tego modułu do odebrania pakietu danych, który jest prawie 2x większy niż pojemność FIFO. Kombinuję na wszelkie sposoby, aby ze wskazanego DIO tego modułu odebrać właściwe przerwanie i je obsłużyć w callbacku EXTI w STM32. Nie mam większego problemu z odebraniem...
Książki zaraz pewnie wykwitną: Ile by ich nie było, to na pewno będzie mniej niż o ARM7, które na rynku jest od kilkunastu lat. Na pewno jest więcej literatury o 8051 i co z tego? Jak dla mnie bogata literatura to tylko problem, bo ileż książek można kupić i potem jeszcze przeczytać? Ważne są...
Jakbyś nie zauważył to inna rodzina procesorów ;-) W użyciu jest lepsze. Inaczej po co w tamtych procesorach stosowano by bit band? Albert W STM32 też taki zapis można wykonać jedną instrukcją. Mimo, że są oddzielne rejestry do ustawiania i kasowania bitów. Porty są 16bitowe a jeden z tych rejestrów...
Nawet gdyby same porty GPIO się wyrobiły, to nie wyrobi się cała reszta. Skoro chcesz wykonywać odczyt z częstotliwością 40MHz, to masz mniej więcej 4 takty zegara na wykonanie wszystkiego. W super-extremalnym przypadku pętla która by to realizowała ma 4 rozkazy assemblera: 1. odczyt GPIO do rejestru 2....
Po drugie, chcesz nadawać bajty, a rejestr DR w STM32 ma 16 bitów, więc jednym zapisem do DR nadajesz 2 bajty. Tutaj się mylisz. Akurat w F103, możesz wysyłać pojedyncze bajty bez bajtowego dostępu. To co opisujesz jest w nowszych STM32, np. L4, F4, F7. W każdym przypadku lepiej użyć do tego DMA.
(at)Urgon, jesteś niezwykle aktywny w temacie ale na Dla 8-bit muszę znać funkcje ustawiające kierunek portów, włączających UART, SPI i inne peryferia a w STM32 "wyklikam" i tylko wywołuję funkcję wyślij/odbierz czy wyślij/odbierz z użyciem przerwań albo wyślij/odbierz z użyciem DMA. Czy tak prosto...
jesteś pewien? Moim zdaniem to co już uzyskałem mim zdaniem jest szybkie. Ale że atmega może szybciej to mnie zdziwiłeś.. Jedna klatka ma 153 kB danych. Przy czasie na ramkę 19 ms w moim wypadku daje to transfer danych 8MB/s na magistrali o szerokości 8 bit (czyli dane są wysyłane 8MHZ razem...
Szczerze wątpię w przydatność takiego typu oprogramowania dla kogoś poza hobbystami - zwykle wygenerowany kod nawet nie widział się z optymalnością a dodatkowo jesteśmy ograniczeni takim podejściem do sprawy... Proponowałbym zapoznać się chociażby z opisem na stronie, jeśli nie z samym oprogramowaniem,...
Witam Mam pytanie wydrukowałem sobie cały poradnik kolegi z forum chodzi o wiadomy kurs bez bibliotek. Mam pytanie odnośnie IDE, używam tego [url=]Link. Czy sposób zakładania projektu będzie odbiegać od tego, jeżeli nie piszę przy użyciu bibliotek tylko przy zapisie do rejestrów.
DIY stacja meteo, a właściwie stacje, bo naprodukowałem już ich kilka, chyba 10 wersji. Dlaczego stacje? Bo lubię statystyki, poza tym to jedna z tych rzeczy, która może nie jest niezbędna do życia, ale fajnie mieć. Tym bardziej jeśli samemu się skonstruowało. Dlaczego ethernet? Bo wygoda komunikacji...
Witam, Mam 2 problemy związane z pamięcią i jej programowaniem w procesorze STM32F401RE na płytce Nucleo. 1. Bootloader i odczyt Unique ID Korzystam z bootloadera UART (UART1 - piny PA9-10) na mikrokontrolerze STM32F401-RE na płytce STM32-Nucleo. (full marking: STM32F401 RET6U GH21J VQ CHN...
Tak, te funkcje sa do odczytu z zapisu rejestrow, jednak jak mnie przekonales ( nie w 100% do poki nie zobacze jakiejs dokumentacji :P ), na rejestrach usb stm32 a nie phy.
Może wbiję kij w mrowisko: Po co właściwie Ci ten bitbanding? Programuję Cortexy na codzień i nie zauważam praktycznej potrzeby użycia BB. Nie to, żeby w ogóle jej nie było, ale jest ona tak marginalna, że nie opłaca się w to bawić. Tam, gdzie są potrzebne operacje bitowe, są one zaimplementowane w sprzęcie...
1. Jak chcesz odpowiedź, to podawaj WSZYSTKIE dane. Skąd mamy wiedzieć co jest pod LCD_RWPORT? Może jest zdefiniowane jako "("? 2. Nie wiem po co te magiczne kombinacje. W przypadku STM32 to w ogóle nie ma sensu, bo wystarczy jakbyś sobie zdefiniował LCD_RWPORT jako "GPIOA", a nie samo "A" (jak zapewne...