No i ten "delay" na pętli for... 4\/3!!
Chciałem zobaczyc jak mikroprocesor działa na full szybkości bez delay'i. No i zobaczyłeś :) Przeskok z końca while(1) na jej początek też musi potrwać. Przeanalizuj program na debuggerze w trybie krokowym to zobaczysz skąd te przerwy.
Podałem kod czekania z delayem poniżej ale zdaje się tu jest całkiem inny problem... Nie związany z rejestrami [syntax=c]i =0 while(((PWR->CR & PWR_CR_DBP) == 0) && (i++<10)) Delay(1);[/syntax]
"Tick frequency" dotyczy jedynie przełączania zdarzeń o tym samym priorytecie które są w stanie "gotowe" (czyli w zasadzie chodzi o "round-robin scheduling"). Wszelkie* operacje na "synchronization primitives" (semafory, mutexy, kolejki, delay, sekcja krytyczna, ...) powodują natychmiastowe przełączenie kontekstu (jeśli jest ono oczywiście konieczne)....
Ma przecież główną funkcję delay i funkcję przerwania dekrementującą zmienną.
Najprościej można zorbić delay na tim Pogratulować pomysłu.
Witam, od dłuższego czasu walczę z tym problemem i nie potrafię znaleźć rozwiązania. Mam projekt, który pochodzi z anglojęzycznego tutoriala: [url=http://www.mind-dump.net/configurin... Wrzucony do Keila i skompilowany działa jak powinien. Problem w tym, że próbuję przenieść go na wykorzystanie bibliotek HAL, z których...
Witam, Wczoraj przyszedł mój niedawno zakupiony STM32F4Discovery. Do programowania wybrałem CooCoxa 1.7.5 (ToolChaina oczywiście załadowałem). Zabawę zacząłem od napisania prostego programu migającym naprzemiennie diodami: #include <stm32f4xx_rcc.h> #include <stm32f4xx_gpio.h> void Delay(void) { volatile uint32_t i; for (i...
A jeśli zmniejszysz wartość tego paskudnego delay np do 40000 z odkomentowanymi liniami to jak się program zachowuje?
Okej, zatem spróbujmy przystosować bibliotekę, którą mi podlinkowałeś do moich ćwiczeń ;-) Skopiowałem pliki EVE.h, EVE_commands.c, EVE_commands.h, EVE_config.h, EVE_target.c, EVE_target.h do odpowiednich folderów w projekcie. Teraz tak: W pliku EVE_target.h trzeba wybrać i włączyć jedną z konfiguracji. Jeśli dobrze myślę to mnie interesuje ta konfiguracja,tak?...
Na pewno funkcja delay zlicza takty zegara? Jak ona wygląda? Wykorzystałeś jakiś timer, przerwanie, pokaż ją.
[syntax=c] RCC->AHB1ENR |= RCC_APB1ENR_PWREN; /* zapis do AHB1ENR zamiast APB1ENR */ /* brak opóźnienia, patrz errata 2.1.13 Delay after an RCC peripheral clock enabling */ PWR->CR |= PWR_CR_DBP;[/syntax]
Wyłączenie optymalizacji to będzie raczej ficzer kompilatora, nie języka. W GCC jest jakiś atrybut, który pozwala zdefiniować poziom optymalizacji dla konkretnej funkcji - coś w stylu NOP does nothing. NOP is not necessarily a time-consuming NOP. The processor might remove it from the pipeline before it reaches the execution stage. Please note that...
Witam, Z tego co ja zdążyłem zauważyć (u siebie), problem może wynikać z miminalnego czasu "inactive time" czyli 50ns pomiędzy transmisjami (CSN 1). Zważywszy, że w przypadku STM32F4 szybkość wykonywania instrukcji jest kilkukrotnie (co najmniej) szybsza, powoduje to naruszenie czasu, jaki staruszek nRF potrzebuje na otrząśnięcie się po ostatniej transmisji,...
Nie dodawałem struktury oraz tablicy do której jest odwołanie w pętli, bo jest spora i nie jej problem dotyczy. [syntax=c]#include "stm32f4xx.h" static volatile uint16_t wyniki[3]; static void MX_DMA_Init(void); static void MX_ADC1_Init(void); while (1) { DP[0].wartosc = 5.f*(wyniki[0])/4096; } static void MX_ADC1_Init(void) { RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;...
Witam. Posiadam STM32F4-discovery, do którego chciałbym podłączyć kartę SD poprzez interfejs SDIO. [syntax=c]#include "stm32f4xx.h" // Device header int main(){ //////////////// SDIO ////////////////// // USED: // PORTC -> AF12 -> PC[12:8] // PORTD -> AF12 -> PD[2] ////////// GPIO CONFIG ////////// ///// Enable clock for SDIO ports RCC->AHB1ENR...
Tak jest na nucleo 3,3V ale zasiliłem 5V, ponieważ w nocie INA jest Vs w granicach 3-5,5V więc myślałem, że to bez znaczenia jakie napięcie podam, ważne żeby w tym przedziale. Usunę Delay oraz zmienię Timeout na 100. Czy może powiedzieć mi jak sprawdzić to HAL_OK ?
A delay between an RCC peripheral clock enable and the effective peripheral enabling should be taken into account in order to manage the peripheral read/write to registers. This delay depends on the peripheral’s mapping: - If the peripheral is mapped on AHB: the delay should be equal to 2 AHB cycles.
Witajcie, Posiadam płytkę STM32F4DISCOVERY z procesorem STM32F407VG. Używam pakietu Eclipse + linaro + openOCD skonfigurowanego wg opisu Freddiego Chopina. Uruchomiłem również przykładowy program stm32f4_blink_led. Chciałem dołożyć obsługę USART1. Konfigurację napisałem w pętli main. [syntax=c] int main(void) { volatile uint32_t count, count_max = 10000000;...
Niestety są to juz na tyle złozone procedury ze zdalnie nikt diagnostyki nie zrobi. Jezeli ta "biblioteka" jedzie na na delayach to proponuję ją porzucic na starcie i nawet się w nią nie wglebiac.
Wiem, że ogarnięcie ARM i jednocześnie C może być trudne, ale ja chciałbym na początek zrozumieć chociaż miganie diodą, a tu się okazuje, że to nie takie proste;-) To jest bardzo proste. Po prostu w AVR by migać diodą robisz 1 include io.h (no dobra, 2, bo jeszcze util/delay.h), ustawiasz 1 flagę kompilatora (np. -mmcu=mega8) i definiujesz jedną wartość...
Dzień dobry, Pracuję nad projektem dotyczącym pomiaru temperatury za pomocą czujnika DS1820 i wyświetlaniem jej na wyświetlaczu z użyciem STemWin. Na razie testowałem te moduły osobno w osobnych projektach - działanie STemWin na przykładowym projekcie dołączonym do paczki STMCube i DS1820 na projekcie ze strony "stm32f4-discovery.com/2014/05/13-readin...
Ciekawe jaki standard o tym wspomina? Zrób opóźnienia na delayu albo napisz kod który go nie używa. Albo użyj RTOSa to w czasie kiedy będziesz czekał na odpowiedź wyświetlacza będziesz mógł coś innego porobić.
Witam! Otóż moje następujące pytania: Czy to, co tutaj jest napisane ma prawo działać prawidłowo? Głównie mi chodzi o to, czy jest to w miarę dobrze zaprogramowane( aktualnie brak możliwości sprawdzenia, z powodu braku rezystora). Drugie pytanie, jeżeli mam funkcje USART_puts, jak zrobić, by temperatura zostawała przekazywana właśnie przez tą funkcję?...
To ja wklejam swoje, co mam: Inicjalizacja SPI, GPIO i PWM dla podswietlenia: [syntax=c] //--------------------------------------... void LCD_Configuration(void) { RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; SPI1->CR1 = SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_MSTR | SPI_CR1_SPE; //SPI1->CR1 |= 0b0000000000011000; GPIO_Config(GPIOA,5,AFPP_OUTPUT_50MHZ);/...
Mam do wyjścia DAC w STM32F4 podłączony taki wzmacniacz: http://obrazki.elektroda.pl/7700611400_1... Jak przy pomocy tego kodu: [syntax=c]uint32_t i; uint8_t delay,n; while(1) { for(delay=1;delay<=50;delay++) { for(n=0;n<(51-delay);n++) { for(i=0;i<256;i++) { DAC->DHR8R1=sine[i]; threadWaitCycles(delay*100); } } } }[/syntax]...
Witam. Po ogarnięciu portów i/o chciałem przejść do konwersji ADC. Początkowo zakładam, że nie korzystam z przerwań, nie korzystam z DMA. Screeny z Cube: http://obrazki.elektroda.pl/6506556500_1... http://obrazki.elektroda.pl/5974943000_1... http://obrazki.elektroda.pl/2033015600_1... Plik main: /** ****************************************...
To timingi. Takie rzeczy się dzieją jak za małe delaye są FMC ustawione. Często działa OK jak np masz inny poziom optymalizacji i generalnie wolniej wysyłasz komendy. To takie sprzętowe UB. Zwiększ czasy w FMC. Takie problemy objawiają się z reguły właśnie w tak tragicznie kiepsko napisanych funkcjach
kod nr. 1 Czy Ty tylko kopiujesz z YT, czy też zdarza Ci się w chwilach wolnych od kopiownia trochę myśleć? Bo sądząc po pierwszym przykładzie to chyba nie za bardzo. Drugiego już nawet nie oglądałem, bo po co? Do moderatorów: sorki za złośliwość ale jak ktoś wstawia coś takiego na forum, to na nic innego nie zasługuje. Nie szanuje nas ani naszego czasu...
Czyli z taktowaniem mam problem. Próbuję zrobić tak jak tutaj http://stm32f4-discovery.com/2014/04/lib... U mnie jest: Core Clock = ((HSE_VALUE / PLL_M) * PLL_N) / PLL_P Niestety po takiej konfiguracji STM wariuje, nawet USART wysyła śmiecie. Jak prawidłowo skonfigurować...
Witam, Założmy że mam program [syntax=c]#include "stm32f4xx.h" int main(void) { //jakis kod // ========================================... // Start sequence ramp from 2800 to 3500 by 50 // and then from 3500 to 3000 by 50 // ========================================... DelayMsUsingTim5(Delay100Ms); uint32_t...
To może wgraj oryginalną zawartość z Nucleo F411 jaka jest w nówkach na dzień dobry, by przynajmniej sprawdzić Nucleo plus ST-link. On tam miga i reaguje na przycisk może pamiętasz: No jest jakiś postęp chociaż nie wiem czy można to nazwać postępem. Wgrałem ten program, wyrzucił mi jakiś błąd elf loadera ale ostatecznie znalazł się w pamięci: Dodano...
Teraz wiem ze ten przykład mi działa to zaraz się przekonam czy faktycznie to MCO2 się do tego lepiej nada. Spróbuj może tego: [syntax=c] void mco2enable() { volatile uint32_t tmpreg = 0x00U; // set mco2 port clock RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; // delay after an RCC peripheral clock enabling tmpreg = RCC->AHB1ENR & RCC_AHB1ENR_GPIOCEN; (void)(tmpreg);...
Czy nie trzeba dodatkowo włączyć taktowania dla GPIOD ? Taktowanie jest włączane: A gdzie masz włączanie przerwań od USART? Włączam przerwania tak: Cyz odebranodane ma atrybut volatile? tak Niestety, ale program nadal nie działa. W pętli głównej cały czas wysyłam 'a', jednak nic nie jest w rzeczywistości transmitowane: [syntax=c]Delay(1000); buforTx[0]...
Ja mam taką funkcję od opóźnienia zrobionego na podstawie SysTick'a, nawet działa. Korzystam z niej podczas komunikacji 1wire i wszystko pięknie śmiga. W funkcji delay_init( 168 ); wpisujesz częstotliwość zegara w MHz np. dla STM32F4. [syntax=c_loadrunner]#include "../lib/stm32f0xx.h" #include "delay.h" static uint8_t fac_us = 0; void delay_init( uint8_t...
[url=http://stm32f4-discovery.com/2014/0... masz pokazaną zasadę działania 1wire z N DS18B20. Co prawda kod jest oparty na F4, jednak dużo różnic nie będzie w porównaniu z F1. Zawsze zamiast tworzenia swojego timera do delaya możesz skorzystać z SysTicka.
Dzisiaj wszystko jeszcze raz uruchomiłem i o dziwo zaczęły przychodzić dane z kamery, a program się nie zawiesza. Dodałem w programie takie polecenia: [syntax=c]for (i = 0; i< 19200; i++) { bufor_RAM_danych_obrazka[i] = 0; } Delay(100); uruchom_kamere(); Delay(100); wykonaj_foto(); Delay(1000); for (i = 0; i< 19200; i++) { sprintf(textToWrite,"%d,...
Witam, Program jest banalny ... zapala w pętli diody LED z opóźnieniem. Ale podobny efekt był też w bardziej zaawansowanych programach. Zachowanie programu nagrałem na krótkim filmie: http://youtu.be/GB02mXS2DT0 Wszystko na początku jest ok ale przy próbie wywołania funkcji delay() po raz drugi program się resetuje. Z flag RCC_FLAG_PINRST oraz RCC_FLAG_IWDGRST...
Witam, Dopiero zaczynam przygodę z STM32F407G i nie mam zbyt dużo doświadczenia. Potrzebuję wygenerować paczkę 8 bitów powtarzaną cyklicznie co jakiś zadany czas tylko zależy mi na tym aby szerokość impulsu nie przekraczała 0,5us no i żeby można było generować różne 8 bitowe paczki impulsów. Czy ten procesor do tego wystarczy? Niestety korzystając ze...
Z tego co wyczytałem, to przy Double Buffer Mode, dane są wysyłane na zmianę po zakończeniu każdej transmisji (transmisja jest tu w rozumieniu jednego elementu tablicy a nie całej tablicy?). Ja chcę przesyłać element po elemencie i zmienić je w dowolnym momencie, więc chyba muszę zrobić tak jak pisałeś, czyli zatrzymać DMA, zmienić adresy i ponownie...
Witam serdecznie. Jak poradzić sobie z SysTickiem i przerwaniem, ponieważ po kompilacji środowisko zwraca taki błąd: [syntax=bash]D:\workspaceAtolic\Cortexy\... multiple definition of `SysTick_Handler' src\main.o:D:\workspaceAtolic\Cortexy\De... first defined here [/syntax] [syntax=c] #include "stm32f10x.h"...
zobacz jak wyglądają debugi z przykładowego projektu. Generalnie to monitor reset halt do commands, odznaczasz halt& delay, dla ładowania flasha wybierasz load image i load symbols, dla samego debuga bez load image. Wybierasz jeszcze breakpoint at: main, resume. I koniecznie Standard GDB Launcher zamiast DSF. pzdr.
Procesor to konkretnie STM32F439IGT6. Mam taki kod w mainie: https://obrazki.elektroda.pl/2215514800_... A powinno być tak: https://obrazki.elektroda.pl/3426620100_... Najciekawsze wnioski są jednak po dodaniu tych linii: https://obrazki.elektroda.pl/6540612300_... A tu dla wersji która inicjalizuje...
Chciałbym podzielić się swoim tworem DS18B20 + STM32F4 Discovery po niecałych 2 miesiącach obcowania z poradnikiem. Zaczynając od zera jeśli chodzi o znajomość mikrokontrolerów z podstawową znajomością C. [syntax=c]#include "stm32f407xx.h" void delay(uint16_t time) { TIM2->CNT = 1; while (TIM2->CNT<= time); } static void reset (void) { GPIOB->MODER...
W ZL'u zrobiłem to tak: void GPIO_Conf(void) { RCC_APB2PeriphClockCmd(RCC_APB2Perip... | RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_PinRemapConfig(GPIO_Remap_USART... ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // Tx GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;...
Próbuję na płytce STM32F412-Discovery odpalić panel dotykowy z którym komunikacja jest przez I2C. Napisałem funkcję do obsługi I2C, ale nie wiem czy dobrze obliczyłem CCR i TRISE, chyba źle to zrobiłem bo zatrzymuje mi się na sprawdzeniu czy został wygenerowany START. Wiem, że pewnie nikomu nie będzie chciało się tego sprawdzać, bo trochę tego jest....
Dziękuję serdecznie za szybką odpowiedź :) Zaiste, problem leżał w konfiguracji rejestru MODER, jakoś opacznie zrozumiałem znaczenie GPIO_MODER_MODER0_1 :) Byłem przekonany że to będzie odpowiednie dla 0x00000001 a nie że ustawia 0x00000002, mój błąd nie zajrzałem do pliku stm32f4xx.h żeby do sprawdzić. Co do fragmentu: [syntax=c] while(1) { GPIOA->ODR=0x00000001;...
Witam, Dalej walczę z książka STM32 Aplikacje i przykłady w języku C. Doszedłem do obsługi przerwania RTC. W książce jest przykład, który konfiguruje przerwanie od RTC, tak jak by to było przerwanie wewnętrzne. Autor zakłada, ze w pliku stm32f10x_it.c jest gotowy szablon funkcji RTC_IRQHandler (), który należy uzupełnić oraz uaktywnić przerwanie w NVIC....
Witam, mecze się z DS18B20. Naskrobałem poniższy kod ale wydaje się działać połowicznie. Ale po kolei, pierwsze co robię to ONE_WIRE_Init (), a potem ONE_WIRE_Read_Tmp(). I przy tej drogiej funkcji mam problem bo zwraca ona za każdym razem 0x0808 (jak by komendy nie zmienić zawsze tak samo, a nawet bez komend). ONE_WIRE_Init_Sequence() działa poprawnie...
Witam Odbierając dane w stm32 nie udało mi się zgubić żadnej danej nawet jak dam po każdym odebranej ramce 50ms Delay na testy. Max Transmisja jaką miałem to 4Mbit Akurat używam TCP to przesyłania programu wykonywalnego do STM32. Mam telegramy które wysyłam z PC do STM32 a on na nie odpowiada. Zapytania i odwiedź mam na jednym porcie Chciałem teraz...
Witam, męczę się od jakiegoś czasu z komunikacją przez USART. Poniższy kod działa prawidłowo kiedy załaduję go do FLASH, ale nie chce działać poprawnie w RAM. 4 diody z poniższego kodu zapalają się w obu przypadkach, tylko uC nie wysyła danych jak program siedzi w RAM. Używam CoIDE. Proszę o pomoc. [syntax=c] #include "stm32f4xx.h" void init_RCC(void);...
Częstotliwość przerwań jest stała, a do obsługi LCD korzystam z przerwania timera, które i tak w systemie musi być. W jednym z ostatnich moich programów brakło mi timerów do sterowania 6 silnikami krokowymi itp.:) W zastosowaniach gdzie procesor ma zapas wydajności, najprostszym rozwiązanie będą procedury ze sztywnymi delayami dobranymi z pewnym marginesem....
To teraz dodaj jakies delay i poobserwuj ekran
Witam, Próbuje uruchomić wyświetlacz oparty o ILI9341 z wykorzystaniem SPI. Wyświetlacz sprawdzałem pod Arduino i działa, jest sprawny. Próbuję podpiąć go do STM32F407ZET6. SPI działa, widać że są przesyłane dane na oscyloskopie. Zaczerpnąłem procedurę inicjalizacji wyświetlacza z Adafruit dla Arduino ale wyświetlacz jak był biały tak jest po wgraniu...
Witam Posiadam płytkę STM32F4 Discavery chciał bym uruchomić USART6 ale przesyła mi złe dane. Sprawdzałem już zegary ustawienia usart ale nic mi już nie przychodzi do głowy. Zegary ustawione są przy pomocy funkcji SystemInit(). Cały plik sytem_stm32f4xx.c generowałem przy pomocy narzędzia STM32F4xx_Clock_Configuration_V1.1.0 (w excelu). Chcę użyć USART6....
[syntax=c]//volatile uint32_t count; int main(void) { volatile uint32_t count, count_max = 10000000; fpu_enable(); pll_start(CRYSTAL, FREQUENCY); stm32f429discovery_SDRAM_init(); gpio_pin_cfg(LED_GPIO, LED_pin, GPIO_OUT_PP_25MHz); while (1) { for (count = 0; count < count_max; count++);// delay LED_bb = 1; for (count = 0; count < count_max; count++);//...
Cześć Mam spory problem z komunikacją po RFM12 między dwoma procesorami. Czytałem poprzednie posty o tym problemie, ale nie za bardzo mi pomogły. Na razie chcę z STM wysłać cokolwiek na dsPIC. dsPIC na pewno jest dobrze skonfigurowany bo odbiera wiadomości z innego procka. Na STM na razie udaje mi się tylko zmieniać częstotliwość pracy zegara RFM12....
Witam, mam napisaną następując biblioteke do obsługi HD44780, Wyświetlacz jest podłączony do portu E do linii 7-13. Pisze następujący program: [syntax=c]GPIO_InitTypeDef GPIO_InitStructure; void Delay(__IO uint32_t nCount); int main(void) { NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GP... ENABLE); LCD_Initialize();...
Nie rozumiem co znaczy trzask. Pojawia się napięcie i znika. Tak jak by odpalił program "wystartował port" i go od razu zakończył. Co do programu to jest banalny "zapala led" i działa 100% z Nucleo-F446RE: [syntax=c] #include "stm32f4xx.h" void delay(int time) { int i; for (i = 0; i < time * 4000; i++) {} } int main(void) { GPIO_InitTypeDef gpio;...
Witam, Używam płytki stm32f4discovery. Od kilku dni próbuję nawiązać po SPI (w trybie 4-wire) połączenie z wbudowanym w nią akcelerometrem LIS302DL. Aktualnie skupiam się na podejrzeniu na oscyloskopie wartości rejestru WHO_I_AM. Więc wysyłam do akcelerometru instrukcję 0x8F00 (używam formatu 16 bitowego żeby, po wysłaniu 8 bitów zegar dalej pracował...
Witam Mam następującą konfiguracje : https://obrazki.elektroda.pl/9301426500_... Dla Timera2 jest APB1 i jak widać jest ustawiony na 84MHz zatem TIM2 ustawiam tak : https://obrazki.elektroda.pl/8953606600_... Ustawienie ma służyć dla funkcji opóźnienia w µs z krokiem co 1µs. Realizowane jest to w następujący...
naprawiłem problem dodajac delaya w HAL'u: HAL_StatusTypeDef SDMMC_PowerState_ON(SDMMC_TypeDef *SDMMCx) { /* Set power state to ON */ SDMMCx->POWER = SDMMC_POWER_PWRCTRL; HAL_Delay(1); return HAL_OK; }
Cześć Problem polega na tym że ADC1 współgra z DMA2 w trybie Injection, czy to jest związane z tym że nie nie ma sensu czegoś takiego robić, ze względu na to że w tym trybie wszystkie dane trafiają do różnych rejestrów JDRx, i nie ma "zagrożenia" overrunem? Konfiguracja wygląda następująco ADC1 w trybie Injection, wyzwalany zewnętrznie przez sygnał...
Teraz tak sprawdzam ale efekt jest podobny. Bez delaya nie pojdzie. To może pokaż co dokładnie próbowałeś?
Witam. Oto mój kod: while (!(ADC1->SR & ADC_SR_EOC)); Zgodnie z moimi wyszukiwaniami na temat bitu ADC_SR_EOC : This bit is set by hardware at the end of the conversion of a regular group of channels. It is cleared by software or by reading the ADC_DR register. Czyli DMA w momencie odczytania wartości z rejestru DR także kasuje...
Witam, Mam płytkę stm32f429zi z wbudowanym żyroskopem L3GD20. Skomunikowałem się z nim po SPI bazując na poniższym projekcie: http://stm32f4-discovery.com/2014/08/lib... Zgodnie z tym co wyczytałem, surowy odczyt to jest miara prędkości obrotowej wokół danej osi (do odpowiedniego przeskalowania), a kąt można obliczyć w najprostszy...
Kod nie musi być 'idealny'. Wystarczy przecież że będzie poprawny i optymalizacja nie zmieni sposobu jego wykonywania - w szczególności w Keilu ;] [syntax=C] void delay(u32 i) { while(i) i--; } [/syntax] działa zawsze tak samo niezaleznie od poziomu optymalizacji. Kompilator sie chyba 'domysla' ze to jest petla opozniajaca... Roznego rodzaju opoznienia...
Później okazało się, że po resecie i wejściu w main() jak damy pętlę opóźniającą składającą się z kilkuset instrukcji to jest ok, bez tego nie działa moduł Ethernet. No jak jest potrzebny to jest potrzebny. Delay nie zawsze jest zły. A z drugiej strony może robisz inicjalizacje innych układów (albo coś zajmującego czas - a jak sam piszesz to tylko...
Witam, małe uzupełnienie do wcześniejszego postu: Procesor: STM32F303RE Płyta ewaluacyjna: Stm32nucleo zmiany w linkerze: [syntax=c] /* +=======================================... | stacks sizes +=======================================... */ /* Handler mode (core exceptions / interrupts)...
Pokaż resztę kodu bo tam jest pewnie blad Wartość Q=7 jest niepoprawna, powinno być 6. No chyba że niepoprawnie rozgryzłem tego hala... Nie wiem czy istotne jest ustawienie dla USB z którego nie korzystam ? Dodano po 30 Pokaż resztę kodu bo tam jest pewnie blad Wartość Q=7 jest niepoprawna, powinno być 6. No chyba że niepoprawnie rozgryzłem tego hala......
Witam, Zaprojektowałem płytkę PCB z procesorem STM32F405RGT6, w fazie projektowej postanowiłem, że do wgrania programu na procesor użyję bootloadera. Po zlutowaniu podłączyłem procesor pod komputer, uruchomiłem program "Flash Loader Demonstrator", wgrałem mu następujący program: #include <stm32f4xx_gpio.h> #include <stm32f4xx_rcc.h> GPIO_InitTypeDef...
Przycisk mode to zwykły przycisk podpięty do masy. Więc do zrobienia tego zadania wystarczy, żebyś ogarnął sterowanie GPIO. PC13 (przycisk MODE) ustawiasz jako Input, PC8 (dioda) ustawiasz jako Output i piszesz obsługę przyciska. Jeśli korzystasz z HALA to odczyt stanu na pinie to HAL_GPIO_ReadPin(port, pin), a ustawianie stanu na pinie HAL_GPIO_WritePin(port,...
Problem rozwiązany. Błędna inicjalizacja wyświetlacza Poprawna sekwencja inicjalizacyjna: [syntax=c]LCD_WriteCommand(0x01); delay(10); LCD_WriteCommand(0x28); LCD_WriteCommand(0xcf); LCD_WriteData(0x00); LCD_WriteData(0x83); LCD_WriteData(0x30); LCD_WriteCommand(0xed); LCD_WriteData(0x64); LCD_WriteData(0x03); LCD_WriteData(0x12); LCD_WriteData(0x81);...
Sprawdziłem bibliotekę do JPEG, o której pisałem w pierwszym poście: [syntax=c]//1999 Cristi Cuturicu //#pragma hdrstop #include <stdio.h> #include <stdlib.h> #include <string.h> #include "datatype.h" #include "stm32f4xx.h" struct Parametry_JPG { char ile_pikseli_Vert_pola; char ile_pikseli_Hor_pola; char *p_bufor_YUV_pola; int numer_konwertowanego_pasa;...
(at)Freddie Chopin Tak jak wcześniej pisałem miałem uruchomiony projekt - obsługę ethernet na STM32f407 gdzie main wyglądał tak: [syntax=c] /** ****************************************... * (at)file main.c * (at)author MCD Application Team, EvertDekker * (at)version V1.1.0 * (at)date 14-September-2014 * (at)brief...
Witam, Próbuję zrobić prosty (o ile można to tak szumnie nazwać) oscyloskop. O ile mam już obsługę LCD oraz udaje mi się wyświetlać sygnał który podany jest do wejścia analogowego to nie bardzo mogę sobie poradzić z układem synchronizacji. Układ triggera próbuję zrealizować na zewnętrznym komparatorze którego sygnał wyjściowy podaję na jedno z wejść....
A ta funkcja do wysyłania stringa korzysta z RTOSa? Bo jeśli tak, to raczej cieżko przypuszczać żeby się wykonała gdy task w którym występuje problem i ma wyższy priorytet jest w nieskończonej pętli... Jeśli nie masz debuggera, to lepszą opcją zamiast nieskończonej pętli byłoby coś na styl vTaskDelay(portMAX_DELAY); 4\/3!!
Nie pomogło, wszystko rozchodzi się o to, że chce zapisać zmienną pobieraną z ADC, program wywala się w momencie zapisu więc coś jest czego nie zrobiłem... :D Umieściłem polecienia zapalenia i zgaszenia diody aby wiedzieć gdzie się wywala. Dioda się zapala ale już nie gaśnie. Jak mówiłem program jest banalny, krótka odpowiedź pomoże mi ruszyć z miejsca...
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...
Wstawiam poniżej kod programu. Gdy w programie obsługuje tylko adc problem wyglada inaczej. Gdy wzrasta napiecie na jakimkolwiek pinie to następuje interakcja z dwoma pozostałymi analogami. [syntax=c]volatile uint16_t a; volatile uint16_t b; volatile uint16_t c; static volatile uint16_t wyniki[3]; int main(){ fpu_enable(); system_init(); pll_start(CRYSTAL,...
... Kod producenta wygląda następująco: 1. Nie wiem czego producentem jest autor takiego interfejsu i2c, ale radziłbym tego nie kupować i unikać jak ognia. Ten delay to już jakaś patologia :/ 2. Na pewno nie jest to kod producenta mikrokontrolera (ST), bo ten jest znany i ogólnie dostępny. 3. Jeżeli chcesz się dogadać z układem, to wykorzystaj sprzętowy...
Jasne nopy wylecą, to na razie testy. Wrzucałem też pętle i to nic nie zmienia. Generalnie to nopy działają bo widzę różnicę na oscyloskopie. Wrzucam jeszcze raz kod inicjalizacyjny z komentarzami: [syntax=c] for(i = 0; i<120000; i++){}//delay 12ms GPIOB->BSRRH = LCD_RST; // HW RESET for(i = 0; i<12000; i++){} //1ms GPIOB->BSRRL = LCD_RST;...
Witam Init Lcd wygląda tak (konfiguracja po SPI): [syntax=c]void LCD_PowerOn(void) { LCD_WriteCommand(0xCA); LCD_WriteData(0xC3); LCD_WriteData(0x08); LCD_WriteData(0x50); LCD_WriteCommand(LCD_POWERB); LCD_WriteData(0x00); LCD_WriteData(0xC1); LCD_WriteData(0x30); LCD_WriteCommand(LCD_POWER_SEQ); LCD_WriteData(0x64); LCD_WriteData(0x03); LCD_WriteData(0x12);...
ogólnie karta ma pracować z dekoderem vs1011 [syntax=c]void SPI_SD_Init( void ) //inicjalizuje SPI dla SD i MP3 { DESELECT_SD(); DESELECT_MP3(); //RCC->AHB1ENR |= RCC_AHB1ENR_GPIOEEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOEEN; RCC->APB1ENR |= RCC_APB1ENR_SPI2EN; //RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; // GPIOB - SCK PB13,...
(at)Piotrus_999: Tak, wiem, czytałem, ale najprościej jest sprawdzić, czy przerwanie działa i czy do niego wchodzi (po prostu led'a zapalić w przerwaniu, tyle). Po wywaleniu SW4STM i zainstalowaniu czystego Eclipse i skonfigurowaniu według tutoriala od kolegi Freediego przerwania od linii zewnętrznych śmigają aż miło. Źródłem przerwania jest ekran dotykowy...
Dzień dobry, mam problem z czujnikiem HC-SR04, problem polega na tym że zwraca kilka sygnałów, z czego jeden pomiar jest poprawny a reszta śmieci ( np. 150cm i poprawy 10cm). czujnik obsługuje STM32F4, w taki sposób: [syntax=c] void EXTI1_IRQHandler(void) { if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1) == 1){ setZero(); } else { uint32_t a=getus(); printf("roznica=%lu...
Witam. Mam taki problem z którym walczę od ponad tygodnia. Posiadam wyświetlacz 3.2cala LCD TFT ze sterownikiem SSD1289. Chcę go podłączyć pod płytkę DISCOVERY STM32F4 (uC F407). Myślę, że płytka dobrze znana. Wyświetlacz pochodzi z płytki Landtiger z LPC1768. Jednak odrzuciłem prace na lpc. STM jak dla mnie ma lepiej i bardziej zrozumiale napisane...
Jestem początkujący jeśli chodzi w ogóle o mikrokontrolery i programowanie także proszę o wyrozumiałość. Na tej płytce jest dioda LED podłączona do portu PA5. Jeżeli chcemy ją zapalić to używając rejestru BSRR piszemy w programie: GPIOA->BSRR |= 1 << 5; a gasimy GPIOA->BSRR |= 1 << 21; nurtuje mnie taka sytuacja while(1){ GPIOA->BSRR...
Działa bez problemu (F446RE) [syntax=c] GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); while(1) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET); HAL_Delay(2000); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0,...
Nie, procek się nie grzeje Zworek nie ruszałem, St-link (oba) na dole JP2 i JP3 też i na górze JP1 zwarte jak były Programuję w środowisku Keil v5 #include "delay.c" #include "delay.h" #include "stm32f4xx.h" void GPIO_Config(void) // konfiguracja portow gpio { GPIO_InitTypeDef GPIO_InitStructure; //tu nalezy...
więc muszę to zrobić w czasie trwania pętli do wysyłania dekodera ? kiedy wysyłam buffor2 tablicę to musze zapełniać buffor3 ? kiedy wysłam buffor3 musze zapelniac buffor 2 ? po prostu nie wiem jak mam to zapełniać w tej pętli stopniowo przesuwać bajty w tablicy do której zapisuje. bo jak zrobię f_read w taki sposób to wpisze mi co pętle kolejne 4000....
Witam ponownie Na początek sugerowałbym przetestować samą poprawność działania SPI, można np. zapętlić MISO z MOSI. Albo odczytywać z peryferiala rejestr ID. Dopiero w następnym etapie uruchamiać obsługę właściwą. Nie analizowałem Twojego programu ale podeślę mój 'bliźniaczy' i działający na STM32F429_DISCO, odczytuje on i wyświetla rejestry GYRO L3GD20....
Witam Od kilku dni staram się uruchomić pewien tajwański tani szmelc o nazwie HY_TFT320_262K ze sterownikiem (rzekomo) ili9320. Problem w tym, że cała dokumentacja i przykładowe programy, które do niego dostałem są w krzaczkach lub całkowicie nie dotyczą mojego modelu wyświetlacza. Stąd swoją wiedzę i większość kodu czerpię z odmętów internetu i staram...
Nie wierzę, ale działa!:) Dzięki wszystkim za pomoc! Zamieszczam kod konfiguracji i transmisji danych przez SPI1 dla STM32F4. Może komuś zaoszczędzi to czasu;) [syntax=c] int main(void) { uint8_t rx_spi; //bufor spi fpu_enable(); system_init(); pll_start(CRYSTAL, FREQUENCY); RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; //enalble rcc spi1 gpio_pin_cfg(GPIOA,4,GPIO_OUT_PP_50MHz);...
Aby nie robić niepotrzebnie nowego tematu chciałem opisać problem który napotkałem po drodze. Pytałem wcześniej jak sprawdzić źródło taktowania procesora. Wynikało to z tego że w mojej DISCOVERY F4 wymieniłem kwarc. Dokładniej to wylutowałem standardowy 8 MHz i wlutowałem w jego miejsce podstawkę (podstawka precyzyjna). Pierwsze próby z wymianą kwarca...
Wiesz co ja dopiero zaczynam z programowaniem stm ale jedna sprawa rzuciła mnie się w oczy. twoja funkcja jest prawie funkcją z biblioteki której definicja i rozwinięcie znajduje się w pliku core_cm4.h [syntax=c] __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible...
Przejrzałem jeszcze raz cały kod i nigdzie nie znalazłem błędu. Wydaje mi się że w przypadkowym fragmencie pamięci nie byłoby za każdym razem takich pasów poziomych. Dodałem jeszcze przed wykonaniem zdjęcia ustawienie wartości przesłony na 2000 ale także to nic nie pomogło. [syntax=c] MT9D111_WriteReg(PAGE_SELECT_REG, 0x0); // Select Page 0 - Sensor...
No dobra, co do problemu z wczoraj to doszedłem do tego że wykorzystywałem definicje zmiennych np: uint_8 bez nagłówka "stdint.h". Generalnie działa ALE... Teraz zmienna pm (do której zapisuje wynik z ADC1) ma wartość od ~5100 do ~65520 - w zależności od położenia potencjometry. To znacznie za dużo bo powinna mieć maksymalnie 4095 (bo ADC jest 12 bitowy)....
Odebrałem kwaterniony: 0.024229 -0.86446 0.502113 0 0.022783 -0.99555 0.091483 0 0.022616 -0.98688 0.159885 0 0.029931 -0.92663 0.374772 0 0.019435 -0.95165 -0.30657 0 0.034155 -0.99942 0 0 0.018643 -0.75865 0.651231 0 0.036383 -0.96461 0.261175 0 0.010495 -0.9983 -0.05737 0 0.028228 -0.99952 -0.01276 0 Kod programu: [syntax=c]float dot(vector u, vector...
Witam ostatnio dostałem wyświetlacz HY28a (ILI9320). Od tygodnia próbuje coś na nim wyświetlić lecz bez skutecznie. W internecie znalazłem kod pod LPC, doszedłem do wniosku że po lekkich modyfikacjach powinno zadziałać na stm32f4 discovery. Poniżej przedstawiam kod pod LPC na którym się bazuję. [syntax=c]/*****************************...
stm32f4 funkcja delay funkcja delay przerwanie delay
arduino przycisk funkcji bezpiecznik zasilacza komputera virtualdubmod audio
wymiana baterii telefonie motorola wymiana baterii
Eco Solar Boost 3500 Pro – jakie urządzenia podłączyć oprócz grzałki CWU? Zmodyfikowana sinusoida Ilość zwojów stojana agregatu 140mm – orientacyjne wartości i obliczenia