Jest o tym oczywiście wzmianka w helpie w temacie dotyczącym PORT D. The UCR register will by default not set bits 3 and 4 that enable the TXD and RXD pins for RS-232 communication. It is however reported that this not works for all chips. In this case you must clear the bits in the UCR register with the following statements: RESET UCR.3 RESET UCR.4...
ooooo, teraz to już tego całkiem nie rozumiem.... Dodałem coś takiego w procedurze przerwania: Dodano po 1 ok, pewnie SPL coś robi dziwnego... Obiecuje że jak tylko się poduczę to się jej pozbędę :D
O ile nie wyprogramowałeś funkcji RESET - przytrzymać RESET podczas nawiązywania połączenia z ST-link przez 1..2 sekundy. Najpierw jednak sprawdć częstotliwość zegara ST-Link i zmniejsz do 1..2 MHz. Przy 10 MHZ szanse na połączenie są prawie żadne. Seria G nie nawiązuje połączenia z debuggerem po uśpieniu - na to trzeba uważać.
Zakładając, że dobrze ustawiasz zegary i że funkcja od wysyłania której używasz automatycznie czeka na pusty bufor to powinno działać. No nie dokońca, nic tam nie czeka. Daj: while(USART_GetFlagStatus(USART3... USART_FLAG_TC) == RESET); USART_SendData(USART3, Dane); No i jeszcze: RCC_APB2PeriphClockCmd(RCC_APB2Perip...
Zgadzam się z uwagami. Ale takie są poczatki.
Pracowałem wówczas na ATmega162. Okazało się, że pewna seria '162 miała ten sam problem. Układ resetował się przy komunikacji UART. Temat zamykam.
Prawdopodobnie BlueDraco ma rację i przyczyną jest ciągły reset procka. Najlepiej pokaż schemat swojego układu ale bez uproszczeń tylko dokładnie zgodny z fizycznym układem. Czy układ RESETu masz podciągnięty do zasilania?
Witam, napisałem program korzystający z USART-u. Zmiana stanu na wybranych wejściach uC ma powodować wysyłanie trzybajtowych pakietów danych. Wysyłanie odbywa się za pomocą przerwania USART_UDRE_vect. I oto dziwna rzecz: Pomimo, iż w SREG ustawiony jest najstarszy bit, w UCSRA sprzęt wystawia flagę pustego bufora, czyli UDRE jest ustawiony i wreszcie...
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);...
Witam, skorzystałem z tematu i chciałem spróbować kod kolegi powyżej zaimplementować u siebie. Procesor STM32f051 na płytce Discovery, rejestry w F1 i F0 co do usartu są prawie takie same, wystarczyło zmienić nazwy na odpowiadające w F0, przenosiłem już nie raz USART z F1 na F0 i nie trzeba było wielu zabiegów. Skonfigurowałem dodatkowo piny USART2...
Początek zabawy, i bliski jestem stwierdzenia, że to nie dla mnie. A więc, albo ktoś podpowie, albo pogryzę tego procka. Problem jest następujący: Po przerwaniu, program zapala leda i wychodzi z pętli WHILE (zaczyna main()) czyli mój LED zgaszony. Lub bez przerwania, prog. wchodzi do petli WHILE opuszcza ją i zaczyna od main(). czyli na terminalu widzę...
Dziękuje za informacje dotyczace tej procedurki. Odnosnie tego drugiego problemu "wyswielenia krzakow na wyswietlaczu", wiem o co chodzi. Otoz mam programator AVR z tego schematu: http://obrazki.elektroda.net/44_11678412... AVR ------------------> LPT DSUB 28 Vcc (7)--------------->Połączone razem piny 2,3,4,5 Reset (1)------------>Pin 7 SCK...
Na zewnętrznym kwarcu 16MHz. Reset jest podpięty przez rezystor 10kOhm do Vcc. :?:
Sprawdż do jakiego portu-pinu podłączyłeś magistralę 1Wire. Jeżeli używasz portu alternatywnego RXD TXD warto wyzerować programowo bity UART Reset UCR.3 Reset UCR.4 Miałem kiedyś podobny problem W rejestrze UCR (UART Control Register) bity 3 i 4 nie są standardowo ustawiane, co oznacza że końcówki TXD i RXD nie są używane przez UART. Nie jest to jednak...
OK. Ja też jestem w pracy i nie zawsze mogę o tej porze coś robić. Ale dalej: Do testowego używania UARTA przyda się "podmienienie" standardowej obsługi funkcji printf na taką, która wysyła dane przez UARTA do naszej Windowsowej konsoli. Możesz to wpisac standardowo przed obsługą assert_failed() /** * (at)brief Retargets the C library printf function...
Witam. Mam problem z UART-em. Bo po ustawieniu flagi transmisji, sprawdzam tą flagę i nie jest ustawiona. Kod: [syntax=c]int USART1_TxBuf(volatile char *buffer, int nbytes) { int i; if(nbytes>TXBUFSIZE) return 0; while(TxIndex != 0) ; for (i = 0; i < nbytes; i++) { TxBuf[i] = *buffer++; } USART_ITConfig(USART1, USART_IT_TXE, ENABLE); if(USART_GetITStatus(USART1,...
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 przypadku 8-pinowego (SOP8) PY32F002AL15S6TU, jak sflashować to urządzenie? używając J-link, USART RX/TX i PA14? Ten model nie ma trybu boot0, tylko przycisk reset/nrst?
Witam, Tak się składa, że mam kit STM32F4Discovery i mogłem na nim przetestować to DMA, z którym Grzegorz ma problem. Udało mi się uruchomić transmisję. Sprawdziłem to dla UART2 i UART3. Działa też na wszystkich kanałach i strumieniach, jakie są przypisane do poszczególnych UARTów. Problemem chyba było włączanie i wyłączanie wszystkiego w odpowiedniej...
[syntax=c]#include "common.h" #include "ymodem.h" #include "stm32f10x.h" extern pFunction Jump_To_Application; extern uint32_t JumpAddress; static void IAP_Init(void); void My_Delay(void); uint8_t tab_128[128]; int32_t lenght = 2, tmp, a = 0; uint16_t receive = 0; USART_InitTypeDef USART_InitStructure; USART_ClockInitTypeDef USART_ClockInitStructure;...
Prawie by działało, tylko zapisując to tak pokrętnie musisz użyć nawiasów z powodu drobnego dziwactwa w priorytetach operatorów w C, no i najpierw czytający kod musiałby zgadnąć, co to jest (uint32_t)RESET. Byłoby to zbędne, gdybyś napisał po prostu: while (ADC1->CR2 & ADC_CR2_CAL); - bez dziwnych porównań z tajemniczą stałą RESET.
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...
Wysłanie danych ja ma tak: [syntax=c]USART_SendData( USART1, dane ); while( USART_GetFlagStatus( USART1, USART_FLAG_TC ) == RESET );[/syntax] A odbiór danych zrób sobie z przerwaniu.
[syntax=c] while (USART_GetFlagStatus (USART6,USART_FLAG_TXE) == RESET){} USART_SendData (USART6,a++); [/syntax]
No mam niby tak: [syntax=c]void USART1_IRQHandler (void) { u16 c; if (SET == USART_GetFlagStatus (USART1, USART_FLAG_RXNE)) { c = USART_ReceiveData (USART1); USART_SendData (USART1, c); send_string("njbhnkjbhbgv"); while (RESET == USART_GetFlagStatus (USART1, USART_FLAG_TC)); } } void NVIC_Configuration (void) { NVIC_PriorityGroupConfig (NVIC_PriorityGroup_0);...
Ach no racja, co ja też piszę. Bo mam taką płytkę, która również ma stm32f103c8, ale znowu nie ma wyprowadzonego resetu i szukam jakiegoś sposobu, żeby ją wygodnie flashować. Oczywiście swd nie jest wyprowadzony również, zostaje jeszcze usart, chociaż najbardziej wygodny byłbym ten mass storage. A zamiast reset np. stan wysoki lub niski, na którymś...
Siemka. Mam mikrokontroler STM32F072RB oraz moduł Wi-Fi ESP-01. Próbuję przesyłać UARTem do modułu Wi-Fi wszystko, co UARTem otrzyma mikrokontroler od PC'ta połączonego z nim po USB. Byłem pewien, że zadziała to od kopa, a jednak nie. Przy samej inicjalizacji, układ otrzymuje znak '\0' od modułu Wi-Fi, a później już nic. Żadne komendy AT nie wywołują...
Witam, Potrzebuję odebrać dane, które wysyłam za pomocą aplikacji bez bluetooth do uC STM32F4. Dane chcę odbierać przy pomocy przerwania usart. Dane z aplikacji wysyłane są w następującej postaci: Lx , x - liczba całkowita z zakresu <0;100>, np. L25, L100. Nie do końca wiem jak pobrać tą wartość chodzi mi w tym przykładzie o liczbę 25 , chcę ją...
Widzę że dosyć cich. dorzucam jeszcze skrypt linkera i startup. nawet mam brakepointa w void Reset_Handler(void) i w niego nie wchodzi. ale na brakepointa w Default_Handler reaguje. Zanaczam że jak wgram program na mikrokontlorer to działa bez zarzutu... [syntax=c]/* Procedura startowa dla STM32 connectivity line devices */ /* NastÄ™pujÄ…ce...
Witam, Mam prosty ukad testowy podłączony do atmegi16 z kwarcem 16MHz. Układ wygląda tak że do naruszenie odpowiednich pinów portu C powoduje zadziałanie odpowiedniego pinu Portu D. W pewnym momencie na samym początku kodu zaraz po konfiguracji portów wstawiłem wpis UCR=0 Chciałem w ten sposób wyzerować rejestr UART'a. Jednakże w po tym wpisie przestały...
Cześć! Mam problem z usartem. Nie wiem gdzie mam błąd... Wysyła tylko "S" zamiast całe "SIEMA". Byłbym wdzięczny za pomoc. Z góry dzięki! [syntax=c]#include "stm32f4xx.h" #include "misc.h" #define READ_BUFFER_LEN 64 #define WRITE_BUFFER_LEN 256 char readBuffer[READ_BUFFER_LEN]; char writeBuffer[WRITE_BUFFER_LEN]; short rBufferEmptyIndex = 0; short rBufferBusyIndex...
Witam, jestem w trakcie nauki programowania uC. Zakupiłem płytkę STM32F3Discovery. Próbuje wysłać na początek jeden znak na COM-a. Jednak niestety coś idzie nie tak :( Używam przejściówki USART-USB. Dodam, że konfiguracja musi być OK, bo gdy korzystam z biblioteki HAL to wszystko działa. Chce bawić się StdPeriph, bo mam wrażenie, że tutaj będę wstanie...
Masz wewnątrz procka kontroler USB oraz Usart. Kod ich wirtualnego coma według mnie pozwala na konwersje od wejścia USART do wyjścia USB bo Przerwania: [syntax=c_loadrunner]void USB_LP_CAN1_RX0_IRQHandler(void) { USB_Istr(); } void USART1_IRQHandler(void) { if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { /* Send the received data to the PC...
Dobrze dodałem w przerwaniu oczekiwanie na zakończenie transmisji while(!(USART1->SR & USART_FLAG_TC)); Kod: [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);//.....
Możesz tą samą diodę wpiąć na inny port. Jak się zapali to wiadomo będzie, że tylko WDT mógł ją włączyć. Bardzo sensowne jest ta opcja, tylko źle ją interpretujesz. Nie natychmiast, tylko po przerwaniu. W instrukcji jest napisane, że najpierw następuje przerwanie a później reset. Czyli ta opcja wywołuje przerwanie, wykonuje program zawarty w przerwaniu,...
Może przesłuch z RXD na RESET? Ja jednak stawiam na jakiś gruby błąd w kodzie.
Witam ponownie Troche czasu minelo i zdazylem bardziej doglebnie poznac ten zestaw ref. jak i sam procesor STM32. Niestety wraz z rozrastaniem sie projektu powracaja stare bledy i tak: W trybie SC USART nie generuje mi przerwan dla kazdego znaku, tzn.: Przy wysylaniu przez karte ATR w stanie RSTIN LOW moj soft dostaje tylko jeden bajt (pierwszy z ATR)...
To działa: [syntax=c] #define Port_USART3 USART3 #define Port_USART3_CLK RCC_APB1Periph_USART3 #define Port_USART3_TX_PIN GPIO_Pin_10 #define Port_USART3_TX_GPIO_PORT GPIOB #define Port_USART3_TX_GPIO_CLK RCC_AHB1Periph_GPIOB #define Port_USART3_TX_SOURCE GPIO_PinSource10 #define Port_USART3_TX_AF GPIO_AF_USART3 #define Port_USART3_RX_PIN GPIO_Pin_11...
1) Brak deklaracji CONFIG COM w obu programach 2) W odbiorniku wyrzuć TOGGLE i wstaw RESET bo za chwilę napiszesz czemu led się ciągle świeci ale przyciemniony 3) W odbiorniku wykorzystaj ISCHARWAITING i INKEY. Odbierasz tylko A i na podstawie czy jest =10 czy =15 wykonujesz ifa do świecenia ledem
oczywiście próbowałem volatile już wcześniej ale bez powodzenia - dalej pętla while jest omijana w czasie kompilacji, dałem volatile gdzie tylko się dało [syntax=c]volatile char Buffer[MAX_STRLEN]; volatile char* volatile pWrite = Buffer; volatile char* pRead = Buffer; volatile char* const pBegin = Buffer; volatile char* const pEnd = Buffer+MAX_STRLEN;[/syntax]...
Na razie ważniejsze jest dla mnie włączenie obsługi USART2 więc proszę o pomoc w tej kwestii. Po zmianie kodu na ten: [syntax=c]RCC_AHBPeriphClockCmd(RCC_AHBP... ENABLE); RCC_APB2PeriphClockCmd(RCC_APB1Periph_US... ENABLE); void send_string(const char *str) { while (*str) { while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); USART_SendData(USART2,...
schemat jest następujący - standard: http://obrazki.elektroda.pl/7191493100_1... te 4 elementy 3 rezystory i kondensator są niezamontowane - jest to polecane przez ST obwód zamiast rezystora 120R (mniej prądożerny). kod z maina: RCC_APB2PeriphClockCmd(RCC_APB2Perip... ENABLE); GPIO_Conf.GPIO_Pin = GPIO_Pin_10; GPIO_Conf.GPIO_Mode...
Cześć, szukam pomocy w konfiguracji interfejsu USART2 na płytce STM32L476RG po rejestrach do komunikacji STM<->PC. Errorów brak, dane wg debuggera się wysyłają, jednakże w RealTermie kompletnie nic mi nie przychodzi. Próbowałem zgodnie z RM, z poradnikami z YT " Controllers Tech", z poradnikiem użytkownika " szczywronek " i nadal coś nie ogarniam...
Może zanim zapomnę o czym chciałem napisać a nie jest najważniejsze, ale dla Ciebie ważne. Tak w telegraficznym skrócie -> USART w AVR ma możliwość włączenia jakby podwójnej prędkości/próbkowania (to samo SPI). Bit ma skrótowa nazwę U2X. Przy taktowaniu 16MHz, jak prawie każda płyta Ardu, to bez U2X predkość 115200 miałaby za duzy błąd który niby maksem...
Zmień na to: while(USART_GetFlagStatus(USART1... USART_FLAG_TC) == RESET); Złą flagę sprawdzasz. Dalej nie analizowałem. Ja tam bym się tak nie czepiał tej biblioteki. Ma trochę niedoskonałości i trochę błędów ale ma też wiele zalet dla osób, które nie chcą być aż tak "blisko sprzętu".
GPIOA->BSRR |= GPIO_BSRR_BS5; To nie źródło problemu ale tak się tego rejestru nie używa. To jest write only rejestr czyli tylko samo przypisanie Zgadza się, dzięki :) Co do głównego problemu, punkt 1. Użyj debugera okazał się bardzo pomocny :) Założyłem, że skopałem coś w Makefile (np. brakuje jakiejś flagi) i podczas debugowania nic ciekawego...
Tablice wektorów mam z przykładów ze strony [url=http://www.freddiechopin.info/]http... Nic w niej nie zmieniałem i wersja 6.1.1 działa dobrze a 7.1.0 wiadomo Tak wygląda tablica wektorów: [syntax=cpp]void (* const vectors[])(void) __attribute__ ((section(".vectors"))) = { (void (*)(void))&__main_stack_end,// Main stack end address...
Witam, Od razu pisze że nie jestem mistrzem w pisaniu programów, a z stm zaczynam swoją przygodę. Chce wyłączyć przerwanie od EXTI na przykład po obsłudze tego przerwania: Do wyłączenie/wyłączenia przerwania np. od Timera jest TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); //TIM IT enable Generalnie chodzi mi o to że muszę zrobić detekcje sekwencji...
Witam, jak do zapisu i odczytu bitu używam takich funkcji: [syntax=c]static uint8_t ow_read_bit(void) { while((USART2->SR & USART_SR_TXE) == RESET) { } USART2->DR = 0xFF; while((USART2->SR & USART_SR_RXNE) == RESET) { } uint8_t tmp = USART2->DR; if(tmp==0xff)return 1; return 0; } static void ow_write_bit(char bitval) { while((USART2->SR & USART_SR_TXE)...
(at)_lazor_ Reset Handler Raczej ciężko nazwać to przerwaniem.
Sposób opisany jest tu: [url=http://www.edw.com.pl/n0003/avr_pro... 9 strona. Zastosuj przełącznik CD4053, przy programowaniu RESET przełączy automatycznie wyprowadzenia.
-reset przez 4k7 - 10k do plusa -Vcc przez 100nF do masy -Aref przez 100nF do masy -wyprowadź isp (mosi/miso/gnd/sck) bo za każdym upgradem trzeba będzie wyjmować uC, aż się nóżki pourywają. Dodano po 9 aaa! oczywiście Vcc do plusa i przez 100nF do masy ... Zresztą poszukaj schematów i poczytaj dyskusje, też jestem początkujący. Marek
Witam, mam następujący problem od pewnego czasu próbuję odpalić komunikację pomiędzy STM32L-Discovery oraz komputerem na RS232 z sygnałami RTS i CTS, niestety coś robię źle ponieważ komunikacja nie działa i wysłane znaki nie docierają do terminala :/. Czy mógłbym prosić o zerknięcie na ten kod ? [syntax=c]void USART1forFUN(void) { USART_InitTypeDef...
O coś takiego chodziło? HAL_UART_IRQHandler(&huart3); HAL_UART_TxCpltCallback
Aby podłączyć enc28j60 potrzebujesz spi mosi, miso, sck, cs, reset + stack tcp/ip. Zwykle używam uIP. Więc możesz go podłączyć do wszystkiego. Co najmniej 107, co najmniej 103, co najmniej atmega.
Witam. Muszę napisać funkcje obsługi klawiatury matrycowej. Niestety generuje mi się dodatkowe przerwanie podczas zmiany stanu wyprowadzeń pinów. Przerwania jest generowane gdy aktywuje ponownie przerwania. void klawmat1(void) { GPIO_EXTILineConfig(GPIO_PortSourceGPIOE... GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode...
Witam, Mam funkcję do wysyłania znaków [syntax=c] void send_char(char c) { while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); USART_SendData(USART1, c); } [/syntax] i wywołanie w ten sposób działa: send_char('1') , działa dobrze. Jak wysłać 1bajt np: 0x23 ?
Zmień pętle w której wysyłasz na: W programie brak pętli głównej. Choć by na końcu while(1);
Konwerter napięć? Mam zasilanie z dwóch baterii- paluszków (Atmega 8L) lub zasilacza bezpośrednio do pinu zasilania. Pin reset dołączony do zasilania.
DDRB się nigdy nie zmieni samo. Ma pokazane w nocie stany po reset. Potem samo się tam nic nie dzieje. Skonfiguruj USART a potem po prostu odczytaj rejestr i go sobie wyslij na terminal. W AVR DDRx dołącza dwa tranzystory do pinu i mozesz mieć większą moc rzędu 20mA. Steruje sie tym potem rejestrem PORTx i ustawienie stanu wysokiego na PORTx skutkuje...
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....
A wziąłeś pod uwagę, że po resecie TXE jest ustawiona na 1?
Witam mam trywialny problem, ale chciałbym się upewnić: Otóż postanowiłem zrobić sobie wysyłanie danych przez port szeregowy. Mam w związku z tym pytanie odnośnie USART na STM32. Jeśli ustawię sobie przerwanie USARTA na aktywny stan TXE (USART_ITConfig(USART1, USART_IT_TXE, ENABLE); ), to ono od razu mi się wykona, bo w TDR nie ma danych. Przerwanie...
Witam Mam działający program, który za pomocą USART-a i bufora kołowego wysyła na terminal jakiś komunikat (tutaj Hello! ). Program ten prawidłowo działa na STM32F103, po przerobieniu na STM32F072 nic nie zostaje wyświetlane w terminalu. Kod programu na F103: [syntax=c]#include "stm32f10x_usart.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include...
Cóż... ustawiłem wszystko co się da jako wyjście. Jest lepiej. Dalej da się go zawiesić, ale trzeba się trochę więcej "namacać", żeby Tego dokonać. Jutro popracuję z tym mikrokontrolerem, zobaczę jak w normalnym użytkowaniu przez kilka godzin będzie się spisywał. Póki co wrzucam to, co na razie napisałem. Dodam tylko, że jedyną funkcją tego mikrokontrolera...
Mam problem z inicjalizacją UARTA. Otóż kod działa na portach PA9,PA10 lub PC4,PC5. Jednak gdy zmieniam na PB6, PB7 komp nie otrzymuje danych wysyłanych przez płytkę. Może źle to robię, ale według specyfikacji to na te porty można wyprowadzić USART1, więc nie wiem o co chodzi, a jeszcze raczkuje w temacie STM32. [syntax=c]#ifndef _USART_C_ #define _USART_C_...
Ten programator m. in. obsługuje AT89S4051. Nie pamięć szeregowa to nie USART ! Pokaż w jaki sposób podłączyłeś programator do AT89S4051.
Witam. Od dwóch dni próbuję odebrać dane z komputera na procesor. Próbowałem wysłać liczbę np: "11" odebrać ją na procesorze, dodać do niej liczbę np:"1" i ponownie wysłać na terminal (używam Realterm). Problem w tym, że nie potrafię odebrać danych z komputera. Zepsuty kabel ani układ nie wchodzi w grę bo jest echo po zwarciu maxa232 na pinach 11 i...
Z tym akurat nie mam problemu. Piny 0 i 1 wykorzystuję w programie i jest OK. Z tego co wiem to USART trzeba aktywować w programie. Dodano po 15 Ale tak po przemyśleniu lepszym rozwiązaniem jest Watchdog odpowiednio ustawiony. Programowy reset wymaga aktywowania w przerwaniu i żeby to zadziałało musiał bym aktywować odpowiedni pin. Jeśli miało by to...
Dzięki. Zrobiłem sobie jeszcze inicjalizacje USART2 i zaraz po złożeniu całej odebranej ramki przez USART1 chciałbym ją wysłać na TX USART2. Zrobiłem to tak że w przerwaniu void USART1_IRQHandler(void) na końcu gdzie już mam całą ramkę z modbusa chcę wysłać ją na TX USART2, więc zrobiłem to tak: [syntax=c] send_uintUSART2(przetworzonaRamka.adres)... send_uintUSART2(przetworzonaRamka.funkcj...
Nie wiemy o który z rodziny STM32 pytasz, może to się okazać istotne. Nie zadbałeś o uruchomienie USART. Opierając się na SPL (brr) zapoznaj się z poniższym przykładem (dla F0): [syntax=c] #include "stm32f0xx.h" #include "stm32f0_discovery.h" int main(void) { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIO...
Witam! Mam dokładnie taki sam problem jak kolega 12345adrian . Jakie jest wyjście z tej opresji? Pozdrawiam, Łukasz. P.S. Jak bedzie trzeba to podam kod żródłowy :D Dodano po 3 Oto kod źródłowy: .include "m128def.inc" ;wektory przerwan .org $0000 jmp reset .org $0024 jmp USART0_RXC ; USART0 RX Complete Handler .org $0028 jmp USART0_TXC ; USART0...
Jeśli bitowi chcesz nadać wartość 0 to po prostu nie nadajesz mu wartości 1 - proste, prawda? Oczywiście tylko w sytuacji w której stosujesz zapis np. UCSRC=, a nie UCSRC|=. Co do błędów w symulatorze to jakie masz na myśli? Dobra rada - dopóki nie osiągniesz istotnego stopnia wtajemniczenia, porzuć myśl o błędach w kompilatorze, symulatorze itd. Jeśli...
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,...
Z linaro też nie działa, może to robię coś źle. Mam tak: W syscall.c [syntax=c] __attribute__ ((used)) int _read(int file, char *ptr, int len){ int todo=0; if (len == 0) return 0; for ( todo=0 ; todo < len; todo++) { while( USART_GetFlagStatus(USART2, USART_FLAG_RXNE)==RESET) ptr[todo] = USART_ReceiveData(USART2); } return todo; } [/syntax] później...
Witam, Mam mały problem z ustawieniem niestandardowej prędkości na STM32 powyżej 115200. Problem pojawia się zarówno przy użyciu funkcji niesocjalizującej jak i ręcznego skonfigurowania ( ręczne wyliczenie wartości dla rejestru BRR ). Nie ma problemu z różnymi transmisjami 9600, 28800 aż do 115200. Po tej wartości terminal milczy. Jedynie przy użyciu...
Hmm, tak właściwie to nie wiem ;) Przesunąłem sei() w górę i znajduje się teraz tuż po USART_Initialise(). Generalnie to nic nie dało, wynikowy plik w .txt wciąż wygląda tak: AccelX AccelY AccelZ AccelX AccelY AccelZ i tak dalej... :/ Zmiana portu na PB7 również nie przyniosła skutku. Domyślam się, iż niepoprawnie wykorzystuję bibliotekę do obsługi...
Dziękuję Wam koledzy. Teraz jest znacznie lepiej. Zrobiłem tak jak poradziliście. Jednak dalej moim zdaniem dzieje się magia w moim kodzie. USART nadaje poprawnie tylko jeśli wywoływana jest napisana przeze mnie funkcja gpio_setup. Jeśli ją usunę, USART przestaje nadawać. Oto mój kod: [syntax=c]/* Includes */ #include "stm32f4xx.h" //#define HSE_Value...
Dodam że na złącze SWD mam wyprowadzone SWDIO SWCLK i zwykły reset (NRST). A co z masą i zasilaniem?
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,...
Teraz już nie powinno być nie jasności co do konfiguracji. Niestety nic się nie zmieniło. Jutro zmierzę sie z ustawieniami zegarów. [syntax=c] RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // enable clock for GPIOA RCC->APB2ENR |= RCC_APB2ENR_USART1EN; // enable clock for USART1 GPIOA->MODER |= GPIO_MODER_MODER9_1; //alt PP PA9 GPIOA->MODER |= GPIO_MODER_MODER10_1;...
Witam staram sie uruchomić sprzętową obsługe encodera w stm32F4. Generalnie całość już działa problemem okazuje się sam timer. Działa inkrementacja i dekrementacja timera jednakże licznik nie chce się przepełnić zarówno przy zliczaniu w górę i w dół timer dolicza do maksymalnej wartości zapisanej w rejestrze CNT. przy zliczaniu w góre (obrocie koła)...
Wyjaśnię wpierw skąd moje poprzednie pytanie. Mam ARM'a od NXP, z układem FT232 dołączonym tak, że steruje linią reset i jeszcze jedną wywołującą bootloader. Po podłączeniu tego przez USB do komputera, podczas uruchamiania sterownika widzę, jak układ jest kilka razy resetowany. Czasem w tym układzie uzyskiwałem podobne wyniki / problemy. Ale skoro już...
Dobrze, że się domyśliłeś, nie czekałeś na odpowiedź i coś sprawdziłeś. Sprawa wydaje się bajecznie prosta a ciągnie się okropnie :D Specjalnie wgrałem sam Hex innym programatorem żeby sprawdzić czy na pewno wysłałem poprawny. Wszystko zagadało od strzała. Dopisałem więc w programie dwa komunikaty diagnostyczne. Na tym pinie Debug muszą i są na pewno...
Ja rozumiem ze mozna szarpać się z darmowymi toolchainami, ale zeby z keilem?... Postawienie darmowego toolchaina trwa minute :)
1. Na jakiej podstawie stwierdzasz, że nie zmienia prędkości? Nie otrzymujesz poprawnej odp? 2. Jaki kwarc użyłeś 3. Pokaż funkcję oczekującą na odp 1. Bo jeśli nie zmienię prędkości na uC to kurde działa dalej przynajmniej do uruchomienia tego mux bo dalej nie testowałem. tylko jest taki lag gdzie 1s lub 2s po tym ustawieniu prędkości więc dlatego...
Właśnie problem nie leży w kodzie, a wysyłanie nie jest bezpośrednio wywoływane z przerwania. Timer jedynie daje "znak" schedulerowi że pora odpalić następny proces i ten proces jest uruchamiany. Najprostsza procedura wysyłania znaku [syntax=c] void _put_char (uint8_t ch) { while((USART1->SR &USART_FLAG_TXE) == 0); USART1->DR = ch; } [/syntax] wywoływana...
Chcę w jakiś sposób okiełznąć USART, na razie bez DMA. Korzystam z gotowego przykładu, jednak pustki w terminalu. Fizycznie : GND przejściówki USB RS232 podłączony z GND disco, RX, TX kros. stm32f10x_usart.c [syntax=c] #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include <stdio.h>...
Nie znam bascoma ale w c robię tak. Operacja tuż po wybudzeniu. [syntax=c] power_all_enable(); WriteDane(); // wysyłanie danych do odbiornika power_all_disable(); //wyłączenie TWI TIM2 TIM0 TIM1 SPI USART0 and ADC [/syntax] Dzięki temu uzyskałem pobór prądu 2uA.
Zmieniłem program, uwzględniając wcześniejsze uwagi. Na początku skupiam się tylko na wysyłaniu danych. Na początku załączam taktowanie portu PD: Następnie konfiguruję wyprowadzenia PD5 i PD6 - linie TX i RX: Później konfiguruję przerwania - kontroler NVIC: Następnie konfiguruję USART: i w pętli głównej wywołuję funkcję: Dodano po 1 Zmieniłem USART2...
Witam. Próbuję odpalić komunikacje USART z PC na płytce nucleo STM32F302R8, z dokumentacji wynika, że USART2 jest podłączony z programatorem przez który można się komunikować z PC. Chyba wszystko dobrze ustawiłem a przynajmniej podobnie jak w poradniku właśnie z elektrody. Po wciśnięciu przycisku reset na RealTermie pojawia się "nul" czyli pusta ramka...
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...
Chyba nie jest inicjowany 2x bo jedna inicjacja tyczy sie portu B a druga portu C.... Dodano po 2 Wiem, że wielu ludzi nie lubi STM32Cube. Włączyłem generator na parę minut i wygenerowałm 'drivery' dla pinu przycisk i pinu led. Nastepnie skopiowałem "logike" autora postu poprawaijac nazwy pinow. Roboty mało a szybki efekt w tak prostym programie. Nie...
Cały czas jednak nie ogarniam tego, dlaczego jeżeli chce pobrać dane z IrQHandler z tablicy gpsread do tablicy RxBuffer w funkcji niżej, to wgl nie moge skopiować danych nawet zwykłym for'em? [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...
Witam, Zacząłem zabawę z STM32, kupiłem najtańszy moduł z procesorem STM32F103C8T6, programuje z użyciem STLink v2 w środowisku AC6 STM32 (eclipse) biblioteka StdPeriph. Prosta obsługa portów działa, kompiluje i debugguje poprawnie. Jednak jest problem z UARTem, ciągle łapie śmieci (realTherm pokazuje błąd ramki). Konfiguracja baudrate itd na PC i uC...
Witaj Żeby nie było, że się czepiam to w konfiguracji USARTA masz wpisane USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); Najlepsza droga do sprawdzenia, czy to działa to eksperyment :) Wpisałem Twój programik do STM32F103. Nie skorzystałem z przerwań, bo do eksperymentu to niepotrzebne. Miałem zwykłą pętlę while (1), a sprawdzanie USARTA do wysłania...
Nie masz funkcji obsługi przerwania od usartu, przez co po wystąpieniu przerwania procesor się resetuje. Brak funkcji obsługi wynika ze złej nazwy: jest SIG_UART0_RECV a powinno być SIG_USART0_RECV (lub USART0_RXC_vect). Warto czasem zobaczyć co w iom162.h siedzi.
Hej, Chciałem uaktualnić swój stary projekt, w którym używałem Atmegi162. Układ ma łączyć się z zewnętrznym urządzeniem za pomocą magistrali UART, o parametrach 8b danych, 1b stopu, parzystość "even". Obecnie próbuję zrobić te same operacje wykorzystując płytkę z mikrokontrolerem ARM - STM32F407Z (na płytce CORE407). Po paru minutach udało mi się skonfigurować...
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 od kilku dni pisze na płytce ewaluacyjnej stm32f4discovery. Niestety nie mogę sobie poradzić z uruchomieniem USART`u odbieram dane jednakże nie takie jakie wysyłam więc pewnie chodzi o wartośc w rejestrrze BRR odpowiedzialną za baudrate. Bazuję na dokumentacji i swoim poprzednim projekcie (http://www.elektroda.pl/rtvforum/topic2... jednakże...
przerwa usart usart wskaźnik esp8266 usart
falownik sterować moment wymiana pierścień tłokowy centrala alarm 433mhz
zasilacz tracer pioneer szuflada
Błąd 03800200-2802 w Canon iPF 750: Głowica drukująca Przyczyny błędów pralki Samsung Eco Bubble 8kg