Strasznie nie czytelne masz ustawianie GPIO, same cyferki mnie zrażają, zapewne nie tylko mnie. Freddie Chopin napisał bardzo fajną funkcję do portów. Ja Ci daję mój przykład: [syntax=c_loadrunner]#define APB_CLK 42000000 #define BAUDRATE 9600 void init_usart( void ) { RCC->APB1ENR |= RCC_APB1ENR_USART3EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; gpio_pin_cfg(...
Config COM zupełnie nie jest potrzebny przy używaniu sprzetowego USARTu. A kolega sprawdzał czy przy takim baudrate i taktowaniu jaki będzie błąd ?
Otworzyłeś datasheet? Bo coś zdaje mi się że nie bardzo. Tabelka na stronie 153. Nawet zakładając że masz dokładną częstotliwość (a nie masz bo to RC) to nie wyciągniesz baudrate 9600 bo będziesz miał 7% błędu.
Skąd wiesz, że problem leży przy przesyłaniu PC->MCU? Twój kod nie umożliwia rozstrzygnięcia gdzie problem leży. Takowanie z wewnętrznego generatora RC bez kalibracji jest właściwie niedopuszczalne. Błąd, jakokolwiek jest to dziwaczne, wcale nie musi spowodować symetrycznego zakłócenia - odbiornik na PC może być bardziej tolerancyjny, co np. wynika...
Nic dziwnego, zmieniasz taktowanie procesora, zmieniasz także baudrate na UART. Dla zewnętrznego kwarcu CKOPT=1, CKSEL=111X, 1 znaczy niezaprogramowany, X - dowolna wartość.
1. Czy plik z ustawieniami zegara masz wygenerowany z narzędzia udostępnionego przez ST (plik xls z makrem)? Jeśli nie to to zrób. 2. W opcjach projektu powinieneś zdefiniować stałą określającą częstotliwość HSE w hercach [syntax=c] HSE_VALUE=8000000 [/syntax] 3. Sam nad tym spędziłem sporo czasu, zanim wykryłem brak tej stałej zdefiniowanej w preprocesorze....
Olej te ich dziwaczne wywody na temat obliczania wartości do rejestru odpowiedzialnego za baudrate i po prostu wpisz do tego rejestru wartość równą PRĘDKOŚĆ_ZEGARA_UART / BAUDRATE. Te całe zabawy w część stałą i ułamkową właśnie do tego się sprowadzają, chyba ktoś kto pisał dokumentację miał nadmiar fantazji. Wg tegoż BRR powinien być równy 6666 czyli...
Build started 6.4.2014 at 00:25:04 avr-gcc -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Proba_10.o -MF dep/Proba_10.o.d -c ../Proba_10.c avr-gcc -mmcu=atmega16 -Wl,-Map=Proba_10.map Proba_10.o -o Proba_10.elf avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature...
W trybie SPI baudrate dla UART nie zawiera części odpowiedzialnej za generator frakcyjny - ze wzoru z manuala - BSEL=Fper/(2*Fbaud)-1. BTW, DRE to data register empty - budor masz tu 2 bajtowy + dana w nadajniku. Stąd też ten bit zmieni stan dopiero gdy wyślesz 3 bajty. Dlatego dla SPI trzeba być uważnym, aby nierozsynchronizować nadajnika z odbiornikiem....
A tak z ciekawości, dlaczego nie napiszesz tego tak: [syntax=c]switch (wiadomosc) { case 'a': PORTD = 0; PORTB = 0x00; PORTD = _BV(5); PORTB = _BV(1) | _BV(2); break; case 'q': PORTD = 0x00; PORTB = 0x00; PORTB = _BV(1) | _BV(2); PORTD = _BV(5) | _BV(7); break; // itd. }[/syntax]
po wpisaniu z palca #define USART_UBBR_VALUE 25 nic się nie zmienia
Witam, Mam problem z doborem rezonatora kwarcowego dla HSE dla układu STM32L072, by łatwo było uzyskać na USART baudrate 115200? Chodzi o najwolniejszy kwarc, by układ pobierał jak najmniej prądu (zasilanie bateryjne).
tak to robisz? #define USART_BAUDRATE(br, fosc) (fosc/8/br-1) UBRRH = (unsigned char) (baud_divider >> 8); UBRRL = (unsigned char) (baud_divider); // USART setup UCSRA = _BV(U2X); // U2X enabled UCSRC = _BV(UCSZ1) | _BV(UCSZ0); // Access UCSRC, Asyncronous 8N1 UCSRB = _BV(RXCIE)...
No więc kod wygląda tak: [syntax=c]void USART_Config(void) { //konfigurowanie ukladu USART //Ustawienie Baudrate = 921.6kb/s USART1->BRR = 0x1A; //Wlaczenie DMA dla nadawania USART USART1->CR3 = USART_CR3_DMAT; //Wlaczenie USART, dlugosc danych 8 bitow, nadawanie i odbior USART1->CR1 = (USART_CR1_UE | USART_CR1_TE | USART_CR1_RE); }[/syntax] Proszę...
Witam, Mam problem, mianowicie gdy nadaję z PC do procka np. znak "1" to otrzymuję "11" dodam, że odbieram w przerwaniu. Konfiguruję USART w stm w następujący sposób: [syntax=c]void USART_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; USART_ClockInitTypeDef USART_ClockInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP...
Rany julek, rzeczywiście, zmieniałem USARTy i stąd zostało USART2->DTR:P Freddie Chopin - użyłem Twoich funkcji i DZIAŁA! Dziękuję bardzo! :D Dodano po 6 A co do DR to struktura USART nie ma takiego pola, ma natomiast pole TDR, tak samo jak nie ma pola SR tylko ISR. Oczywiście mówię tu o stm32f3. Wklejam działający kod (wykorzystałem pliki szopena -...
W AVR306 mozna znalezc taki kod obslugi USARTA dla atmegi128: #include <avr/io.h> #include <avr/iom128.h> #include <avr/ina90.h> /* UART Buffer Defines */ #define USART_RX_BUFFER_SIZE 128 /* 2,4,8,16,32,64,128 or 256 bytes */ #define USART_TX_BUFFER_SIZE 128 /* 2,4,8,16,32,64,128 or 256 bytes */ #define USART_RX_BUFFER_MASK ( USART_RX_BUFFER_SIZE...
Witam. Urządzenie z którym próbuję się skomunikować po RS232ttl ma następujące parametry transmisji: 300/1200 baud 1 startbit 7 data bits equal parity 1 stop bit Jakie powinny być ustawienia w konfiguracji USART w stm ? Mam tak : Dodano po 2 Wychodzi na to że nie działają mi prędkości poniżej 4800. Dodano po 5 Wpisuje 1200 a wychodzi że jest 19200......
Witam ! Na znanym portalu aukcyjnym zakupiłem przejściówkę USB<-> rs 232 ttl Potrzebuję zmontować działający układ komunikacyjny z atmega88 ( interfejs USART) a następnie spokojnie przeanalizować kod, zasadę działania i wreszcię połączyć się z RFM12B. Ustawiłem częstotliwość taktowania qc za pomocą fusów na 8MHz. W ustawienia portu w komputerze...
Witam, próbuję przepisać program z Atmega8 na Atmega328P, z powodu małej pamięci Atmegi8, w programie wykorzystuje komunikacje USART. Program dla atmegi8: [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #ifndef F_CPU #define F_CPU 1000000 #endif //set desired baud rate #define BAUDRATE 9600 //calculate...
Witam, Skonfigurowałem USART żeby wysyłać dane, do komputera lecą prawidłowo. Chciałem teraz odbierać dane z komputera, jednak chciałbym to zrobić w przerwaniu aby tam w tablicy buforować dane i co jakiś czas obrabiać je w głównej pętli programu. Problem jest z tym, że po uruchomieniu przerwań uzyskuję jakieś śmieci - tak mi się wydaje, bo nie wysyłam...
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...
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ć...
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>...
(at)es2 BAUD może być równy 0, wtedy taktowanie USART wyniesie Fclk/8=2 MHz, autor użył zegara 18,4321, co daje nam baudrate 2,3 Mbps, czyli po podzieleniu przez 3 ok. 768 kbps, czyli w zakresie tolerancji dla WS2812B.
Nie jestem pewien, czy Pan Tomasz zgadza się na publikowanie jego kodu z książki, a moje próby w całości oparte są na tych kodach. Piszesz, że F_CPU nie determinuje częstotliwości zegara tylko (jeśli to dobrze rozumiem) służy kompilatorowi do wyliczeń innych parametrów jak np delay czy baudrate. Racja, bo skąd kompilator ma wiedzieć, jaki kwarc fizycznie...
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...
A zwykłe bascomowe Config nie zmieni zawartości rejestrów w locie? A w DS jest ładna tabelka w USART > Register description > Examples of baudrate settings
1920 8 n 2 mój błąd ale nadal wszystko się sypie i nie dostaje poprawnych odpowiedzi w trerminalu, próbowałem nawet dla innego kodu #include <avr/io.h> #define F_CPU 4000000UL /* Function prototypes */ void InitUART( unsigned char baudrate ); unsigned char ReceiveByte( void ); void TransmitByte( unsigned char data ); /*...
Witam, Mam problem a USARTem w STM32F103. Bardzo rzadko, ale zdarza się że gubi znaki. 1. Sprzęt: SIM900 <---UART4---> SRM32F103 <---USART2---> PC 2. Program: Inicjalizacja UART4: http://obrazki.elektroda.pl/6434457100_1... Opis: (1) - Zapisz każdy odebrany znak do bufora i wyślij do PC (2) - Jeśli trafisz na sekwencję http://obrazki.elektroda.pl/6596964500_1...
Skoro masz w ukłądzie kwarc 32768 Hz to tykorzystaj go do kalibracji programowej generatora RC, lub prościej do wyliczenia rzeczywistej wartości częstotliwości RC, na podstawie której określasz baudrate USART. A skoro to ma być energooszczędny zegarek to weź XMEGA np. E5, która raz, że może działać z USART bez kwarcu, dwa, ma stabilny generator 1kHz...
Czujnik to HTU21D. Wysyłam do niego komendy, które są w Datasheet (w załączniku). Chcę odczytać temperaturę w trybie Hold Master. Oto kompletny kod main.c: http://obrazki.elektroda.pl/4783952000_1...
Szanowni Forumowicze, uruchomiłem sobie sprzętowego UARTa wykorzystując bibliotekę ze strony atmela. Wszystko działa, łączę się z terminalem na komputerze, wyświetla się to co powinno. Dodałem też funkcję do wysyłania całego łańcucha znaków wykorzystując wskaźnik, gdyż w atmelowskiej bibliotece znalazłem jedynie do wysyłania konkretnych pojedynczych...
Witam Używam płytki STM32F4 Discovery. Muszę odczytać sporą ilość danych, więc UART wydaje się jedynym rozsądnym rozwiązaniem. Poniżej kod, którego używam (sugerowałem się kodami z różnych stron). [syntax=c]#include "stm32f4xx.h" #include "stm32f4_discovery.h" #include "misc.h" // I recommend you have a look at these in the ST firmware folder #include...
Szanowni Forumowicze, postawiłem sobie za zadanie opanowanie UARTa w prockach xmega, co nie powinno być zadaniem bardzo trudnym. Na początek zajrzałem na stronę producenta i znalazłem pdf z opisem UARTa i przykładowy kod dla wykorzystania sprzętowego na przerwaniach i software'owego. Zacząłem od przerwań. Utworzyłem projekt i skompilowałem program....
Witam, Po uruchomieniu trzech interfejsów RS232 w STM32f103rb przyszedł czas na RS232 w STM32f407 i odrazu problem. Zrobiłem konfigurację USARTA i wysyłam w pętli znak 'a' a otrzymuję jakieś E z indeksem dolnym 1. Konfiguracja : [syntax=c] void init_USART1(){ /* This is a concept that has to do with the libraries provided by ST * to make development...
Problem już prawie rozwiązany, gdyż moja lista z projektami świeciła się jak choinka za sprawą tych samych, złych bibliotek. Poprawiłem już prawie wszystko, ale chce się upewnić co do jednego. Czy w kodzie który zamieszczam wystarczy usunąć "||" czy coś tam powinno być? W pliku źródłowym na jakiejś stronie internetowej też tego nie ma, więc nie usunąłem...
Witam serdecznie, Robię hexapoda 18xservo, wykorzystuję do tego niezależne kanały TIM2,3,4,5 i TIM12. Napotkałem problem z kanałem 2 i 3 dla TIM5, nie działa. Żeby nie wrzucać całego programu i nie zaburzać czytelności, przygotowałem mini aplikację testową dla TIM5 PWM, podobnie channel 1 i 4 działa, channel 2 i 3 nie działa. Czy dla pinów PA1 i PA2...
W datasheet od procesora sa dokladnie podane wartosci rejestrow dla różnych częstotliwości oscylatora i różnych prędkości. W tabelach tych podane są również procentowe błędy prędkości transmisji przy każdej konfiguracji. Polecam tam zajrzec. Gdzieś czytałem że procentowy błąd baudrate powienien byc poniżej chyba 5%.
Witam podczepię się pod ten wątek. Również mam atmege 162 oraz układ max232IN. atmega ma standardowe ustawienia. Wgrałem do niej kod Jac_ena zmieniając jedynie FOSC na 1000000. W terminalu ustawiłem Baudrate 9600 Parity none Databits 8 Stopbits 2 Handshake none Emulation none. Co może być przyczyną tego, że w terminalu otrzymuje krzaki? Raczej wszystko...
W standardowym nagłówku z CMSIS masz przecież makra np USART_CR. Na forum wrzuciłem też całkiem przyjazną funkcję do konfiguracji IO, wtedy kod wygląda tak: [syntax=c]static void UsartInit(){ RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_USART1EN; GPIO_Config(GPIOA, 9, AFPP_OUTPUT_2MHZ); USART1->BRR = FREQUENCY/BAUD; // set baud rate to BAUD USART1->CR1...
Może spróbuj nadawać z mniejszą prędkością. Ja zazwyczaj przy kwarcu niezapewniającym odpowiedniej baudrate używam niskiej prędkości, rzędu 2400 lub 4800 bps.
Wielki dzięki, to działa, dziwnie skonstruowana jest ta funkcja załatwiająca jednocześnie odczyt i zapis. To że działa wiem z tylko obserwacji przebiegów na analizatorze. http://obrazki.elektroda.pl/8308418200_1... Faktycznie od komórki 0x0C zaczynają się wartości AD AE AF B0 B1, ręcznie wbite przeze mnie na progamatorze. Ale przystopowało...
Szukałem na internecie poradników do terminala UART i udało mi się zrobić coś takiego z kawałków znalezionych w sieci. Problem polega na tym, że mój kompilator wyrzuca błędy a nie pokazuje mi gdzie one są (i tym samym nie mogę ich skompilować) i jeśli ktoś może sprawdzić poprawność kodu w 1. i 2. main.c(są to dwa odzielne programy w dwóch projektach...
justo - wszystkie AVRy są sprzedawane z ustawionym wewnętrznym generatorem RC :) Mirek - jak sądzę chodzi nie o programowanie, tylko transmisję po USART. Wewnętrzny generator RC może nie mieć wystarczająco dokładnie ustawionej częstotliwości, w efekcie transmisja ze standardowo wylicoznym baudrate może być niemożliwa. Wtedy trzeba albo eksperymentalnie...
A PC potrafi odbierać tak niskie boudrate? Nie wiadomo jaki jest błąd przy takich ustawieniach, ale obstawiam, że spory. Ponieważ baudrate zazwyczaj powstaje na skutek podzielenia częstotliwości taktowania USART przez podaną przez programistę wartość, to przy niskich wartościach różnice i błędy narastają lawinowo. W efekcie dwa układy, różnie taktowane...
No ale w czym problem - patrzysz w manual i po prostu zmieniasz prędkość. Pewnie nawet niczego nie trzeba wyłączać, tylko trzeba zadbać o to, by w momencie zmiany nie yło NIC wysyłane. A jakbyś się kiedyś zastanawiał, czy konfigurowanie wszystkiego w setce linijek z samymi ORami i AND-NOTami jest dobre, to zastanów się nad tymi linijkami, zbliżonymi...
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,...
Ja mam pomysł: ustawiłeś 2 bity stopu w programie terminala albo masz inną niż myślisz częstotliwość zegara. Pozy tym, chyba nieco czytelniej niż USART_SendData(USART1, 0x5a); wygląda kod: USART_SendData(USART1, 'Z'); Dzięki za zainteresowanie :) niestety nie jest to ani ustawienie 2 bitów stopu ani błednego BaudRate (jest taki sam i w programie i...
Witam mam problem z komunikacja usart: Baud rate-9600 Brak bitu parzystości 8 bitów danych 1bit stopu Gdy uruchomie terminal na baud rate 9600 zwraca same krzaki(0000 0000) a gdy ustawie niższy baudrate zwraca już nie zera tylko jakąś losową kombinacje 0 i jedynek nie wiem gdzie problem ponieważ dopiero ucze się z poradnika z forum. Zamieszczam kod:...
rs232 baudrate baudrate error atmega8 baudrate
brother komunikat wymień toner pomiar grubości blachy volvo silnika
bateria macallister pioneer instrukcja obsługi polski
Co to jest moc głośników w sinusie (RMS)? Trwałość, retencja danych, cykle i prędkość zapisu/odczytu w pamięciach