Odczyt rejestru DR przez debugger jest odczytem, a więc resetuje flagę RXNE w rejestrze SR. Wyłącz podgląd rejestru DR to powinno być lepiej.
Oczekiwanie na flagę TXE nie gwarantuje że transfer się zakończył (bo co ma pusty bufor do idącej w tym czasie transmisji?) - do tego służy flaga BSY. 4\/3!!
Czytając o rejestrach liczników, jedyną taką flagą (którą znalazłem), jest TIMx_SR_UIF, czyli UpdateInterruptFlag. Co prawda nie będę włączał przerwania, ale jest to chyba jedyna flaga którą mogę w tym celu wykorzystać, czy też jest jakaś inna lepsza do tego celu? To jest właśnie flaga która jest Ci potrzebna. 4\/3!!
Przestawienie kierunku po rozpoczęciu wysyłania ostatniego bajtu jest błędem. Należy go przestawić dopiero _PO_ tym gdy ustawi się flaga TC. Ty natomiast sprawdzasz tą flagę _PRZED_ rozpoczęciem wysyłania (ale tak czy siak po przestawieniu kierunku), co jest mało sensowne. Wewnątrz pętli powinieneś sprawdzać flagę TXE, a TC tylko przed zmianą kierunku...
Musisz jeszcze skasować flagę końca konwersji w rejestrze statusowym. Pisałem żebyś manuala poczytał! JEOC: Injected channel end of conversion This bit is set by hardware at the end of all injected group channel conversion. It is cleared by software. 0: Conversion is not complete 1: Conversion complete Tu jest troszkę inaczej niż w regularnych kanałach...
Debouncing w przerwaniu - tylko nie mów, że robisz to przez aktywne oczekiwanie wewnątrz przerwania. Jeśli tak, to zauważ, że to, że skasowałeś flagę przerwania i jesteś w przerwaniu wcale nie oznacza, że flaga nie może zostać ustawiona ponownie. Możliwy jest taki scenariusz: wciskasz przycisk, pojawia się zbocze opadające które ustawia flagę a więc...
Definicja tcp_timer_needed() jest w pliku tcp_impl.h, żródła w timers.c. Plik tcp_impl.h zaincludowany w tcp.c z resztą tu nic nie zmieniałem. Po dopisaniu #include "lwip/timers.c" program się kompiluje owszem i wszystko działa ale mam potem problem z kompilacją gdy chce dodać liczniki softowe pod freertos a to za sprawą includeowania pliku timers.h....
Bit RXNEIE włącza przerwanie od dwóch flag: RXNE i ORE (overrun) - patrz tabelka USART interrupt requests . Odczyt z DR kasuje RXNE. ORE jest kasowane przez (cytat z opisu bitu ORE): "an read to the USART_SR register followed by a read to the USART_DR register".
Flagę TXE powinno się sprawdzać PRZED wpisaniem czegoś do DR (to akurat nie jest wielkim problemem), ale przed odczytaniem DR powinno się sprawdzać czy flaga RXNE jest ustawiona - dopiero wtedy można odczytać to co jest w DR. Bez tego wciąż nie odczytujesz tego co chcesz - na etapie inicjalizacji odczyt masz praktycznie natychmiast po wpisaniu (bufor...
Ja właśnie dostałem płytki z chin zrobione pod STM32F030 preferowane STM32F030CCT6. Zamówiłem więcej płytek żeby może używać płytki do innych projektów. Do projektu docelowego mam 2 sztuki w zapasie, ale przy braku na rynku reszta płytek pójdzie na półkę albo do śmieci :( STM32F030C8T6 można aktualnie kupić. Tak wiem o istnieniu STM32F030C8T6, to miał...
choć myślałem, że kiedy nie ruszam niczego co ma związek z CC to on nie porównuje.. To źle myślisz. Włączenie CC to tak naprawdę włączenie tego co dalej. Czyli sterowania kierunkiem liczenia reakcje wyjścia OC itp itd. Porównanie działa nawet gdy CC jest wyłączone.
Jeśli ktoś szuka łatki dla 113-15001-122 to tutaj jest. Zmniejszone migotanie jest przyjemne. Witam wszystkich po długim czasie. Wypróbowałem łatkę mrsim0ns w wersji FW 122 i działa dobrze, podobnie jak łatka boyak75 w wersji 120. Jednak mój poprzedni problem pozostaje: muszę wprowadzać kod aktywacyjny przy każdym włączeniu zasilania, niezależnie od...
OpenCV uruchamiany jest głównie na wysokowydajnych platformach obliczeniowych czy mocnych mikroprocesorach, ale pakiet ten może wykonywać kilka rodzajów aplikacji do przetwarzania obrazu na prostych mikrokontrolerach. Przetwarzanie obrazu stało się częścią naszego życia. Nikogo nie dziwi rozpoznawanie twarzy w smartfonie czy wykrywanie pasa ruchu przez...
Tylko flaga a reset mam na myśli ten w RCC. Raz na 100 uruchomień wszystko jest. Z resetem tym z i2c soft tez próbowałem zero reakcji.
A flaga jest zadeklarowana jako volatile ?
Wyslalem jedna wiadomosc PW. sam pracuje wiem jak to jest i ze jak ktos odpowie w ten sam dzien to juz jest swieto. chyba ze mi sie cos pomylilo i zle wyslalem albo podwojnie to wybacz i przepraszam, bo slalem do kilku osob znajacych sie na STM32 i aktywnych na forum. Dodano po 30 DZIALA! Zamiast calych tych durnych bibliotek od ST zeby skonfigurowac...
Ważne jest co jest w apiflags. Sprawdź czy nie jest ustawiona flaga TCP_WRITE_FLAG_MORE.
Nie musisz z odbiorem czekać na flagę BSY - od tego masz flagę RXNE. Flaga BSY przydaje się przed "przestawieniem" CSa. 4\/3!!
Witam, mam problem z moim urządzeniem, mianowicie... STM komunikuje się z ESP8266 przez USART i wysyła do niego komendy "AT", przy pierwszym włączeniu inicjalizacja ESP (połączenie z wifi, cwmode itd) działa poprawnie i każde polecenie wykonuje się kolejno. Kiedy dojdziemy do programu głównego i mikrokontroler znajdzie się w zdarzeniu, gdzie powinien...
Najoptymalniej jest ustawić flagę a w pętli głównej jeśli ta flaga jest ustawiona to wywołać funkcję.
No tak: [syntax=c] /************************* * stm32 uart main.c *************************/ #include "stm32f10x.h" #include "stm32f10x_flash.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include "stdint.h" #include "misc.h" #define CLK_FREQ 36000000 /* User defined function prototypes */ void GPIOA_Init(void);...
A to nie jest tak że jak włączę np timer i będzie sobie chodził i jak się w końcu przekręci, (przepełni) to ustawi flagę np UIF (piszę z pamięci mogę pomylić nazwę, ale chodzi o przepełnienie). Flaga jest ustawiona, włączam przerwanie w peryferialu i następnie w NIVC. Jeśli flagi nie skasuję to odpali się przerwanie czy nie?
Witam, Kiedyś wykorzystywałem w swoim projekcie układ FT245 do komunikacji z PC po USB. Układem sterował atmega poniżej przykładowy kod odczytu i wysłania 1 bajtu: unsigned char read_USB_byte(void){ unsigned char byte=0; DDRC = 0x00; //portc - jako wejscie do{ if (RxF==0) //kiedy RxF#=0 nowy znak do odczytu { RD_LO; //strob...
Pochodzi od czujnika przerwania wiązki, drgań styków nie ma : ), znalazłem że czyszczenie flagi przerwania powinno być na początku, ale to niestety nie pomaga, i nadal pozostaje problem z wykrywaniem obu zbocz a nie tylko jednego Dodano po 10 Przeszukałem forum, kilka kursów po polsku i angielsku i ten kod z pierwszego postu jest identyczny jak te z...
po skoku do Aplikacji z Bootloadera pojawia się dziwne zachowanie: zaczyna się wykonywać kod main() który jest przerwany i widzę w debugerze wykonywanie konstruktorów obiektów globalnych. Możesz pokazać jak to wygląda w debuggerze? Te konstruktory wykonują się jakby z main() czy jakby z przerwania? W Bootloaderze przed skokiem, robię __disable_irq(),...
Dlaczego tak? Rzeczywiście sprawdziłem, że po wysłaniu jadnego bajtu przez SPI do slave'a flaga RXNE jest ustawiona w stan wysoki. Rozumiem, że SPI to po prostu rejestr przesuwny, ale jeśli tak jest to czy po prostu w rejestrze SPI do odczytu nie jest dostępny po prostu ostatnio bajt jaki przyszedł? Wciąż nie rozumiem ,jaki błąd popełniłem w moim kodzie....
Witam Zaczynam zabawę z STM32 i HALem. Mam następujący dylemat. Otóż uruchomiłem przerwania od dwóch UARTów funkcją: [syntax=c] HAL_UART_Receive_IT(&huart1, &znak, 1); HAL_UART_Receive_IT(&huart2, &znak, 1); [/syntax] Po pojawieniu sie jednego znaku w Uarcie 1 lub Uarcie 2 uruchamia mi się wspólna procedura: [syntax=c] void HAL_UART_RxCpltCallback(UART_HandleTypeD...
Jest coś nie tak z UART_BUFOR. W przedstawionym fragmencie brak definicji tego tworu więc nie wiadomo dlaczego. Poza tym typowy błąd AVRowca - nieskasowana flaga przerwania. Powtórzę to co przedmówca: poradnik szczywronka wyłuszcza to prosto i zrozumiale. Nazwy wektorów przerwań biorę z Reference Manuala albo z plików startowych np. vectors_stm32f10x.c...
Kod: [syntax=c] /************************* * stm32 uart main.c *************************/ #include "stm32f10x.h" #include "stm32f10x_flash.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include "stdint.h" #include "misc.h" #define CLK_FREQ 36000000 /* User defined function prototypes */ void GPIOA_Init(void);...
Temat jest znany już dawna. Wg, również i moich, testów dostępne były diody z czasem resetu ok 9 us oraz 35 us. Prawdopodobnie masz te drugie. A może jeszcze jakiś nowy twór pojawił się na rynku. "Moje" diody resetują się przy czasie powyżej 200µs, więc to jeszcze coś nowszego. Dobrze byłoby dograć tę bibliotekę, by czas resetu był parametrem....
Działa. Wystarczyło zmienić szukany znak z backslasha na '\n'. Ostatecznie modyfikacja wygląda nastepująco: if (character == '\n') { __fputc_('\n', stream); __fputc_('\r', stream); continue; } Dopracowałem rownież funkcje usart_put_char, zamiast wprowadzać delaya sprawdzam flage czy UART zakończył poprzednią transmisję....
Piszę do swojego RTOSa driver dla SPI używający DMA. W rozważaniach ograniczmy się do STM32F0, ale ogólnie rozchodzi mi się o wszystkie układy STM32 które mają SPI wyposażone w FIFO _ORAZ_ DMA które FIFO nie ma (czyli najgorsza możliwa kombinacja). Generalnie wszystko jest w miarę proste i logiczne, ale zastanawiam się nad obsługą błędów, a konkretnie...
Doczytałem trochę i ustawiłem zegar I2C2 na nowo ale całość dalej nie działa. Po wysłaniu adresu kamery ustawiana jest flaga AF czyli kamera nie zwraca bitu ACK. Co może być przyczyną takiego zachowania? [syntax=c] oid I2C_conf(void) { I2C2->CR1 |=I2C_CR1_ACK; I2C2->CR2 |= 8; //ustawienie APB1 na 8MHz I2C2->CCR |= 40; //SCL 100kHz -> 100kHz = 8MHz/CCR...
IMO implementacje SPI na przerwaniach w przypadku SPI mają zerowy sens (jedynie jeżeli mamy problem z ilością RAM i liczymy każdy bajt ale wtedy można - a raczej trzeba się pogodzić z dużymi dziurami między paczkami). DMA w przypadku SPI jest dość łatwe do implementacji bo ilość danych wysłanych jest zawsze równa liści danych odebranych. Nie występują...
Witam, Potrzebuje pomysł na zgrabne programowanie zewnętrznej kości EEPROM podpiętej przez I2C z STM32F103RB. Chcę żeby to się odbywało mniej więcej jak to ma miejsce w AVR, czyli jeżeli programuje procesor to i EEPROM. W STM na początku programu mam funkcję która programuje mi EEPROM domyślnymi wartościami, ale wiadomo że tak nie może zostać na stałe,...
W sumie to co napisałeś Freddie Chopin dużo wyjaśnia to co się działo z STM. Musisz mieć rację. Napisz mi tylko jeszcze czy jest możliwe zrobić czegoś takiego: W USAR'cie gdy chciałem wysłać 1 bajt np. co 1sek to wówczas ustawiałem flagę nadawania program przechodził do procedury obsługi przerwania i kopiował zawartość zmienne do rejestru nadawczego...
Witam, mam dziwny problem przy obsłudze przerwania od ADC End of Conversion. Gdy przetwornik ADC jest skonfigurowany do pracy z DMA procesor nie wchodzi do if`a gdzie jest zerowana flaga zakonczenia konwersji. Wchodzi jedynie do funkcji obslugi przerwania i po sprawdzeniu źródła przerwania wychodzi z niej. [syntax=c]void ADC1_2_IRQHandler ( void ) {...
Zeruje falgi żądań przerwań w rejestrach peryferiów: void DMA1_Channel1_IRQHandler(void) { GPIOB ->ODR ^= GPIO_BSRR_BS13 ; // Zerwoanie flagi żądania przerwania wpisaniem 1 DMA1->ISR |= DMA_ISR_HTIF1; } void ADC1_2_IRQHandler(void) { if(ADC1->SR & ADC_SR_EOC) { GPIOB ->ODR ^= GPIO_BSRR_BS12 ; ADC1->SR...
Mógłby ktoś rzucić okien na mój kod funkcji delay. Siedzę nad tym od paru godzin i nie mogę znaleźć błędu. Timer jest 2 razy szybszy nić powinien być. Używam TIM6, skonfigurowanego do ustawiania flagi przerwania przy overflow, ale nie obsługuję tego w przerwaniu tylko w funkcji delay sprawdzam, kiedy flaga zostanie ustawiona. Do prescalera wstawiam...
Tyle, że oba kompilatory sprawdzałem na tych samych programach opcjach - z wyłączoną optymalizacją. Tak jakby wyrokować o prędkości maksymalnej samochodu na podstawie tego ile "wyciągnie" na wstecznym... Poza tym nie byłbym taki pewny Twoich porównań nawet przy takim założeniu, bo ponoć w Keil optymalizacja jest domyślnie WŁĄCZONA, więc jeśli jest...
Niemożliwe żeby nie działało, masz przecież bibliotekę, która wszystko ułatwia i rozwiązuje wszystkie problemy. RCC_ APB1 PeriphClockCmd(RCC_ APB2 Periph_SPI1, ENABLE); 4\/3!!
Sprawdziłem i flaga RXERIF nie jest ustawiona. Zwróciłem uwagę natomiast na coś innego. Wszystko lepiej działa jeśli timerem odpalam obsługę pakietów (ENC28J60_ExtiH) niż jak wyzwalana jest z przerwania. Dodatkowo sprawdziłem iż po połączeniu poprzez FireFox'a w buforze pozostają nie obsłużone 2 pakiety. Dziwne to gdyż zmieniłem funkcję i na początku...
Witam Dlaczego podczas obsługi przerwania TIM2 dwukrotnie jest ustawiana flaga "tim_up" ? Pierwszy raz natychmiast (błędnie) oraz drugi raz po ustawionym w preferencjach czasie (prawidłowo) [syntax=c]volatile uint8_t tim_up = 0; int main(void) { myinit (); TIM_Cmd(TIM2, ENABLE); while (1) { /* * You can do whatever you want in here */ if( tim_up ==...
Witam Próbuje od jakiegoś czasu zmusić jeden procesor do zaprogramowanie części pamięci w drugim za pomocą protokołu swd. Bazowałem na początku na dokumentacji odnośnie EFM32 (jedyny cortex m3 który znalazłem w miarę opisany). Niestety zatrzymałem się na etapie, możliwości odczytu, zapisu do pamięci ram oraz odczytu z pamięci flash. Niestety nie jestem...
Dzięki, teraz działa ładnie, może się komus przyda. [syntax=c] ////////////////////////////////////////... przyciskow void EXTI15_10_IRQHandler(void) { NVIC_DisableIRQ(EXTI15_10_IRQn); //wyłącz przerwanie exti if(((EXTI -> PR)&EXTI_PR_PR10)) //przerwanie od PA10 { po1++; } if(((EXTI -> PR)&EXTI_PR_PR11))...
Witam problem jest następujący, inicjalizacja SPI przechodzi (wydaje mi się że poprawnie). Niżej podam wartości rejestrów SPI3. Problem polega na tym że nie mogę nic wpisać do DR w interfejsie SPI, nie mam jeszcze nic podpiętego do SPI ale mam zamiar przetestować całość na modułach MMcc1100 i płytce ewaluacyjnej z STM32 na pokładzie (stm32-p107 z OLIMEXu)....
Witajcie, moją przygodę z STM32 zacząłem stosunkowo niedawno, praktycznie od samego początku staram się stworzyć "protokół" do bezawaryjnej komunikacji po USARcie, który wykorzystany będzie do transmisji danych z małego robota typu LineFollower. Nie mam większej wiedzy, ani doświadczenia z tej dziedziny. Stworzyłem trochę kodu na podstawie własnych...
Witam ponownie, udało się uruchomić transmisję ale jedynie nadawanie. Z odbiorem jest problem. Oto mój kod: Inicjacja SPI: [syntax=c]void SPI_Conf(void) { SPI1->CR1=0; SPI1->CR1 |= (SPI_CR1_BR_1|SPI_CR1_BR_0|SPI_CR1_MSTR)... SPI1->CR2 |= SPI_CR2_SSOE; SPI1->CR2 |= (SPI_CR2_TXDMAEN|SPI_CR2_RXDMAEN); }[/syntax] Inicjacja DMA: [syntax=c]void DMA_Conf(void)...
Witam, Widzę, że wywiązała się całkiem spora dyskusja i nie wiem do czego najpierw się odnieść. 1. Ten przypadek to maksymalne taktowanie timera i ciągłe wywoływanie przerwania, jednak nadal nie usprawiedliwia to czasu przełączania portu z ns do us. Nie zrobię teraz pomiarów więc nie podam dokładnych wyników ale przy wywoływaniu przerwania co 10us czas...
Witam Uczę się mikrokontrolerów stm32 Nie mogę poradzić sobie z konfiguracją SPI Na początek dla testu chciałem skonfigurować tak aby SPI1 (master) wysyłało dane do SPI2 (slave) Chodzi mi tylko o komunikacje jednostronną po wysłaniu danych przez SPI1 SPI2 odbiera "coś" ale jest to albo 0xFF albo jakieś inneśmieci. Flaga odebrania danych przez SPI2 jest...
stm32 flaga przerwać stm32 flaga licznik stm32 flaga przerwania
parametry hotbirda numery fabryczne części schemat wzmacniacza 1200w
reset pieca buderus finepix s5800
Połamany pilot Samsung, LG, Sony – brak reakcji, naprawa, zamienniki, aplikacje IR/BLE Błąd F06E2 w suszarce Whirlpool - przyczyny i rozwiązania