Zacznijmy od tego, że powinieneś podać konkretny model procesora. W przypadku wątpliwości powinieneś czytać manual zamiast eksperymetować z ustawieniami. Przykładowo w STM32F030 masz rejestr BSRR który odpowiada zarówno za kasowanie jak i ustawnienie bitu IO. https://obrazki.elektroda.pl/5898146400_... https://obrazki.elektroda.pl/3378724200_...
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).
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?...
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:...
Witam Szukałem na forum (ale nie znalazłem tego co mnie interesuje), chce pobrać stan PORTuA i PORTuC zapisac do pamięcia uC następnie odczytać z pamięci i wysłac USARTem na chwile obecną robię to bez pamięci: if(byte=='s') //gdy odbierze literke "s" wysyła naprzemian stan portu A i C { st=1; } ......... if(st!=0)...
Witam, Zaopatrzyłem się w zestaw edukacyjny STM32F0 Discovery oraz środowisko uruchomieniowe System Workbench for STM32. Staram się napisać prosty fragment kodu do obsługi portów według informacji w internecie - niestety nic nie działa, kompilator wyrzuca sam błędy. Zwracam się z prośbą o napisanie fragmentu takiego kodu na wzór, do testów. W załączniku...
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...
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.
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ć...
Czyli jak chcesz zmienić pierwszy i drugi bit w np. PORTC to wartość 0b00000011 zapisujesz do portu PINC i to spowoduje zanegowanie atomowo w jednym cyklu pierwszego i drugiego bitu w porcie wyjściowym PORTC. No nie, nie ma czegoś takiego jak rejestr PIN, więc i nie da się tam nic zapisać. zdaje się że nie znasz architektury AVR. Pod adresem 0x06 jest...
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!!
Witam, od paru godzin zmagam się z dziwnym działaniem pinów PB4 i PB5, które chcę skonfigurować jako wejścia (pull-up). Otóż domyślnie po resecie pin PB4 jest skonfigurowany jako JNRST - mimo tego po skonfigurowaniu go jako wejścia, procesor prawidłowo odczytuje to co podam na jego wejście. W tym samym czasie, tak samo skonfigurowany pin PB5 jest cały...
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...
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ż...
http://obrazki.elektroda.pl/4155164900_1... Witam wszystkich Tym razem chciałbym zaprezentować jeszcze programowy projekt radioodbiornika internetowego. Prezentowany projekt jest rozszerzeniem przedstawionego wcześniej projektu odtwarzacza i dyktafonu na STM32F407VG. Połączenie z Internetem zapewnia moduł WiFi WF121-A (internal antenna)...
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.
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ść,...
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...
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...
https://obrazki.elektroda.pl/7314526000_... Po co? Bo potrzebowałem zastąpić taki zestaw urządzeń: https://obrazki.elektroda.pl/2866172900_... Czyli switcha 100M, ładowarkę USB, rozdzielacz, dwa 3 portowe (używane 4 porty w sumie) "wstrzykiwacze" PoE (jednego nie ma na zdjęciu) jednym urządzeniem, bo schludniej. Poza...
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.
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...
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...
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...
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....
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ę...
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...
Rozsądek, rozsądek, Panowie, a nie magia. Autor prawie odpowiedział sam - dobrze kombinując, a Freddie czaruje "na wszelki wypadek". Podstawowe pytanie: Czy zachodzą okoliczności, w których nieaktualna zawartość bufora/kieszeni kodu czy danych może być użyta? Potrzebujemy dwóch odpowiedzi: jednej dla danych, drugiej dla kodu. W przypadku odpowiedzi...
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ś...
Cześć. Dość dawno się tu nie udzielałem, jakoś mi było nie po drodze. Trochę zmieniłem zainteresowania, trochę było dużo pracy i nieco odszedłem od elektroniki i niskopoziomowego programowania. Czas powoli wracać, ale dziś przychodzę z problemem :) Mam pewne urządzenie, zaprojektowane dobrych kilka lat temu. Urządzenie działa na STM32F407VGT6 , ale...
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,...
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ć...
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.
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...
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....
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...
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.
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,...
Witam Zmagam się z akcelerometrem ADXL345 + STM32F103. Połączenie po SPI. Otrzymuję na wyjściu wartość przyśpieszenia w kodzie U2. Zapisana jest na 13 bitach, w dwóch rejestrach 8 bitowych. Po odebraniu najbardziej znaczące przesuwam << 8 i łączę z mniej znaczącymi. Problem polega na tym, że wciąż otrzymuję wartość dodatnią, mimo że na najbardziej...
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...
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);...
Przecież widać, że Kolega nie używa FSMC. 1. Zastanawia mnie dlaczego w opisie jest "...1 byte over serial communication" kiedy przesyłasz dane w trybie równoległym. 2. Jakim cudem zapisujesz dane do układu poprzez zapis wartości do portu D i nic poza tym? Gdzie sygnały sterujące LCD_LE, LCD_EN? 3. Gdzie jest inicjalizacja układu SSD1289? O ile mnie...
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...
Szukam instrukcji która obsługuje port przetwornika ADC dla ST32f10x Włącza i szczytuje stan portu do zmiennej Odczyt z pinów i zapis (zapalanie diody )już udało się zrobić jeszcze przetwornik został zbyszek
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ć...
stm32 zapis portu stm32 zapis zapis portu szeregowego
unitra katalog transformatorów gniazdo component video amiko combo
moduł otwierania szyby moduł otwierania szyby
Xerox WC6605 – fioletowy zamiast niebieskiego podczas druku zdjęć, ustawienia kolorów Podłączenie radia: kolory przewodów brązowy, czarny, czerwony, żółty do kostki ISO (niebieski, czarny, czerwony, żółty, pomarańczowy)