Wyłącz przerwanie od TXE skoro nie chcesz wysyłać. 4\/3!!
A więc działa. Gratulacje :) Docelowo chcę zrobić co innego: Muszę próbkować 4 kanały ADC1 w przemiataniu i wysyłać wartości po USART do komputera. Tylko, że kanał 4 DMA zajmuje się USART1 TX a kanał 1 ADC więc jeszcze nie mam pomysłu jak to połączyć. Kolizja DMA nie występuje, bo są różne kanały. Po prostu jeden poczeka na drugi. Jak najbardziej sensowne...
Problem mam następujący. Ustawiłem, żeby procesor odbierał ramki przez USARTA na przerwaniu i w tym przerwaniu sprawdzał czy z nią wszystko ok. Kod całęgo przerwania wygląda tak: void USART1_IRQHandler(void) { u8 ReceivedByte; extern ReceivingFrame; extern ReceivingHeader; extern MultinetRun BufStruct; extern RxIndex; extern TxIndex; extern...
Przecież wyraźnie widać, że STM odbiera 8 bitów, a w Realterm jest ustawione 7 bitów. Stąd różnica i obcięty najstarszy bit. Poza tym, dane się zgadzają. Format danych musi być ten sam. STM to pewnie 8N1, Realterm 7E1.
Cześć, Nie dawno zacząłem przygodę z STM32. I mam duży problem nad którym siedzę już parę dni. Chciałem stworzyć prostą komunikację z komputerem gdzie przez terminal odpowiednimi komendami będzie można gasić i zapalać diody i w drugą stronę przesyłać które diody są zapalone. nie wiem gdzie jest tu błąd więc Ustawienie GIPO void GPIO_Conf(void) { GPIO_InitTypeDef...
Próbuję pożenić template Freddiego (stm32_blink_led) z StdPeriph Ale to widziałeś? http://www.freddiechopin.info/pl/artykul... Ma ktoś pomysł co może być nie tak ? W skrypcie linkera należy ustawić rozmiar stosu dla przerwań - domyślnie jest zero, co zwykle źle się kończy. Ustawiłeś...
Prawdopodobnie nie włączyłeś przerwania odbioru danych w USART - bit RXNEIE w rejestrze CR1. A poza tym . oczekiwanie w procedurze obsługi przerwania to nie jest dobry pomysł, a właśnie to robisz. Masz poniżej tablicę do zainicjowania USART z przerwaniem odbioru w STM32F0 - adresy rejestrów i ich zawartości - wychodzi to sporo krócej niż przy użyciu...
Ja ostatnio rozwiązałem to tak do transmisji danych z 3 osiowego akcelerometru: [syntax=c] sprintf((char *)buforTx,"X%03iY%03iZ%03iE%1c%1c",Buffe... USART_ITConfig(USART1, USART_IT_TXE, ENABLE); //Przerwanie-transmisja [/syntax] Potem w programiku napisanym w C# wyłuskuję z ciągu interesujące mnie dane: http://www.youtube.com/watch?v=d-q6DuQH-...
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);...
kardynalny błąd -> oczekiwanie na co, na TC==1 ? Przeciez w notce katalogowej zalecają poczekać po zakonczeniu transmisji na TC. Poza tym nie odpowiedziałeś na moje pytanie, które tyczy się nie tylko USARTA: Chodzi mi o to czy jeśli program wejdzie w obsługę przerwania od konkretnego wyprowadzenia, to czy ponowna zmiana stanu tego samego wyprowadzenia...
Witam, Próbuje uruchomić komunikacje uart w przerwaniu, no i oczywiście mam problem z tym, że nie działa :o Wygląda na to, że przerwanie wogóle nie jest wołane. Czy ktoś z szanownych forumowiczów mógłby zerknąc w kod i podzielić się informacją dlaczego ten program nie ma szansy działać? USART_SendData(USART1, 'X') do main'a działa ok. Jak również użycie...
przerwanie: [syntax=c]void USART1_IRQHandler() { if(USART1_SR_RXNE_bb) { RXD1_buffer[RXD1_head] = USART1->DR; RXD1_head = (RXD1_head + 1); if (RXD1_head == RXD1_tail) { // tutaj możemy w jakiś wygodny dla nas sposób obsłużyć błąd spowodowany // próbą nadpisania danych w buforze, mogłoby dojść do sytuacji gdzie // nasz wąż zacząłby zjadać własny ogon...
Witam, Uruchomiłem komunikacje po porcie szeregowym za pomocą USART1. Wszystko niby działa, ale przy deklaracji BaudRate w programie np 57600, na terminalu (program REALTERM) komunikacja działa przy ustawieniu Baud: 115200. Ta sama sytuacja ma miejsce przy ustawieniach innych prędkości. Prędkość na terminalu musi być 2x większa niż ustawiona w programie...
Lepiej tak: void USART1_IRQHandler(void) { if (USART1->ISR & USART_ISR_TXE) { // jeśli zakończona wysyłka to coś... USART1->CR1 &= ~USART_CR1_TXEIE; // kasowanie flagi tak mi się wydaje że to to. } } A to jest źle każde przerwanie powinno wyglądać tak: [syntax=c] void XXXX_IRQHandler(void) { uint32_t isr; isr = XXX->ISR & XXX->IER; if( isr & flag)...
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);...
Witam! Fragmenty kodu: USART_InitStructure.USART_BaudRate = 57600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowCo... = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx...
Witam, Chcę wykorzystać w uK Uart4 do pracy w przerwaniu jednak wszystkie moje wysiłki jak na razie kończą się niepowodzeniem. Skonfigurowałem Uart4 do pracy z prędkością 9600/rx/tx włączyłem odpowiednio taktowanie i ustawiłem porty. Wysyłam znaki do uK i z uK wszystko idzie poprawnie dopóki nie ustawię przerwania UART4_IRQHandler. // włączenie portów...
Zaczynam zabawę z stm32. Chciałbym obsłużyć USART przez przerwania. Większość przykładów opiera się na stdperiph lib, chciałbym uniknąć stosowania tej biblioteki. Używam tylko nagłówka stm32f10x. Wydaje się że włączyłem przerwanie przez NVIC_EnableIRQ(USART1_IRQn) bit w rejestrze USART1->CR1 również został ustawiony i w zasadzie na tym utknąłem. Prosiłbym...
Na moje oko to nie ma prawa działać poprawnie. W tym kodzie praktycznie wszystko jest źle. Funkcja callback jest wołana po odebraniu danych do bufora, wcześniej przekazanego przy wywołaniu Receive. Ty nie bierzesz danych z bufora, do którego zapisała je obsługa przerwania z HAL, za to kolejno wielokrotnie odczytujesz RDR, nie wiedząc, co właściwie z...
Teraz mam: [syntax=cpp] void USART1_IRQHandler(void) { if(USART_GetITStatus(USART1,USART_IT_RXN... sie gdy bufor odbiorczy nie jest pusty { RxBuf[i++] = USART_ReceiveData(USART1); if(i>7){ USART1->CR1&=~(1<<2);// Odbiornik wylaczony USART1->CR1&=~(1<<5);//blok... przerwania odbioru i=0; j=0; for(l=0;l<=7;l++)...
A gdyby tak... [syntax=c]void USART1_IRQHandler(void) { u8 data; if(USART_GetITStatus(USART1,USART_IT_RXN... { USART_ClearITPendingBit(USART1,USART_IT_... data = (USART_ReceiveData(USART1) & 0x7F); USART1_Putc(data); } }[/syntax]
Nie mogę pokazać kodu ponieważ nie jestem jego właścicielem. USART2 wykorzystywany jest do komunikacji z SIM900, USART1 oraz TIM3 do Modbus RTU. Jakie ustawić priorytety od w/w źródeł przerwań ?
Witam, Mam problem z komunikacją STM32 z komputerem. Moja płytka to STM32L-Discovery [url=http://www.st.com/internet/evalboar... Chciałem napisać sobie najprostszy program do komunikacji z komputerem. Jak na razie nic nie działa. Pisałem program z pomocą książki "Mikroprocesory STM32 w praktyce" Krzysztofa Paprockiego. Musiałem...
Czasem Arduino do czegoś się przyda Dodano po 2 Możesz dać przykład takiej krytycznej czasowo operacji? Problem jest a raczej był związany z buforem nadawczym uarta. Mam funkcję: Blokuj tylko przerwania od UART.
Witam, Próbuje skomunikować się z modułem SIM800 przy pomocy STM32F100RBT6B. Mam skonfigurowane peryferia i wysyłam dane do modułu. Niestety problem pojawia się przy odbiorze, Odbieram tylko pierwszą literę i nie wiem dlaczego. Wykorzystuje przerwania do transmisji UART. Komunikacja z poziomu PC <-> SIM800 przebiega bez problemów, prosiłbym o...
Witam, Mam problem z komunikacją przez USART, będąc w debugu wykonując poniższą pętle krok po kroku (step into) wszystko jest ok, dane są wysyłane i odbierane. Natomiast po wciśnięciu run czy step over czasami zostanie wysłany i odebrany [Tx i Rx zwarte] jeden, maksymalnie trzy bajty(najczęściej liczba wysłanych jest o 1 większa) i hard fault, czasami...
Cześć, Od jakiegoś czasu borykam się z takim problemem: chciałbym odbierać po CANie ramki, wpisywać je w gotowy szablon i dalej wysyłać po USARCie na kompa w kodzie ASCII. Czegoś mi brakuje w tym kodzie i za każdą wskazówkę będę wdzięczny. Z góry dzięki:) To mój main: [syntax=c] unsigned char tx_uart[]=" ID: DL: F: T: DATA: ";//54 char ramka[55]; unsigned...
A po co w ogóle chcesz ręcznie wywoływać przerwanie od nadania? Wrzuć po prostu dane do TDR to się samo wywoła w odpowiednim momencie. [syntax=c]volatile unsigned charut0_mst=0, ut0_sta=0, ut0_end=0, ut0_buff[32]; //pomocnicze dla nadajnika/odbiornika rs //bufor kołowy nadajnika void rs_tx(uint8_t data) { TX_1;//led tx //ltx0=2; EnterCritical(); if(!ut0_mst)...
Witajcie. Piszę krótko. Używam STM32F407. Do trzech różnych USARTów mam podłączone cwa czujniki i jeden datalink Czujnik_1 - USART1 Czujnik_2 - UART5 Datalink - USART3 Z czujników zbierane są dane a datalink wysyła te dane, które zostały odebrane. Wszystko dzieje się na przerwaniach. Kiedy podpinam każdy z czujników oddzielnie i datalink'a, wszystko...
Witam Mam następujący problem przy płytce STM32F0Discovery. Celem programu jest na poziomie obsługi przerwania ustawienie globalnej zmiennej, a następnie po powrocie do maina sprawdzenie zmiennej i wykonanie instrukcji. Kod pliku main.c [syntax=c] #include "stm32f0xx.h" #include "setup.h" volatile bool new_data = false; int main (void){ setup(); while(1){...
Jedno mnie dziwi - nigdy nie miałem takich problemów. To, że timery czy inne peryferia sobie pracują, gdy rdzeń jest halt to nie powinno nikomu przeszkadzać, skoro stepowany rdzen w ogóle nie skacze pod wektory ISRów...? Gdy używam Ride7 to nie mam tego problemu, ale gdy przekroczyłem limit 32kB przesiadłem się na Eclipse+OpenOCD. No i niestety w trakcie...
Podpiąłem się oscyloskopem pod linię UARTU - mikrokontroler <-> modem i na TX (z punktu widzenia mikrokontrolera) mam w ramce dokładnie AT+\n\r czyli poprawnie wysłaną komendę AT, natomiast na lini RX mam w ramce "OK". Czyli mikrokontroler wysyłA poprawnie ale nie "odbija" w dalszym ciągu tego "OK" na uart6. HAL_GPIO_TogglePin jet wywoływana...
Witam, W taki sposób deklaruje komunikację z USART: [syntax=c]RCC_AHBPeriphClockCmd(RCC_AHBP... ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_US... ENABLE); USART1_Configuration(); NVIC_EnableIRQ (USART1_IRQn); void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Connect PA9 to USART1_Tx */ GPIO_PinAFConfig(GPIOA, GPIO_PinSource9,...
Witam, Próbowałem na podstawie książki "Mikokontrolery stm32 w praktyce" uruchomić na STM32F107 transmisję z wykorzystaniem USART-a. Połączyłem Rx i Tx ze sobą i próbuję wysyłać a następnie odczytywać wysłane dane. Poniżej jest mój kod: int main(void) { SetSysClockTo72(); EnablePerypherialClocks(); ConfigureNVIC();...
A jak się ma do tego sscanf()? Ok, to sporo pomogło, teraz jednak mam kolejny problem. To obsługuje mi przerwanie: [syntax=c]void USART1_IRQHandler(void) { //odbiór danych if((USART1->ISR & USART_ISR_RXNE) != RESET) { uint8_t data = USART1->RDR; gpsread[wpp] = data; if(wpp++ >= 128) wp = 0; } }[/syntax] A tu jest funkcja, która wczytuje...
Witam, walczę z UART i natrafiłem na przeszkodę w postaci odbioru danych (wysyłanie działa). Analizując mój kod przynajmniej teoretycznie powinien działać, ale w praktyce tego nie widać, więc proszę o zdjęcie mi klapek z oczu i wytknięcia błędów. Zamieszczam kod, który ma za zadanie sterowanie diodą w zależności od odebranego rozkazu. Konfiguracja UART...
Witam ponownie, zacząłem niedawno zabawę z CANem, a raczej powinienem napisać, że chciałem zacząć. Jako, że ostatnio nie mam dostępu do auta postanowiłem pogadac z interfejsem ELM327. Tak więc podłączyłem CANL z CANL i CANH z CANH między płytką a interfejsem. Idea jest taka: wysyłam komendy do interfejsu przez usart1 a on wysyła do mnie odpowiedzi po...
Witam, Mam problem z uruchomieniem USARTa na mikrokontrolerze STM32L100RC. Kod pisałem w oparciu do Reference Manual, oraz poradnik dostępny na tym forum. Czy jest w stanie wskazać mi błąd, bo mi już brakuje pomysłów. Kod: [syntax=c] //Konfiguracja komunikacji po USART1 void USART_Conf() { uint16_t divider; //Odblokowanie zegara dla USART1 RCC->APB2ENR...
Witajcie, dziękuję za wszystkie posty. Większość okazała się bardzo pomocna. Swoją modyfikację chciałam zacząć od najprostszej zmiany, tj. zmiany konfiguracji modułu bluetooth poprzez komendy AT. Najpierw jednak chciałam przetestować odbiór danych z terminala. Znalazłam program i nieco go zmodyfikowałam, którego celem jest odebranie wpisanej danej w...
Witam, cały dzień męczę się z obsługą przerwania od odbioru danych w STM32103RB. Korzystam z biblioteki HAL. Po całym dniu dalej nie wiem jak to ma wyglądać, dostępne example robione są w STM32CubeMX, a ja z tego nie korzystam. W dokumentacji chyba nie potrafię się poruszać bo nie wyiskałem z niej co po kolei trzeba wywoływać aby obsłużyć to przerwanie....
Witam, Mam pytanie związane z wyzwalaniem mechanizmu DMA ale w trybie NORMAL. Tak, wiem - mógłbym skorzystać z trybu circular, ale niestety... projektowanie przeze mnie urządzenie musi zbierać próbki za pomocą wspomnianego DMA tylko w przypadku wystąpienia przerwania (nie moge analizować losowych próbek, rozpoczęcie próbkowania musi rozpocząć sie w...
Witam, Mam urządzenie z którym chciałbym się skomunikować. Za pomocą Realterm wysyłam do urządzenia 3 znaki: /#1 i urządzenie odpowiada całą paczką danych. Przepięcie linii USB/RS232TTL do mikrokontrolera sprawiła mi jak zwykle kłopot. A mianowicie wysyłam do urządzenia te 3 znaki z STM32 natomiast urządzenie nie odpowiada.... Może mi ktoś powie jak...
Witam wszystkich. Uzywam Eclipse + OpenOCD (0.9.0) + GCC. Do tej pory używałem STM32F103 (Cortex-M3), a teraz przesiadłem się na STM32F373 (Cortex-M4). Wziąłem ze starego programu skrypt linkera, startup, vectors.c i posklejałem do kupy odpowiednio je modyfikując. Program generalnie odpala się, mogę sterować GPIO. Następnie spróbowałem uruchomić SysTicka....
Zrobiłem to bez przerwań. Program może nie działa idealnie (mam problemy z odbiorem znaków - jutro na tym się skupię), ale udaje mi się wysyłać at komendy do modułu (np. zmienić nazwę modułu, czy pin) oraz przesyłać stringi przez bluetooth na laptopa. Poniżej funkcja wysyłająca i odbierająca pojedynczy znak (w tym wypadku zrezygnowałem z bibliotek ST...
mam ustawione przerwanie zewnętrzne ustawione na wyzwalanie zboczem opadającym i narastającym w funkcji obsługi przewania zapisuję sobie do bufora: void EXTI0_IRQHandler(void) { //Check if EXTI_Line0 is asserted if(EXTI_GetITStatus(EXTI_Line0... != RESET) { Buffer[iWriteIdx] = 'I'; GoToNextElement(&iWriteIdx);...
Do USB podłączam konwerter FT232 następnie przez max232 do mikrokontrolera. Czyli nie ma prawa działać, bo z FT232 wychodzi TTL, procek akceptuje TTL, a ty po drodze wstawiasz konwerter na RS-232 - po co? Po wpisaniu linii : Kod C - Nic się nie wiesza - po prostu wchodzi w przerwanie. A czy ty w ogóle je masz obsłużone? Jeśli (wątpię, nie znalazłem...
Witam, piszę program na STM32 F100RB(Discovery), który ma za zadanie dane odebrane od GPS(USART2) wysłać przez moduł radiowy(USART1). Nie wiem dlaczego, ale po przyjściu przerwania od odbioru USART2 program ucieka do przerwania HardFault_Handler(void) . W debuggerze całość działa poprawnie, natomiast w trybie "run" problem ten sie pojawia. Dodatkowo...
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ę....
tplewa: Widziałeś przykład od STM? Tam nie ma ani jednego rozkazu przesłania czegokolwiek przez USB. Są włączone przerwania od USART1 i USB, są instrukcje inicjalizacji i to wszystko. Nie jarze jak to w ogóle ma działać? Z tego co wywnioskowałem, to ten przykład pomimo tego, że nazywa się virtual com, po prostu służy jako kowerter COM -> USB. Bo niby...
Mikrokontroler STM32 F030CC Konfigurując timer za pomocą HAL'a wszystko działa, kod poniżej w środowisku AC6 działa natomiast w TrueStudio wchodzi w pętlę nieskończoną mi w pliku startup_stm32f030xc.s Dodałem znaczniki syntax. Proszę ich używać, ponieważ kolorowanie składni ułatwia czytanie i analizę kodu.
Witam. Skonfigurowałem timer 3 do automatycznego wyzwalania przetwornika ADC, ten z kolei obsługiwany jest przez DMA. Timer3 wyzwalany jest co sekundę i podczas przepełnienia generowane jest przerwanie w którym wysyłam paczkę UARTEM -> DMA . Wszystko chodzi dobrze, poza nadawaniem. W debugerze prawie cały czas program siedzi w obsłudze przerwania...
Problem mam chyba typowy. Oprogramowuje interfejs komunikacyjny. Jednym z poleceń tego interfejsu jest reset. Sprawa ma się oczywiscie odbywać tak, ze przychodzi ramka z poleceniem resetu, odsyłana jest ramka z ACK i następuje zerowanie. USART działa na przerwaniach. Jak wykryć kiedy ostatni bajt ramki opuścił bufor nadawczy? Teraz mam taki kod: USART_ITConfig(USART1,...
W obecnej postaci po włączeniu przerwania nadawania jest ono natychmiast zgłaszane, procedura przerwania wysyła bajt, co powoduje wyzerowanie znacznika TXE, więc dioda nie ma szans się zaświecić. No to ma sens. Więc sprawdzenie diodom w tym punkcie nie ma sensu. Ale postawiłem breakpointa w procedurze obsługi przerwania i ani razu tam nie wszedł. Innymi...
Dane nadaję w postaci paczki, kod ASCII litery P, potem 3 bajty prędkości, po czym bajt z kodem litery K. W programie testowałem również czy nadając daną wartość odczytuję ją poprawnie, dla każdego bajtu tak było. Wydaje mi się, że to nie tu tkwi problem, jednak mimo to załączam kod obsługi przerwania od UART1: [syntax=cpp] void USART1_IRQHandler(void)...
Nie chodzi mi o drgania. Potrzebuję zrobić najprostszą rzecz - po wciśnięciu na raz dwóch przycisków powinno się coś zrobić, co jest napisane w warunku, np. zapalić ma się dioda, wysłać potwierdzenie po USARTcie. Nie pointrzebuję żadnych przerwań. GPIO na przyciskach mam ustawione teraz na IN_FLOATING, ale jak zmienię na IPU albo IPD, to się dzieje...
Witam ponownie. Mam jeszcze pytanie. Ponieważ chciałem dodać obsługę: ETH_WKUP_IRQHandler i ETH_IRQn. Więc w pliku vaectors.c dodałem takie linijki: [syntax=c] // ETH Ethernet global Interrupt void ETH_IRQHandler(void) __attribute__ ((interrupt, weak, alias("__Default_Handler"))); // ETH_WKUP Ethernet Wakeup through EXTI line Interrupt void ETH_WKUP_IRQHandler(void)...
Witam Pracuje obecnie nad projektem odbiornika sygnały DMX512. Sprawa wygląda następująco: -Sygnał danych czytany jest z urządzenia zwane Kwamatik USB2DMX, obsługiwane przez program Q Light Controller. „Po drodze” do uC trafia jeszcze na driver RS485 a potem na PIN RX UART1 oraz PIN PB9 skonfigurowanego jako wejścia dla Timera 11 pracującego...
Cześć, Projekt zaraz będę konfigurował od początku. Fakt, podałem za mało danych, wybaczcie, skrajna nerwica mnie na to wzięła. Od początku: Używam SW4STM32, ale chciałbym od tego odejść mocno, bo za dużo automatów i za mało szczegółów, może dlatego, że nie potrafię tego wszystkiego ogarnąć. Kompilatora używałem poprzez naciśnięcie "build". W ustawieniach...
Witam. Jestem zupełnie nowy w programowaniu STM32, korzystam z zestawu http://kamami.pl/index.php?ukey=product&... i uczę się według książki weń zawartej. Próbuję nawiązać komunikację między zestawem i komputerem z użyciem flag oraz wymienić przykładowe dane, lecz na razie brak sukcesu. Terminal (korzystam z aplikacji Terminal autorstwa...
Witam, Bazuje na projekcie ze strony Freddie Chopin dla stma F4 z dodanymi bibliotekami STM32F4xx_StdPeriph_Driver. Zdefiniowałem sobie konfigurację timer'a w następujący sposób: [syntax=c]void Timers_Config(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TI... ENABLE); NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = TIM1_CC_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptio...
W koncu sie zebralem i narysowalem schemat ( patrz zalacznik). Wypatrzylem u siebie 3 bledy: 1) pin GND od gniazda SIM nie podlaczony 2) pin 19 V_MAIN od ME3000 nie podlaczony (ale podlaczone pozostale, piny 20 i 21 V_MAIN) 3) /RESET od ME3000 podlaczony do bazy BJT NPN a nie do kolektora. Te bledy poprawilem i teraz modem sie juz wcale nie odzywa,...
Witam ponownie, mam teraz niezwykłą zagadkę, tak więc posklejałem kawałek kodu który obsługuje USART + Ethernet - program polega jedynie na tym że jak odbierze jakąkolwiek ramkę Ethernetową to powiadomi o niej i wyśle przez RS-232 MAC address nadawcy i odbiorycy (przy czym tutaj kwestia estetyczna jest niedopracowana) - tak czy inaczej kod ten przetestowałem...
Dzięki freedi miałeś racje. Patrzyłem na kolejność przerwań w tabeli f0 ale nie na adresy. Aby zapełnić luki i poprzesuwać adresy dodałem brakujące reserved handler Dodano po 11 Teraz tylko muszę rozwiązać skąd mi przerwań multum nadchodzi i w nierównych odstępach od timera. Bo pwm wyprowadzone jest na jedną diodę a przerwanie zmienia stan innej diody....
Od jakiegoś czasu zmagam się z problemem wysłania danych przez UART co określone chwile czasowe. Dokładnie chodzi o to iż jeśli wywołuje funkcje: void uart1WriteByte (t_int8u byte) { while (!(USART1->SR & USART_FLAG_TXE)); USART1->DR = byte; } w pętli głównej programu while(1) { uart1WriteByte(0x77);...
Witam, Mam problem z baudrate'm na płytce STM32F4-discovery. Mianowicie jestem pewien, że konfiguracja zegarów taktujących jest w porządku jednak terminal wywala mi tzw. "krzaki". Poniżej zamieszczam kod oraz screen z HTerm'a. Mam na celu wysyłać znak kiedy pojawia się przerwanie od TIM2, w tym samym czasie przełączam stan diody, co na płytce działa...
Pewnie, najlepiej klepać wszystko od zera, bo po co korzystać z bibliotek, w końcu "prawdziwy programista" uwielbia przekopywać się przez setki stron manuali, datasheetów i utrudniać sobie życię. Nie przesadzaj, jak napisał kolega wyżej, sam plik stm32f10x.h wystarcza, nie musisz wklepywać przecież dziesięciu tysięcy adresów rejestrów od nowa. A zapis...
Witam! Zacznę od tego, że jestem raczej laikiem z programowania STM-ów. Ale nie jestem też leniem, że znajduję gotowca, kopiuję i liczę na to, że będzie działać. A jak nie działa to lipa. Staram się to zrozumieć i znaleźć problem. ;) Niestety brak wiedzy sprawił, że wymiękłem i pomyślałem, żeby zapytać na forum. Co chcę zrobić: Podłączam bluetootha...
Niestety zmiana preemption priority nie rozwiązała jeszcze mi problemu. Dalej nie ma wywłaszczania TIM1_CC_IRQn przez przerwanie Systick() lub innego zdefiniowanego timer-a np. TIM2 o wyższym priorytecie preemption. Chociaż normalnie program wchodzi do obsługi wszystkich przerwań. Myślę , że musiałem przeoczyć coś jeszcze ale niestety nie wiem dokładnie...
Jak włączyć przerwania USART1 w STM32F100RB, bo typowe: [syntax=c] NVIC_EnableIRQ(USART1_IRQn); [/syntax] nie jest przyjmowane. Przerwanie od RXNE.
Witam. Chciałem zrobić ekstremalnie uproszczonego modbusa RTU Slave na STM32. Tz w przerwaniu od RX jeśli pojawi się adres mojego urządzenia (Slave) to odrazu wyślij ramkę w postaci: adres,funkcja,ilosc_danych,dane,CRC16. Czy z punktu widzenia modbusa stanowi jakiś problem to uproszczenie ? Dodano po 24 Działa :) Dodano po 33 Tylko pytanie dlaczego...
Witam eknoem2 przeczytaj to: http://www.freertos.org/RTOS-Cortex-M3-M... i daj znać czy problemy się skończyły.... chyba że to już czytałeś lub dodaj: [syntax=c]NVIC_SetPriorityGrouping(3); // wlacz grupe4 to robię tylko raz w main.c[/syntax] Jak w FreeRTOSConfig.h masz tak: [syntax=c]#define configKERNEL_INTERRUPT_PRIORITY 255 #define configMAX_SYSCALL_INTERRUPT_PRIORITY...
Jakieś dziwne zjawisko. Wszystko działało tz. w pętli pytałem urządzenie po modbusie a teraz jakieś dziwnie zachowanie . Tak jakby zawieszony procesor nic się nie wykonuje w pętli . Co może być przyczyną ? Całość poniżej : [syntax=c] /************************* * stm32 uart main.c *************************/ #include "stm32f10x.h" #include "stm32f10x_flash.h"...
Witam, Chcę zrobić coś takiego: strumień danych z RX kanałów USART1 oraz USART2 ma być połączony w jeden strumień i przesyłany na bierząco kanałem USART3. Chciałem to zrobić na przerwaniach i czymś w rodzaju DIY bufora cyklicznego - USARTY w przerwaniach ładują do jednego bufora i inkrementują wskaźnik, natomiast w nieskończonej pętli w main.c jest...
Witam. Od pewnego czasu walczę z chińską płytką (blue-pill) z STM32F103 na pokładzie i z tego co już się nauczyłem oraz co sobie w ReferenceManualu wyczytałem to wiem, że AVR'y odłożę na półkę:) Moja nauka jest w stylu 'bare-metal' wykorzystuję jedynie pliki nagłówkowe stm32f103xb.h i kilka od CMSIS które można wydobyć z STM'owych bibliotek, więc ich...
Witam Mam dosyć spory problem z parsowaniem tekstu, mianowicie użytkownik może w terminalu wpisać sobie taką o to składnie. Silnik 3,5;Silnik 5,25;Silnika 7,45; Ma to podzielić na "Silnik 3,5" , "Silnika 5,25" itp; Robię to w następujący sposób: -gdy z USARTa przychodzi ciąg znaków zakończonych znakiem '\0' wychodzi do przerwania gdzie tworzona jest...
Patrzyłem zbyt wąsko na problem - znowu (!) coś dzieje się z transmisją przez USART :/ Jeśli w pętli while(1) nie używam "żądania" wysłania na terminal "w" w celu przesłania wartości mierzonej przez ADC - program działa. Wraz z dopisaniem linijki odpowiedzialnej za sprawdzanie co pojawia się w terminalu, program działa tylko w przypadku (A) ! (czyli...
Napisałem program obsługujący komunikację RS232 dla płytki STM32 P103: - dokumentacja płytki https://www.olimex.com/dev/pdf/ARM/ST/ST... - schemat https://www.olimex.com/dev/images/ARM/ST... Niestety łącząc docelowo przez konwerter RS232 -> RS485 i podłączając do serwomechanizmu RS28 dynamixel podłączyłem raz zasilanie 15V,...
[syntax=armasm]g_pfnVectors: .word _estack .word Reset_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler .word 0 .word 0 .word 0 .word 0 .word SVC_Handler .word DebugMon_Handler .word 0 .word PendSV_Handler .word SysTick_Handler /* External Interrupts */ .word WWDG_IRQHandler /*...
Witam, Programuje STM32F407 przy pomocy HAL ( STM32CubeMX ) i Keil uVision 5 . Stworzyłem komunikacje przez UART HAL_UART_RxCpltCallback wykona mi się dopiero po przyjściu 6 znaków Komunikacja UART potrzebna jest mi do implementacji interfejsu MODBUS. W interfejsie MODBUS jak czytam z pdfa "http://modbus.org/docs/Modbus_Applicati...
Pojawiają się wciąż pewne problemy z WFI, mianowicie zdarzą się, iż procesor tak jak by pomija tą instrukcję i kontynuuje pracę. [syntax=c]__disable_irq(); while((USART1->ISR & USART_ISR_TC) != USART_ISR_TC); while(GPIOC->IDR&GPIO_IDR_ID13) // if WU2 pin is set { uprintf("Pending..."); while((USART1->ISR & USART_ISR_TC) != USART_ISR_TC); } // if WKUP...
Korzystam z przykładowych projektów dostarczonych przez ST w programie IAR. Po lewej stronie okna programu znajduje się okienko z drzewem folderów i pośród nich znajdują się dwa pliki ze 'startup' w nazwie: startup_stm32f10x_md.o i startup_stm32f10x_md.s (zawartość plików znajduje się poniżej). To o te pliki chodziło? Zawartość dość znacznie się różni....
Hey, Dzięki za wskazówkę. Wiem, że temat był założony prawie 3 tygodnie temu, ale wcześniej nie miałem czasu odpisać. Problem był ciut bardziej złożony: Nadajnik (STM32F4) nadawał w trybie 9bit, kiedy pisałem ten kod, znalazłem notkę, że te 9 bit to 8bit danych + bit parzystości, jednak w odbiorniku STM32F1 powodowało to błędy parzystości. Oczywiście...
składanie zmiennej przez |= miało pokazać co musiałbym zrobić aby uzyskać podobny kod wynikowy do tego co wygenerował kompilator. I ja tak nie piszę lecz takie coś na podstawie prostej operacji wygenerował kompilator. Tak wygląda mój kod bo widzę, iż ktoś sięciągle czepia przykładu jak mniej więcej wyglądać musiałby kod źródłowy aby uzyskać taki dziwny...
Witam, poniższy kod przedstawia inicjalizację USARTA1 i USARTA2: Dodano po 57 OK kod był poprawny, po prostu zlącze rx/dx z ktorego korzystałem nie zostało zwarte na płytce NULCEO. Cenna informacja dla potomnych należy zewrzeć SB63 SB62 oraz wylutować rezystory na SB13 i SB14
Witam! Nie mogę dojść do tego co się dzieje. W zamierzeniu program powinien czekać na ustalone znaki z USARTa i odpowiedzieć kilkunastoma znakami tekstu. Objaw jest taki, że po otrzymaniu 1 znaku odpowiada trzema prawidłowymi znakami a potem siedzi w przerwaniu z którego nie może się wykaraskać (tzn. nie robi nic innego). Zdarzyło mi się też zaliczyć...
Witam Napotkałem się z problemem jak w temacie a dokładniej. Jeżeli chce uruchomić program przez przycisk debug albo wgrać go przyciskiem download w keil,u to program startuje prawidłowo. W momencie kiedy wyłączę i włączę ponownie zasilanie wszystko startuje prawidłowo poza uart em. tzn przerwanie do niego nie jest wywoływane. Testowałem na kilku egzemplarzach...
stm32 usart1 stm32 usart1 przerwać stm32 przerwanie
manta ekran monitor zmiana rozdzielczosci liniowy regulator napięcia projekt
klucz udarowy uszkodzony gniazdka elektryczne
Różnice między wzmacniaczami OP07 a OP07CDR Najlepsze taczki akumulatorowe: Makita, PowerPac, Scheppach, Greenworks