GPIOx->BSSR
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).
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.
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,...
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?...
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...
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.
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.
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!!
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...
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...
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ż...
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, 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. 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...
Przecież napisałem dwa posty wyżej. GPIOD->CRH=GPIO_CRH_MODE8; GPIOD->CRH=GPIO_CRH_CNF8; To jeszcze nie załatwia sprawy, jeszcze należy ustawić te konkretne bity CRH? Poczytaj jakąś książkę do C. [syntax=c]GPIOD->CRH=GPIO_CRH_MODE8; GPIOD->CRH=GPIO_CRH_CNF8;[/syntax] drugi zapis nadpisuje pierwszy, zajrzyj do nagłówka stm32f10x.h masz tam:...
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ę...
gdzie znajdę plik który ma zdefiniowane adresy rejestrów, przerwań itp. Masz w środowisku: stm32f10x.h ale miało problem zrozumieć zapis: GPIOA->CLR ^= 1<<MODE2 Ja także mam problem :) W pliku stm32f10x.h masz definicje: Próbowałem Atollic TrueSTUDIO wybrałem sobie Embedded C Project naładował mi tyle syfu, że kompilacja trwała dość długo,...
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...
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...
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...
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ę...
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;//...
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...
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...
Sam RS485 oparty jest o układ MAX3485CPA+. Prędkość transmisji po USARcie w programie i na sprzęcie ustawiona jest na 921600B/s(tyle dopuszcza virtualny port COM). Oczywiście virtualny port COM jest oparty na układzie FT232BL. Program na komputerze jest napisany w javie i wykorzystuje klasę jd2xx dedykowaną dla tych właśnie układów. Problem jest właśnie...
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....
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...
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ć...
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,...
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...
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...
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...
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...
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:...
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...
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...
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ć...
uC to stm32f207. Timer napędza pwm jedno z wyjść (zmienne pwm z preloadingiem co jakiś okres). Wszystko działa ładnie na zmapowanym pinie dla wyjścia OC tego timera (tim 10). Jednak czasem potrzebuję wygenerować identyczny przebieg na pinie tego timera oraz na innym pinie GPIO, akurat tego z tim1. Jednym z rozwiązań jest załadowanie danymi w tym samym...
Trochę pogrzebałem i znalazłem przyczynę. Kluczowa była flaga IDLE okazało się że po resecie UART nie jest w stanie IDLE nawet jak nic nie szło i wtedy trochę pogrzebałem i odkryłem że mam błąd. Problem polegał na tym że robiłem OR-a żeby skonfigurować port w odpowiedni tryb a zapomniałem że rejestr GPIOx-CRx nie ma 0 po resecie tylko 0x44444444 ale...
Chciałem przedstawić projekt, na który poświęciłem łącznie kilka tygodni życia. Tracker GPS, który wysyła dane do chmury poprzez satelity Iridium lub sieć komórkową LTE. Projekt przetestowany w boju na jachcie wyprawowym, który dotarł na Spitzbergen płynąc przez otwarte wody Oceanu Arktycznego odwiedzając m.in.: Polską Stację Polarną Hornsund. https://obrazki.elektroda.pl/9640915700_...
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, 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...
Cześć :) W związku z tym, że w miejscu w którym pracuję istnieje potrzeba programowania pamięci SPI których wsad jest taki sam, stwierdziłem że zbuduję urządzenie, które będzie kopiowało zawartość jednej kości do drugiej. Niby nic, ale z czasem chciałbym zająć się zawodowo projektowaniem oraz programowaniem mikrokontrolerów, więc jako pierwszy projekt...
Ja zastosowałem ten projekt do obsługo klasy CDC i działa elegancko. http://vedder.se/2012/07/usb-serial-on-s... Są też inne stosy, które działają, ale mi chodzi o ten dostarczany ze środowiskiem Keil Pro. Ostatni update: Po połączeniu z PC w rejestrze statusu widzę, że dane są odbierane, np. otwieranie/zamykanie portu COM. Natomiast po wysłaniu...
Tutaj udokumentuję moją podróż z tanią płytką deweloperską / hobbystyczną STM32F103C8T6 "blue pill" zakupioną w Ali Express. Pomimo układu scalonego oznaczonego jako "STM32F103C8T6", wewnętrzna pamięć flash wydaje się mieć 128k zamiast 64k, co czyni go bardziej podobnym do STM32F103CBT6. Wydaje się, że nie jest to nieoczekiwane w przypadku podróbek/klonów...
Z tego fragmentu programu dużo wniosków nie wyciągniemy, ale... Przesłanie kodu 0x55 do układu pod adres 0x0B powoduje ustawienie pinów od 12 do 15 jako wejścia bez pullup'a. Strona 7 DS'a. Przesłanie kodu 0x55 do układu pod adres 0x09 powoduje ustawienie pinów od 4 do 7 jako wejścia bez pullup'a. Strona 7 DS'a. Przesłanie kodu 0x55 do układu pod adres...
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.
Witam! Sprawdź w ustawieniach debugera czy masz dodany algorytm zapisu pamięci. Dobrze też sprawdzić w utilites czy jest zaznaczone wgrywanie do pamięci po przez debuger. W screenie ja mam pamięć 1M ale ty musisz kliknąć dodaj i odszukać 2M. http://obrazki.elektroda.pl/5035821000_1... Kolejna kwestia to w zakładce "debug" opcja port...
Wyjaśniłem Ci to w poprzednim wątku z przykładem do Nokia_LCD.h, ustaw sobie kontrast między 40 a 60, u mnie na 40 jest OK, na 60 jest czarny ekran. Problem nie jest z kontrastem, ale z tym, że używam (ustawiam) dla obu urządzeń Hardwarowy interfejs SPI, ze wspolnymi pinami MOSI/MISO/CLK . Problem pojawia się dla wszystkich bibliotek poza ta najbardziej...
Jak widać da się szybciej niż na PIC32, nawet dla 48 MHz - o ile dobrze odczytałem działki z oscyloskopu. Wychodzi raczej na to, że da się tak samo. W moim przykładzie nie było zapisów do portu jako rozkazy jeden po drugim, a to na logikę powinno dawać przebieg o częstotliwości wykonywania instrukcji (tak jest w przypadku obydwu procesorów). Zresztą,...
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ć...
W sumie w trybie 8-mio bitowym możliwe że by poszło (double buffering), bo pamięci jest na obraz 18-to bitowy. Oczywiście pod warunkiem że wtedy pamięć jest wykorzystywana jako 8-mio bitowa. Nie wgłębiałem się. Najgorzej jak nadal jest 18-to bitowa a konwersja 8-->18bitów jest robiona w locie podczas zapisu do tej pamięci. ten lcd jest wogóle jakiś...
4,7k jest wyliczony raczej dla 5V, DS18B20 jak i STM32 może działać na 3.3V i wtedy proporcjonalnie to już jest ~3k. A jak zasilasz układ czujników jednak 5V to tym gorzej dla układu. Nie mam styczności z MacOS, sprawdzałeś to: http://macappstore.org/stlink/ ? Poza tym przy wgraniu bootloadera trzeba pamiętać o zworkach, bo się kasuje, może uległeś...
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...
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...
(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 jest na 8-bit? Jak tak, to pokaż przykłady, w C/C++...
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...
Rejestr TIM->SR nie reaguje na zapis jedynek. Zapis zera kasuje znacznik. Wykonanie operacji logicznej kasuje wybrany znacznik i wszystkie znaczniki, które zostały ustawione przez sprzęt po odczycie rejestru SR i przed jego zapisem, czyli w ogólnym przypadku spowoduje skasowania znacznika przerwania bez zauważenia, że był on ustawiony. Zmiana stanu...
[syntax=arduino] void loop() { // ------------------- jeszcze na LCD ... //-------------------- jeszcze 8 pomia... //-------------------- jakaś pamięc do... switch (key) ... } [/syntax] To Ci działa? Bo on chyba nie bardzo wie co to "key". Nie widzę ani deklaracji, ani żeby się cośtam wpisywało....
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...
Witam forumowiczów Miałem zamiar dzisiaj włączyć SPI w STM32F101 niestety kod się zawiesza a ja nie wiem dlaczego: ////porty i/o jako f. alternatywne PB5 , PB6, PB7 IO.GPIO_Pin = (GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7); IO.GPIO_Speed = GPIO_Speed_2MHz; IO.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &IO); delay_ms(200); ////...
Witam, To mój pierwszy post na tym forum :) Staram się zrealizować komunikację mojej aplikacji z płytką STM32 poprzez UART. Moim problemem jest to, że stworzona aplikacja pobiera tylko pierwsze 8 bajtów ramki zamiast 52. Jest to na pewno wina mojej aplikacji, ponieważ sprawdzałam co na port COM wysyła STM za pomocą RealTerm'a i wszystko się zgadzało....
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. zapis z rejestru do RAM z postinkrementacją wskaźnika...
Witam, Jako że jestem początkujący w dziedzinie STM32 napotkałem problem nie do przejścia. Moim zadaniem jest wysyłanie inkrementowanej zmiennej "Dane" która jest wysyłana przez USART i odczytanie jej przez terminal. W konsekwencji wyrysowując otrzymane wartości powinienem uzyskać coś podobnego do piły o amplitudzie od 0 do 255. Bez DMA wszystko pracuje...
Witam, od dłuższego czasu próbuje uruchomić graficzny LCD na KS108A. Mam 2 sztuki w różnym wykonaniu (COG i standardowy). Wyświetlacz jest podłączony pod nogi procesora STM32 które nie pełnia innych zadań niż zadeklarowane. Jedynym odstępstwem od standardu jest podłączenie szyny danych DB0-DB7 nie pod jeden port, tylko do kilku różnych - z powodu rozmieszczenia...
Cześć jakiś czas temu spotkałem się z takim zapisem mapowania rejestrów: C gives no guarantee of the ordering of fields within machine words , więc może być problem z portowaniem. Nie mam zamiaru "wynajdywać koła na nowo" tak pytam się z ciekawości o wasze opinie. Ewentualnie tak myślę że dałoby rade to zrobić też w C++ z template w taki sposób żeby...
Mam problem z poprawnym skonfigurowaniem wyświetlania z Noki 3410 z STM32L-DISCOVERY przez SPI. Czasami na wyświetlaczu pojawia się zbiór kropek (dołączam zdjęcie), innym razem nic nie pojawia się na wyświetlaczu. Proszę o pomoc w napisaniu poprawnego kodu. Zdjęcie wyświetlacza: http://obrazki.elektroda.pl/8093275400_1... Oto mój kod:...
Ciekawe że w RM ciężko doszuać takich informacji. Dla jasności, czy Wy to mapowanie rozumiecie tak, że dla Was mapowanie oznacza takie przypisanie w którym zamiast zwyklej cyfrowej koncówki GPIO mamy przyłaczone I2C, USART? Czy może podaną w RM zmiane polegająca że sygnały np układu I2C są zamiast na porcie C przełączone na A? Bo to dwie rózne sprawy....
Co do USB - niestety ATMega128A1 nie ma sprzętowego USB Doczytałem o tym, ale myślałem, że da się jakoś użyć tego drugiego procka do komunikacji przez USB w sensie używać już podpiętego portu USB jako przejściówki USART - USB. No ale jak się nie a to itak sobie poradzę z tymi dwoma wyprowadzonymi USARTami. Da się jakoś rozsądnie ustawiać piny w Xmega...
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...
Ja nie wiem, co to jest bajt "młodszy" i "starszy" - chyba oba są w tym samym wieku, skoro wychodzą z tego samego procesora W 16bitowym słowie bajt starszy to amiast wziąć po ludzku mikrokontroler z setką nóg i dużą pamięcią w środku tworzysz jakieś potworki. Czy ja wiem czy dekoder adresów magistrali 8080 to potworki? Poczekajmy az przyjdzie Ci zbudować...
Rozpatruję układ, który umożliwi odczyt napięcia na każdym z akumulatorów podłączonych do UPSa w łańcuch składający się z okło 30-40, a nawet 50szt akumulatorów 12V. Odczyt były podczas rozładowania z zapisem na kartę pamięci. Zakładając, że dla każdego akumulatora zrobię dzielnik, to rozdzielczość będzie malała z każdym akumulatorem. Wyniosła by on...
Witam, mam problem z funkcją wysyłającą dane przez SPI w STM32F4 a dokładnie ze sprawdzaniem flagi RXNE. Program zawiesza się na pętli sprawdzającej tą flagę mimo, że warunek jest spełniony...nie wiem o co chodzi, tutaj jest kod funkcji: void LIS35_WriteRegister(char addr, char v) { GPIOE->BSRRH = GPIO_Pin_2; //linia nSS stan niski while((SPI1->SR...
Gdyby do portu zostało zapisane 16 bit to byłoby zrozumiale, jeden bit na wyprowadzenie ale skąd tu 32 bit ? Czyżby w manualu o tym nie napisali? 4\/3!!
Teraz debuger mi startuje. Ale czy coś ładuje do flasha - to nie wiem - chodzi o konfigurację debug "gdb (flash) + load" z exampla Po odpaleniu tego w konsoli w eclipse pojawi się sama komenda i jej potwierdzenie, co zresztą - ponownie - przedstawione jest w artykule. Czasem komenda load nie pojawia się (bug wtyczki? eclipse'a?) - wtedy trzeba uruchomić...
https://obrazki.elektroda.pl/4089247800_... Pytanie: Czy mogę uzyskać dostęp do niestandardowego interfejsu SPI za pomocą mojego mikrokontrolera? Odpowiedź: Tak, ale może to wymagać trochę dodatkowego wysiłku podczas tworzenia oprogramowania układowego. Wiele współcześnie wykorzystywanych, precyzyjnych przetworników analogowo-cyfrowych...
Wykorzystałem poniższe instrukcje do ustawiania i zerowania linii portu [syntax=c] GPIOB->BSRR = GPIO_Pin_12; GPIOB->BRR = GPIO_Pin_12;[/syntax] Natomiast do odczytu stanu portu [syntax=c]GPIOB->IDR & GPIO_Pin_14[/syntax] Poprawiło to znacznie szybkośc działania. Wynik deasemblacji to 3 instrukcje asemblerowe dla ustawienia bitu [syntax=c]STR R2,[R1]...
Definitywnie jest on "zawsze poprawny", choć zależy co rozumiesz przez "zawsze". Np. jak spróbujesz go skompilować dla STM32F1, to oczywiście nie zadziała. (at)Freddie Chopin dzięki za konkretna odpowiedz, to ,że nie zadziała dla STM32F1, to już wiem z poprzednich postów, dlatego na razie skupiłem się wyłącznie na rejestrach dla STM32F410RB i obserwuje...
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)...
STMicroelectronics to jeden z najpopularniejszych producentów mikrokontrolerów w Polsce. Swoją renomę zawdzięcza nie tylko udanym konstrukcjom, ale i wdrażaniu najnowszych technologii oraz bogatej ofercie. W niniejszym artykule prezentujemy niektóre z ostatnio wprowadzonych układów ST oraz wybrane ciekawe modele, które od jakiegoś czasu cieszą się dużą...
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....
http://obrazki.elektroda.pl/7307254400_1... Autor w końcu znalazł nieco czasu, aby poeksperymentować z płytką STM32F4-Discovery, którą kupił jeszcze w zeszłym roku. Jak w przypadku innych mikroprocesorów, naukę dobrze jest zacząć od obsługi pinów GPIO. Ponieważ na płytce STM32F4-Discovery wyjścia zorganizowane są w dwu dwurzędowych...
Witam, Stałem sie niedawno posiadaczem płytki STM32L-Discovery. Takiej dokładnie: [url=http://www.kamami.pl/index.php?prod... Tu jest jej opis: [url=http://www.st.com/st-web-ui/static/... Na płytce jak się dobrze orientuję są dwa mikrokontrolery. STM32L152RBT6, to chyba...
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ś...
Oczywiście, że modyfikuję pozostałe 8 bitów, bo cały ten port to 16-bitowa szyna danych. Chyba, że chodzi Ci o coś innego a ja źle zrozumiałem? Makro o które pytasz ustawia piny portu danych (konkretniej GPIOB) jako wejście a makro LCD_DATAPIN_OUT; ustawia je jako wyjścia podciągnięte do masy. Pod spodem wklejam co te makra kryją za sobą. [syntax=c]#define...
Masz rację, że do odczytywania danych z portu na AtMedze było użyte makro #define LCD_DATA_GET(x) x = PIND dlatego zamiast tego, w moim kodzie użyłem funkcji GPIO_ReadInputData z biblioteki Std Periph Lib, która robi to samo. To, co ona zwróci przypisuję do zmiennej dat, która potem jest zwracana z funkcji. Dla bezpieczeństwa, żeby nie zmienić...
Swoją drogą kiedyś wymyśliłem, że najlepiej byłoby umieścić stos na samym początku RAM, potem .data, .bss i na końcu heap - tym sposobem przekroczenie zarówno stosu jak i heap nie spowoduje kasowania zmiennych, a do tego jeśli procesor generuje jakieś przerwanie z okazji zapisu pod nieistniejący adres, to można nawet obsłużyć taką sytuację <: Niestety...
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 ten moduł, to wypadałoby poszukać informacji, co to właściwie jest, bo opis był pewnie tłumaczony przez Google z chińskiego na angielski, a potem z angielskiego na polski - lepiej czytać po angielsku, mniej jest błędów, już widywałem takie "kwiatki", jak nazwanie płytki do próbnego montażu elektroniki deską do krojenia chleba... Coś tam piszą...
Naprawdę taka litania operacji OR jest bezsensu... W takiej litanii łatwiej jest mi napisać komentarze, ale wraz z nabraniem doświadczenia postaram się ich uniknąć. Nie jest dla mnie zaskoczeniem, że nie był to jedyny błąd w kodzie. Program wchodzi do funkcji konfiguracji MEMSa [syntax=c]char LIS3DSH_Init(void){ char LIS3DSH_Settings, RegVal; LIS3DSH_WriteRegister(LIS3DSH_REG_CR6_AD...
Tak podejrzewałem, czyli zostawiam w przerwaniu, i już odebrane dane wrzucę do kolejki. Póki co zmagam się z innym problemem, bo pomimo tego, że teoretycznie wszystko działa i urządzenie przechodzi enumerację, mogę się z nim połączyć i coś do niego wysłać i poprawnie odczytać, to próba wysłania czegoś do komputera kończy się stadem nulli w terminalu...
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.
Banalne pytanie: Skąd wiesz, że to timer nie zgłasza przerwań częściej? Na moje oko to wywołania procedur HAL_cośtam zżerają tyle czasu, że przerwanie timera ciągle wisi, bo nie nadążasz z jego obsługą. Prosty test - umieść w obsłudze przerwania tylko kasowanie znacznika i zapis portu (rejestru, nie HAL_cośtam) albo inkrementację zmiennej.
https://obrazki.elektroda.pl/8760486500_... Po przygodach z matrycami zbudowanymi na max7219, przyszła pora na coś bardziej zaawansowanego. Miałem w planach zrobienie własnej matrycy z 1500 jednokolorowych ledów 0603, 3 rejestrów przesuwnych i paru elementów dyskretnych, ale jak już ją zaprojektowałem, to przypadkiem trafiłem na matryce...
Napięcie mierzone mam podłączone bezpośrednio 3,3 V do portu B.0 który jest ustawiony na "00 Analog mode" "00 input mode" dla ADC_in8. BlueDraco w twoim punkcie 2. nie ma błędu. Nie ma sytuacji abym ten sam bit ustawiam, a potem go zerował. liczba dziesiętna 7 zapisana binarnie, nie zajmuje więcej jak 3 bity, a przesuwam ją co 3 bity więc nic się nie...
Np. tak: GPIOB->MODER = BF2(13, GPIO_MODER_OUT) | BF2(10, GPIO_MODER_AF)// SCK | BF2(9, GPIO_MODER_AF) | BF2(8, GPIO_MODER_AF)// PWM | BF2(7, GPIO_MODER_AF) | BF2(6, GPIO_MODER_AF)// PWM | BF2(5, GPIO_MODER_AF) | BF2(4, GPIO_MODER_AF) | BF2(3, GPIO_MODER_AF) | BF2(2, GPIO_MODER_OUT) | BF2(FL_NSS_BIT, GPIO_MODER_OUT) | BF2(0, GPIO_MODER_OUT); - i mamy...
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...
Dziękuję bardzo Rozumiem, że pierwszy kod całkowicie zastępuję inicjalizację SPI (łącznie z włączeniem taktowania portu oraz taktowania SPI)? WYbacz za pytanie ale nie operowałem wcześniej na rejestrach w STM32. Próbowałem uruchomić ten kod (usunąłem tylko asemblerowe instrukcje "nop", bo Keil zgłaszał brak średnika). Odczytywałem później przy pomocy...
stm32 zapis portu zapis portu szeregowego zapis portu pliku
podłączyć telewizor philips router renault megane bezpiecznik wycieraczka szlifierka kątowa kondensator schemat
pralka indesit cieknie pralka indesit cieknie
Optymalizacja paneli fotowoltaicznych 420W z Eco Solar Bost 3500pro Niegasnąca lampka immobilizera - przyczyny i diagnostyka