GPIOx->BSSR
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 po co szukać więcej info niż w manualu do biblioteki?...
https://obrazki.elektroda.pl/5694434400_... 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...
http://obrazki.elektroda.pl/2463034100_1... Witam wszystkich, Chciałbym tym razem przedstawić projekt gotowego radiomagnetofonu internetowego. Jest to rozwinięcie opublikowanego wcześniej na Elektrodzie małego odtwarzacza MP3. Radiomagnetofon umożliwia granie strumieni radiostacji internetowych, nagrywanie tych strumieni na kartę SD,...
Witam, chciałbym stworzyć prosty układ pomiarowy, który by miał za zadanie pobrać w krótkim czasie sporą liczbę pomiarów (np 1000 pomiarów w ciągu sekundy przy 12 bitowym przetworniku adc) i jednocześnie zapisać te pomiary na kartę sd ( system plików fatfs ) po to aby móc swobodnie w dłuższym czasie przesłać otrzymane dane poprzez port rs232 na PC ....
Witam, mam pewien błahy problem, ale nie mogę sobie z nim poradzić. Chciałbym ustawić numer portu w zależności od jakiejś zmiennej, a nie na sztywno np.: Zamiast ustawić: [syntax=c]GPIO_SetBits(GPIOB ,GPIO_Pin_12);[/syntax] Chciałbym ustawić: [syntax=c]int licznik=12; GPIO_SetBits(GPIOB ,GPIO_Pin_licznik);[/syntax] Niestety powyższy zapis jest niepoprawny...
Tak BTW to w 16-bitowych PICach odczyt i zapis do portu trwa zapewne tyle co w AVR, mają więcej pamięci, 16-bitowe porty i śmigają na 40MHz No tak, tylko znowu nowy procesor, nowa architektura, ale dzięki za naprowadzenie na taki trop. Swoją drogą sprawdziłem, że STM32 potrafi wysyłać na port dane z prędkością znacznie powyżej 18MHz, niestety dopiero...
Nie jest to możliwe - zapis do dwóch portów to będą dwie odrębne operacje. Różnica między nimi może wynosić kilka cykli zegara (~3).
Po pierwsze, nie w żadnej pętli, tylko w przerwaniu timera, zgłaszanym z częstotliwością np. 2400 Hz Po drugie, w każdym przerwaniu timera należy: 1. W rejestrze GPIOD->CRL/CRH ustawić wszystkie używanie linie portu jako wejścia lub Analog. 2. Do rejestru ODR zapisać jedynkę na linii wyboru kolumny, zera na pozostałych. 3. Do rejestru CRL/CRH zapisać...
RCC->APB2ENR=0x00000008; 0x00000008; - jak nazwać tą wartość, czy to nie jest adres rejestru? Nie, to jest wartość którą zapisujesz do rejestru który znajduję się pod adresem RCC->APB2ENR. GPIOB->CRH=0x33333333; LDR R0, =0x40010C04 LDR R1, =0x33333333 STR R1, Masz czarno na białym że wartośc 0x33333333 jest zapisywana do adresu 0x40010C04, czyli do...
GPIOx_BRR i GPIOx_BSRR są tylko do zapisu a nie odczytu - GPIOx_BRR służy do kasowania stanu portu poprzez ustawienie odpowiedniego bitu. GPIOx_BSRR służy do kasowania i ustawiania portów. Oba rejestry dają funkcjonalność atomowego dostępu do poszczególnych bitów portów. Rejestr GPIOx_ODR jest standardowym rejestrem do odczytu i zapisu do portów.
Witam, prosiłbym bym o pomoc, żeby ktoś wytłumaczył, albo podał przykład jak skonfigurować przerwania zewnętrzne w tym mikrokontrolerze bo walczę z tym i nic mi nie wychodzi i zaczynam podejrzewać, że to procek jest zepsuty, albo tej sztuki jeszcze nie opanowałem :D na początku pisałem własne kody, ale po nieudanych próbach w końcu wkleiłem gotowca,...
Witajcie, Od paru dni walczę z pamięcią IS66WV51216EBLL-70 ([url=https://www.mouser.pl/datasheet/2/... Na QSPI mi nie wyszło to zwróciłem się ku pamięciom równoległym. Z tym, że nie używam żadnego dedykowanego protokołu tylko po prostu użyłem jednego całego portu jako magistrali danych i drugiego (oraz kawałka jeszcze...
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!!
A mapowanie działań na porcie w pamięci i maskowanie przed zapisem do fizycznego rejestru portu? Coś jak w PLC. Potrzebujesz żeby to szybkie było? Inna rzecz że weź nawet dwukanałowy oscyloskop i potestuj na jakimś arduinku.
Inicjowanie UART to 2 lub trzy zapisy do rejestrów, przemieszczenie linii - po jednym zapisie na port (czyli jeśli zmieniasz z portu A na B to masz dwa zapisy). Czas tych operacji nie przekroczy ułamka mikrosekundy (kilkanaście cykli procesora), o ile nie będziesz korzystał z SPL ani HAL.
Bufor cykliczny, inaczej też nazywany kołowym, to najlepsze rozwiązanie do tego co chcesz zrobić. Tym bardziej, że jak zaznaczyłeś danych będzie sporo. Każdy odebrany znak wpisujesz do bufora i przesuwasz wskaźnik zapisu o 1. Możesz to robić przez obsługę przerwania od portu szeregowego, albo możesz do tego wykorzystać DMA. Dlaczego bufor? Ponieważ...
Witam, napisałem mini-programik na odczytywanie wartości prądu z dwóch kanałów ADC i zapisywanie ich przez DMA. Po wciśnięciu przycisku rozpoczyna się pojedynczy pomiar z dwóch kanałów ADC1. Po pierwszym wciśnięciu przycisku wartości zapisywane w tablicy są poprawne, jednak po następnych wciśnięciach przycisku wartości te nie zmieniają się. W manualu...
Koledzy, uczę się na płytce od KAMAMI ZL31 z prockiem STM32F103RB. Idę zgodnie z książka jednak nie mogę uzyskać innego przerwania jak od portu A. Program kompiluje się bez błędów. PB1 PB2 wyjścia PP http://obrazki.elektroda.pl/1242962800_1... Jeżeli debaguje na procesorze to nie jest już OK. W podglądzie przerwań konfiguruje się na...
Witam, Po paru dniach ślęczenia udało mi się - tak myślę :) , skonfigurować rcc na 72MHz. : void rcc_init(void) //RCC init włączający procesor na 72MHz { RCC->CR|=0x1; //wlacz HSI wewnętrzny oscylator, włączany jako pierwszy po zasilaniu. while(!(RCC->CR&0x2)); //poczekaj na HSI sprawdza czy HSI się włączyło RCC->CFGR|=(0xF<<18);...
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 logiczne na portach.
Pewnie tak. Wartość zapisana do portu daje pełne wyobrażenie o jego zawartości. Haczyki do mnie nie przemawiają ;) Ogólnie w ODR powinna być wartość 0xX400 lub 0xXC00, gdzie 0x oznacza liczbę w kodzie hex, a X to dowolna wartość. Nie zmieniaj bitów 13. i 14. Stracisz połączenie przez SWD.
Nie wiem czy ożyło bo ten wstawiony ostatnio program zlasowal mi mózg , błędów zamiast mniej to było coraz więcej i w końcu ten kod odłożyłem na bok. Próbuje cos zwojować na bibliotece HALL ale pomimo iż program się kompiluje nie wiem czy jest poprawianie napisany a nie będę pytał AI bo i tak mi nie powie. Program się nie uruchamia więc albo inicjacja...
dioda LED na PC8 razno miga I tak ma być. Ta funkcjonalność dotyczy tylko blokowania rejestrów konfiguracyjnych danego pinu, czyli dokładniej rejestrów GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_AFRL i GPIOx_AFRH. Po prostu zablokowana jest możliwość przeprogramowania wejścia na wyjście czy odwrotnie, przełączenia na inną funkcję...
Poniżej program do obsługi wyświetlacza TFT: Interesuje mnie dlaczego funkcja LCD_Clear(WHITE) na STM32 działa wolniej niż na Atmedze32 z kwarcem 16MHz. Wydawało mi się że powinno czyścić ekran szybciej na STM32 a już na pewno nie wolniej. Tylko nie zwracajcie mi uwagi na temat pętli opóźniającej;) ponieważ i tak nie jest wykorzystywana w LCD_Clear....
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 to działa? podaje przykład #define bitband_t *(volatile...
Nie spojrzałem dokładnie w jaki sposób użyte były te operacje w powyższym kodzie. Ja używam zapisu poniższego: Przy takim zapisie [syntax=c]GPIOB->BSRR = GPIO_BSRR_BS9; [/syntax] ustawiam 9 bit portu B ,a przy takim [syntax=c]GPIOB->BRR = GPIO_BRR_BR9; [/syntax] zeruje tą końcówkę i w tym przypadku jest to równoważne. (przynajmniej znowu tak mi się...
Trochę mi się pomieszało ale zaraz wyjaśnię. Najpierw przebiegi, tak jak obiecałem: Częstotliwość 64MHz, sterowanie GPIO za pomocą HAL: https://obrazki.elektroda.pl/6940879300_... Ta sama częstotliwość, sterowanie GPIO przy bezpośrednim zapisie do portu: https://obrazki.elektroda.pl/2013222800_... Ta sama częstotliwość,...
Witam. Pięknie Panowie piszecie. Przypuszczam że większość z was naukę zaczynało na 8051 lub AVR. Teraz jak już opanowaliście do perfekcji C i zdobyliście bardzo duże doświadczenie w programowaniu to nie macie problemu ze zmianą procesora w zależności od potrzeb projektu. Tylko że w starym AVR aby ustawić port wystarczą dwie lub trzy komendy i już można...
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, tym bardziej, że ten sam efekt można osiągnąć przez...
Ale chyba Arduino nie ma USB, tylko zainstalowany port szeregowy na USB (może jeszcze kwestia, który model, ale Arduino Nano na pewno) - podłączenie do komputera Arduino przez USB to podłączenie portu szeregowego i komunikacja z Arduino poprzez ten port - komputer nie może "zobaczyć" Arduino jako pendrive-a. Natomiast można to zrobić z STM32F103C8T6...
Na to pytanie nie da się odpowiedzieć nie wiedząc, jak jest podłączona dioda. Zasadniczo kod do zaświecenia diody w C ma 2 lub 3 linie (a nie kilkadziesiąt) - włączenie portu, ustawienie linii jako wyjścia, a jeśli dioda jest podłączona pomiędzy wyjście i masę - zapis jedynki. Na STM32F0 wygląda to tak: [syntax=c]RCC->AHBENR |= RCC_AHBENR_GPIOCEN;//...
To sorki - myślałem że to HAL. SPL-a nie pamietam ale to trzeba te opeacje przeniesc przed inicjalizacje pinu. W przeciwnym razie łaczą sie ze złym AF na krótki czas i jest mozliwe że przełaczenie nie bedzie pozniej możliwe. Kolejny mit :cry: Powiedz Piotruś skąd Ty bierzesz takie bajki? Czy gdziekolwiek w dokumentacji jest taki zapis, czy znalazłeś...
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 jest 32bitowy. Zapis do starszych 16b powoduje kasowanie...
Witam. W swoim projekcie chcę wysyłać duże ilości danych (100MB-500MB) z komputera po virtualnym porcie COM interfejsem RS485 do uC STM32. Udało mi się już uruchomić komunikację i próbowałem zapisywać dane po stronie uC STM32 na kartę SD w trybie SPI. Niestety okazało się w praktyce, że sam zapis na kartę SD trwa "bardzo długo" (nawet 60ms dla jednego...
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 jak są opisane rejestry w manualu. Zaraz nad sekcją GPIO...
Witam, trochę czasu spędziłem na przeglądaniu dokumentacji AFIO, GPIO ale niestety nie znalazłem niczego co mogłoby mi pomóc dlatego chciałem się zapytać Czy w STM32 jest możliwość takiego remapowania wyprowadzeń żeby np z wolnych pinów stworzyć np 8 bitową magistralę z możliwością zapisu, odczytu danej lub np takim przemapowaniu któregoś z portów żeby...
Czyli widać tutaj, że najpierw jest odczytywana wartość rejestru ODR, wykonywana jest operacja or, a następnie wykonywany jest atomowy zapis, czyli generalnie operacja ta nie jest atomowa? Dokładnie jak piszesz. W AVR operując na porcie, ustawianie i kasowanie bitu portu jest atomowe, negowanie jego stanu juz nie. Dokładnie tak w ARM.
Jeśli zakładasz, eż poresecie jakiś bit może mieć "nie tę wartość co trzeba", to konsekwentnie powinieneś również założyć, że po Twoim zapisie ten bit również może mieć "nie tę wartość co trzeba", więc pisanie programu na niedziałający uC nie ma sensu. Coś takiego powinno działać, o ile nie pomyliłeś lini portu: [syntax=c]int main(void) { RCC->AHBENR...
Od pewnego czasu zmagam się z problemem uruchomienia SPI2 w trybie slave. Założenia komunikacji są następujące: - SPI pracuje w trybie slave - Transmisja jednokierunkowa - tylko odbiór - Zegar, dane oraz linia sterująca CS podawane są z innego układu master - SPI ma obsługiwać sprzętowo linię CS - SPI ma zapisywać odebrane dane za pomocą DMA do wybranego...
Na przykład otwieramy manual na stronie, gdzie znajduje się opis rejestru MODER i czytamy, co oznacza jaka wartość pola bitowego w tym rejestrze - co trzeba wpisać, żeby dana linia portu była przypisana do peryferiala (np. UART), a nie do GPIO. Przed zapisem do MODER ustawiamy dla odpowiednich linii portu funkcje RX i TX odpowiedniego UARTa w rejestrze...
Szanowny Państwo, zwracam się z uprzejmą prośbą o pomoc z pewnym zagadnieniem. Piszę program do układu sterowania zgrzewarką punktową o wysokiej częstotliwości przekształtnika. Korzystam ze sterownika XL7 firmy Horner oraz płytki STM32. Moją koncepcją na stworzenie układu sterowania jest transmisja danych poprzez protokół MODBUS RTU po kablu RS-485....
Ale chaos. Najpierw korzystasz z biblioteki od STM32, a później zapisujesz bezpośrednio do rejestrów? Zdecyduj się na jedno podejście. Dziwnie masz ta funkcję pull low napisaną. Ja zawsze robię writebit która zajmuje cały slot czasowy na jeden bit. Na 1Wire robiąc pull low musisz ustawić port jako wyjście i ustawić go na poziom niski. Aby go wyłączyć...
ogólnie wziąłeś maszynę o sporej mocy i jej funkcjonalność obciąłeś do nieco lepszego arduino. Niezupełnie. Moc obliczeniowa jest potrzebna do przetwarzania sygnałów. W prosty sposób można dopisać moduły robiące w zasadzie dowolne obliczenia, nawet zmiennoprzecinkowe czy DSP. Skomplikowany algorytm sterowania nie zrobi na CPU dużego wrażenia. Ograniczeniem...
Dzięki, wszystko oczywiście działa. Chciałbym poruszyć jeszcze jedną kwestię dotyczącą bilioteki do obsługiwania peryferiów do STM32. Dopiero zaczynam, więc sam jej używam, jednak da się zauważyć, że produkuje ona obszerny kod wynikowy. Myślę, że podobną funkcjonalność można stworzyć używając samych dyrektyw preprocesora, które nic nie zajmują. Napisałem...
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,...
Zasada ma być lekko inna. Wątki mają do "czegoś" pisać a ten wątek Na upartego się da, tyle że: - dostęp do współdzielonego bufora tylko przy zablokowanym mutexie - mutex musi być zablokowany przez cały czas kiedy do bufora coś jest zapisywane _ORAZ_ przez cały czas gdy jest on odczytywany (a więc od początku transmisji DMA do jej zakończenia), - powiadomienie...
Jest szybsze bo tak jak mówisz te rejestry są tylko do zapisu. Też mam coś takiego: [syntax=c]typedef struct { __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset:...
Aktualizacja z września 2025: zobacz tutaj, aby uzyskać szczegółowe informacje na temat konwersji STM32 przez UART zamiast J-Link (tj. J-Link nie jest wymagany) https://www.elektroda.com/rtvforum/viewt... (dzięki (at)max4elektroda!) zobacz tutaj, aby uzyskać wyższą wersję przekonwertowanego oprogramowania CK-Link Lite dla STM32...
Liczę na to, iż rzeczywiście jest dobrze zainstalowany ten bootloader w moim STM-e... Jeśli Flash Loader Demonstrator nie wyrzucił błędu to masz zainstalowany dobrze. Inna sprawa to jest czy ten plik boot20_pc13.bin masz w odpowiedniej wersji do kompletu z driverem i obsługą w Arduino. Przez Manager Bibliotek nie udaje mi się z ciągnąć i zainstalować...
zapis portu stm32 stm32 zapis zapis portu szeregowego
błąd 17925 centrala telefoniczny analogowy kuchenki gazowe mastercook
oscyloskop arduino hilti udaru
Jak sparować hulajnogę z aplikacją Nlooth? Tryb serwisowy DVD Philips - jak wejść?