W książce Tomasza Francuza "AVR Praktyczne projekty" znalazłem bardzo przyjemny sposób na użycie USART w XMEGA posługując się fprintf lub fscanf. Niestety po przejściu na DMA okazało się, że nie da się tak łatwo zastąpić fprintf przy użyciu funkcji wysyłającej dane do bufora i dalej przez DMA do komputera. Znalazłem inny przykład w sieci z wykorzystanie...
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...
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).
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, 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...
Witam Chciałem zająć się obsługą karty SD, za pomocą FatFs. Natrafiłem na ten wątek: Projekt tam zamieszczony działa jak należy. Problem pojawił się, kiedy dodałem obsługę usarta: ˙ ****************************** Nie mam pojęcia co z tym zrobić. Sprawdzałem na usarcie 1, 2 i 3. Jeśli zmienię baudrate zmienia się tylko ilość '*'. Próbowałem zmienić ustawienia...
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: Opis: (1) - Zapisz każdy odebrany znak do bufora i wyślij do PC (2) - Jeśli trafisz na sekwencję Jeśli ktoś ma pomysł jak rozwiązać problem proszę o naprowadzenie....
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>...
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...
(at)tadzik85 to jest moja inicjalizacja : [syntax=c] void init_USART6(){ GPIO_InitTypeDef GPIO6_InitStruct; // this is for the GPIO pins used as TX and RX USART_InitTypeDef USART6_InitStruct; // this is for the USART6 initilization NVIC_InitTypeDef NVIC6_InitStructure; // this is used to configure the NVIC (nested vector interrupt controller) RCC_APB2PeriphClockCmd(RCC_APB2Periph_US...
Ja mam coś takiego: [syntax=c] #define APB1_CLK 42000000 #define BAUDRATE 115200 void init_usart( void ) { RCC->APB1ENR |= RCC_APB1ENR_USART3EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; gpio_pin_cfg( GPIOD, 8, GPIO_AF7_PP_50MHz_PULL_UP ); gpio_pin_cfg( GPIOD, 9, GPIO_AF7_PP_50MHz_PULL_UP ); USART3->BRR |= APB1_CLK / BAUDRATE; USART3->CR1 |= USART_CR1_TE...
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 () jednakże usart nie chce działać zamierzone parametry...
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:...
Witam Pisze program przetwarzający dwa kanały ADC (potencjometr i termometr). Używam do przesyłania danych DMA i w końcu USARTA do wysyłania danych do terminala. Problem polega na tym, że cały czas odbieram zerowe wartości, tak jakby DMA w ogóle nie przesyłało danych. Prosiłbym o pomoc z rozwiązaniem problemu! Pozdrawiam Kod: [syntax=c] #define TEMP110_CAL_ADDR...
Witam, mam pytanie dotyczące obsługi przycisków oraz trochę większy problem z obsługą USARTa na uC STM32F107 :P Co do przycisków - mam je sprzętowo podciągane do Vcc, na AVR zawsze ustawiałem piny przycisków na wejścia i ustawiałem jeszcze wewnętrzny pull-up, a tu widzę, że jest trochę inaczej ;) Otóż wszystko ładnie mi działa dopóki nie ustawię jakiejkolwiek...
Witam, Napisałem obsługę UARTA z odbiorem przez DMA. Dane odbieram z ESP8266, tutaj też odbiór działa, pierwsza ramka odbierana jest prawidłowo, ale następna już nie, ponieważ bufor przepełnia się i kawałek ramki jest na początku bufora i na końcu bufora i tutaj pojawia się problem w tym, że nie wiem jak poradzić sobie z tym aby ramka zawsze trafiała...
WIELKIE DZIĘKI!! działający kod: #include "stm32f0xx.h" void initUsart(){ RCC->AHBENR |= RCC_AHBENR_GPIOAEN; //enable clock for PORTA RCC->APB2ENR |= RCC_APB2ENR_USART1EN; //enable clock for USART GPIOA->AFR[1] |= (1<<8) ; //mapping AF1 to get RX on PA10 GPIOA->AFR[1] |= (1<<4) ; //mapping AF1 to get TX on PA9 GPIOA->MODER...
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...
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(...
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...
Ok błąd znaleziony bardzo głupi. Po prostu w terminalu było ustawione 7 databits Dopiero teraz się zajarzyłem. ----------------------------------------... EDIT Działający kod: [syntax=c]gpio_pin_cfg(GPIOA, 0, GPIO_IN_FLOATING); gpio_pin_cfg(GPIOD, 8, GPIO_AF7_PP_25MHz); RCC->APB1ENR |= RCC_APB1ENR_USART3EN; USART3->CR1 = USART_CR1_UE;...
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 Rozpoczynam zabawe z STM32 i napotkalem problem. Chodzi o uruchomienie USART2 i wyslanie znaku na terminal do PC. Rx i Tx mam podpiete do portu A PA2->Tx i PA3->Rx. Siedze z dokumentacja procesora ale jakos nie moge znalesc bledu w swoim kodzie. Moze co podpowiecie. Kompilator AtolicTruestudio Petla główna: [syntax=c] int main(void) { int...
Witam, mam problem który wymieniłem w temacie. Nie mogę "zmusić" mojej Atmegi by wysyłała dane do komputera. W układzie zamontowana jest Atmega328P, układ FT232RL oraz dwie diody sygnalizujące transmisję. Gdy wysyłam coś z komputera do układu, to widać, że dane przechodzą bo świeci się odpowiednia dioda (czerwona). Korzystając ze strony , wgrałem program...
Na razie chciałbym sprobować zrobić bez przerwań. Wysyłam z programu. [syntax=c] #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> #define BAUDRATE 9600 #define BAUD_PRESCALLER (((F_CPU / (BAUDRATE * 16UL))) - 1) //Declaration of our functions void USART_init(void); unsigned char USART_receive(void); void USART_send( unsigned...
Jak pisałem nie mam jak teraz sprawdzić na sprzęcie. Może to tylko błąd wyświetlania. Mogę także wpisać bezpośrednio wartość dla tego przerwania (37). Więc ta linia jest ok? Dodano po 3 Dodano po 2 Dla upewnienia - nie trzeba kasować flagi przerwania, jest kasowana czytaniem DR, tak?
Witam, mam problem z danymi przesyłanymi przez usart. Projektuję kontroler obrotów wentylatorów. Co 1s wywoływane jest przerwanie od timera0, w którym wysyłane są dane o temperaturze i wypełnieniu PWM dwóch wentylatorów (dane w HEX, niebieskie cyfry i litery w terminalu na zdj. 2). Chciałbym, aby dane te były wpisywane w odpowiednie pola do tego przeznaczone...
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...
Witam napisałem taki program ale On nic nie wysyła po RS232 ktoś wie moze dlaczego??? procek to Atmega8. Wiem ze na forum ten temat był omawiany ale nie moge znależć odpowiedzi na swoje pytanie dlaczego to nie działa :( #include <avr/io.h> #include <avr/delay.h> #include "io.h" void USART_Init( unsigned int baud ) {...
Witam serdecznie. Jestem początkującym programistą mikrokontrolerów avr. Większość wiedzy czerpię z internetu, więc nie mam się kogo poradzić w sprawach merytorycznych odnośnie napotkanych problemów. Stąd prośba o pomoc na tym forum. Wymyśliłem sobie projekt współpracy modułu bluetooth HC-06 (były poruszane wątki tego modułu na tym forum) z Atmegą8A....
Witam, To mój pierwszy post na tym forum (mimo, że zaglądałem tu bardzo często, ale biernie, zatem przepraszam za ewentualne niedociągnięcia z mojej strony), więc chciałbym na początku się ze wszystkimi przywitać :) Od niedawna zacząłem przygodę z mikrokontrolerami LPC firmy NXP (po przesiadkach AVR->STM32->LPC). Właśnie kończę etap odkrywania...
Jaki to moduł GPS i jaki modem GSM? Wstaw schemat, może to tam leży problem? Bez przerwań to słabo widzę niezawodność takiego lokalizatora ;) Nie rozumiem po co utrudniasz sobie program we wszystkich możliwych miejscach .. Po co stosujesz [syntax=c] for (x=0; x<82; x++) { [/syntax] jak można po prostu zerować licznik znaków przy odebraniu znaku końca...
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 programowym USARTem w mikrokontrolerze ATtiny13A. Mikrokontroler pracuje na wew. kwarcu 9,6MHz. W Atmel Studio mam również zdefiniowany symbol F_CPU=9600000. Zamieszczam kod: main.c: 68A69▒69A70▒66A67▒68...
Witam! próbuje przesłać dane z komputera, na atmege i wyświetlić je binarne na LCD. Problem tkwi w tym że wyświetlane dane nie zgadzają się z tym co wysłałem z PC. Używam Atmegi 16 na kwarcu 16 Mhz.Oto kody programów od strony PC i Atmegi: PC using ... namespace RS232 { public partial class Form1 : Form { public Form1() {...
Przy RS485 masy układów zawsze muszą być połączone, ze względu na dozwolone napięcie wspólne dla transceivera TMF - wszystko zależy tutaj od konstrukcji zasilaczy naszych urządzeń. Jeżeli układy zasilane są z zasilaczy transformatorowych to połączenie może być ale nie musi. W przypadku zasilania urządzeń z wbudowanego zasilacza impulsowego wielokrotnie...
a czy software'owa implementacja ma w ogóle sens? Jaki baudrate chcesz uzyskać? I czy chcesz implementować wersję asynchroniczną czy synchroniczną? Zakładam, że asynchroniczną, skoro piszesz, że ma się toto komunikować z AVRami. Z szybkich obliczeń wychodzi mi, że w wersji asynchronicznej, dla baudrate=115200bps i tzw. trybu NORMAL, w którym trzeba...
Dzięki za odpowiedź. Wiem jak to wygląda softowo. Bardziej mnie interesowało, czy taka operacja nie wiążę się z jakimś opóźnieniem (typu synchronizja USART'u z portami). Właśnie przestudiowałem w jaki sposób jest generowany zegar tzn. na podstawie AHB jest generowany APB zatem ten problem się sam rozwiązuje. Czy coś jeszcze mogłoby potencjalnie wprowadzać...
Zainstaluj CubeMx. Wygeneruj sobie kod inicjalizujacy i będziesz wiedział jak to jest zrobione. Nie wiem dlaczego pb11 jest dla Ciebie złe, ale jak będziesz miał Cuba i ustawiesz peryferia to bedziesz widzał wszystkie konflikty i możliwe alternatywne konfigyracje. Tu masz dla przemapowanych: (dla AC6) (wyciągnąłem tez niektóre makra dla jasności) [syntax=c]...
No to może zaproponuję własne podejście do USART w AVRasm2 (AVRStudio) : - Inicjalizacja (Częstotliwość zegara ustawiasz gdzieś wcześniej w kodzie #define F_CPU=14745600 - czy jakakolwiek inna, jaka jest, oraz #define USART_BAUD=19200 - mozna zmieniać do woli na odpowiednie ustawienia w terminalu, a zaglądanie do tabelek można sobie podarować) : #define...
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)...
Witam, od tygodnia próbuje poprawnie skonfigurować mój mikrokontroler at91sam7s256 do współpracy z pc'tem za pośrednictwem usarta (narazie kabel podlaczony do COM'a, docelowo modul bluetooth BTM220A2). Znalazłem w sieci kilka przykładowych konfiguracji usarta, które przetestowałem i działają teoretycznie poprawnie... w połowie :/ Otóż przy wysyłaniu...
Witam. Mam pewną zagryzkę z prędkością USART w mojej atmedze. Niezależnie od ustawionego Baudrate zawsze na diodzie mam około 30Hz co tak na oko daje śmieszną prędkość. Czy coś robię źle? W jaki sposób wycisnąć z tego coś więcej? Poniżej podaje kod który jedyne co robi to inicjalizuje Usart i w pętli wysyła znak i mruga diodą. #include <avr/io.h>...
Może program odbierający dane był ustawiony na 5 bitów? Ja ostatnio też walczyłem z UARTem na Atmedze8, proponuję po kolei: sprawdzić kable i ścieżki na płytce, użyć sprawdzonego software'u, zastosować odpowiedni kwarc (+filtracja kondensatorami) i baudrate i ustawienia w PC. Jak będę miał dostęp do programatora, to sprawdzę jakie fusebity mam zaprogramowane.
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.
a dlaczego nie może być w przerwaniu, masz takie wytyczne? jeśli jest w pętli głównej to musisz sobie policzyć ile czasu się może maksymalnie wykonywać cała pętla (między odbiorem poszczególnych danych) i porównać to z baudrate, i jeśli będziesz miał wyższą częstotliwość przybywania znaków na uart niż ich odbioru w pętli, to wtedy na bank możesz utracić...
Witam, Proszę o podpowiedź bo męcze się z użyciem przerwania do odczytania znaku z USART. Sama komunikacja jest sprawdzona bo działa przy użyciu prostych funkcji "odbierz_znak, wyslij_znak" Problem pojawił się gdy chciałem skorzystać z przerwania do odczytu znaku. Kiedyś korzystałem z kości Mega16, Mega32, itp z zapisu: [syntax=c]SIGNAL (SIG_UART_RECV)[/syntax]...
Ale to: [syntax=c]int main(void){ MYUBRR = 25; //baud rate = 2400 USART_Init( MYUBRR ); USART_Transmit(USART_Receive()); //wyślij odebrany bajt }[/syntax] nie działa tak jak zakładasz. To się wykona raz po czym procesor wejdzie w martwą pętlę. Ostatnią linię trzeba więc zapętlić. Druga sprawa - jeśli odbierasz śmieci to znaczy, że masz źle ustawione...
Wygeneruj sobie projekt w cube i podejrzyj. Jest to najszybsze i najprostsze. Dodano po 11 [syntax=c]void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct; if(huart->Instance==USART1) { /* USER CODE BEGIN USART1_MspInit 0 */ /* USER CODE END USART1_MspInit 0 */ /* Peripheral clock enable */ __USART1_CLK_ENABLE(); /**USART1...
A mógłbyś to jakoś opisać kodem ? [syntax=c]#define BAUD0 9600 //BaudRate (bps) #define MYUBRR0(F_CPU/16/BAUD0-1) //Przerwanie co 0.1s ISR(TIMER1_COMPA_vect) { uint8_t key; static uint8_t lkey=0; key = (PINC & (1<<3)); //przycisk NPN na PC3 if(!key && lkey) UDR='k'; //wyślik "k" jako znak, że wciśnięto przycisk lkey = key; } //przerwanie...
Witam! Zaczynam przygodę z STM, na płytce mam polutowany układ STM32L052C6T6 z podłączonym do USART2 modułem Bluetooth o oznaczeniu RN4871. Moduł wydaję mi się, że działa. Na telefonie w aplikacji BLE Smart Discover moduł jest widoczny. Póki co korzystam z pomocy bibliotek Hal, przy czym nie jestem pewny w jaki sposób przy pomocy tej biblioteki wysyłać...
Zastosowałem się do twoich rad stworzyłem klasy uC tak, żeby nie definiować na początku biblioteki port.h tylko w ustawieniach projektu musi być wybrany mikrokontorler: cały plik port.h wygląda następująco pogrubiłem te zmiany które wprowadziłem: #if defined (__AVR_ATmega328PB__) #define UCSRB UCSR0B #define TXEN TXEN0 #define RXEN RXEN0 #define RXCIE...
#include <stdio.h> void main() { TRISC = 0b10000000; SYNC = 0; SPEN = 1; SPBRG = 129; //9600 bps dla kwarcu 20MHz TXEN = 1; CREN = 1; printf("Hello"); while(1); } Po pierwsze upewnij sie, ze masz dobrze ustawiony baudrate. Jesli printf nie zadziala od razu (moze trzeba np. u Ciebie odhaczyc jakas opcje...
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...
Po prostu dlatego ze tworca BASCOMa nie zrobil takiej mozliwosci. Inaczej mozna to zrobic bardzo prosto: wpisujac nowa wartosc do rejestrow UBRRH I UBRRL (kolejnosc wpisywania jest wazna). Oczywiscie wpisywana wartosc trzeba wczesniej obliczyc bo w takim wypadku BASCOM juz jej sam nie obliczy. Rozumiem , Dzięki , poczytałem o dyrektywach i ich podziale...
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...
Dzięki za odpowiedź, ale niestety Twój kod poza czyszczeniem flag DMA nie różni się niczym od mojego. A to czyszczenie nic nie pomogło. A jeśli można wiedzieć ile wynosi BAUDRATE u Ciebie (wartość HIGHSPEED)? I od razu czy wiesz ile wynosi rzeczywista maksymalna przepustowość USARTa, bo w DS piszą 10.5Mbps ale wiem, że to są bajki.
Po co najpierw ustawiasz UCSR0B na 0 a potem na 0x18. Daj odrazu 0x18. reszta ustwiń cacy. Wrzuć w pętle wysyłanie znaku : for(;;){ usart_transmit0('p'); } i sprawdź to na hyper terminalu lub dowolnym innym terminalu. Przy kwarcu 16MHz masz 9600 baudrate, 8bitów , 1 stopu bez parzystości. Takie parametry ustaw na terminalu....
Witam, Niestety poddaje się bo nie wiem czego mi brakuje w kodzie albo co robie nie tak. Nie moge odebrac na komputerze zadnego komunikatu z plytki DEV. Kontrolka na USB - USART swieci się od RX czyli cos jest nadawane (ciagle swiatlo) ale nic nie odbieram Załączam poniższy kod w celu debuggingu: #include <string.h> #include "stm32f4xx.h"...
W ramach wyjaśnień. Chcę napisać program który odbierze TYLKO jeden znak po przez USART(jak odbiorę już jeden to myślę, że z większą ilością znaków sobie poradzę). Program który umieściłem pobiera z przerwania zawsze 0xFF, niezależnie od tego co wysyłam, czy z znakami końca czy bez. Jaki terminal polecacie, może kiedyś coś przestawiło się "samo". Układ...
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 ); /*...
Nie musisz odblokowywać ani obsługiwać przerwań timera. Jeśli raz włączysz wyzwalanie ADC, będzie ono włączone (raczej - co prawda STM32F1 są strasznie skopane, ale chyba nie aż tak). No ale jak widać nie działa, nawet nie wchodził w przerwanie więc nie wiem już jak to powinno być poustawiane. DMA już chyba wysyła dobrze: 00 00 00 00 00 00 00 00 46...
Witam. Po zainicjowaniu komunikacji UART, ustawiam moduł w nieskończoną pentlę, wysyłającą co pewny okres czasu jeden znak. Prędkość ustawiona w BTM - 19200, tak samo inicjuje tą predkość w programie (25.04666=25). Po wgraniu programu do mikrokontrolera(ATMEGA8) rozpoczyna sie wysyłanie danych. I w rzeczywistości komunikacja następuje. Jednak nie wygląda...
Najprawdopodobniej w opcjach projektu nie masz zdefiniowanego HSE_VALUE, czy którejś innej częstotliwości (w tej chwili nie pamiętam) i biblioteka źle oblicza prescallery do baudrate w wyniku czego nadajesz z prędkością inną niż 9600.
witam! Czy udało się komuś odpalić USART-a przy wewnętrznym zegarze 1MHz? Procek mega8535. U mnie wysyła śmieci, a według datasheet'a max błąd dopasowania częstotliwości wynosi 0.2%*, czyli nie powinno być źle... Używam terminala "Bray'a", który umożliwia ustawienie dowolnej prędkości transmisji - "przeskanowałem" od 6.500 do 11.000 b/s z krokiem co...
Witam. Mam nadzieję, że się nie narażę tym tematem, ponieważ był już wielokrotnie opisywany - jednak uzmysławia to jak wiele problemów może wyniknąć przy obsłudze jednej rzeczy. Sprawa jest prosta, napisany program w WinAVR20070525 nie obsługuje portu USART w mikrokontrolerze ATmega8515. Układ jest podłączony do COM'a poprzez inwerter MAX232. Podczas...
Tak wszystko ustawiam i próbuje wysyłać. #define FOSC 1000000 #define BAUDRATE 9600 #pragma code void main(void) { Delay10TCYx(5); // Delay for 50TCY InitializePorts(); InitializeUSART(); InitializeOSC(); Delay10TCYx(5); // Delay for 50TCY TXSTAbits.TXEN = 1; // Enable transmission Delay10TCYx(5);...
Po inicjalizacji portu DBGU próbuję wysłać znak do terminala. Sterownik portu napisany jest w trybie odpytywania (w najprostszy sposób). void DBGUPOL_Open( ULONG baudrate ) { PMC_OpenPeriphClock( AT91C_ID_SYS ); AT91C_BASE_DBGU->DBGU_IDR = 0xFFFFFFFF; PDC_DisableAndResetWrite( AT91C_BASE_PDC_DBGU ); PDC_DisableAndResetRead(...
Witam Testuje transmisje poprzez USART asynchroniczą, narazie na kablu, lecz nie każda ramka danych dochodzi(BAUDRATE=2400). Pytam się czy procki muszą być stabilizowane kwarcem, żeby poprawnie taka transmisja szła. Drugie pytanie dotyczy Attiny2310 w rej. UCSRC nie ma bitu URSEL, w atmedze jest, jednak jak wyłącze ten bit z atmegi8 to transmisja pada...
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ść.
Fajfer2 jesteś pewny, że to jedyny sposób wysyłania danych bo na atmedze 128 mam zrobione w podobny sposób jak tutaj i działa bezproblemowo. Ok działa. Po prostu BaudRate był źle ustawiony. Powinno być tak: unsigned int baud=51; UBRRH = (unsigned char)(baud>>8); UBRRL = (unsigned char)baud; //prędkość transmisji 19200
Witam serdecznie. Mam taki problem, że kiedy przesyłam jakiś znak poprzez USART do mikrokontrolera i on ma powrócić do terminala to poprawne dane otrzymuję tylko na zasilaniu z przejściówki USB->RS232. Jest to zasilanie z portu USB. Kiedy mikrokontroler zasilę z zasilacza ATX to mam błędy w transmisji i to spore. Baudrate ustawiłem na 4800. Czy ktoś...
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 ?
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...
Skąd pewność, że Twoje funkcje do konfiguracji GPIO są poprawne? Czemu do obliczeń baudrate bierzesz akurat 84MHz - czy Twój układ pracuje z taką częstotliwością? 4\/3!!
U S ART a UART to nie to samo - od tego zacznijmy. UART może rzeczywiście nadawać tylko w standardzie "RS232", czyli asynchronicznym szeregowym, o określonym baudrate, gdzie do komunikacji służą 2 linie (po jednej na każdy kierunek transmisji). Natomiast obecny w wielu procesorach AVR i XMega AVR moduł U S ART może pracować zwykle (zależnie od konkretnego...
Podaj częstotliwość kwarcu, wybraną prędkość (baudrate), oraz kod - którego używasz (po stronie Atmegi na początek).
Może tradycyjnie nie zdefiniowana wartość HSE_VALUE w opcjach projektu, skutkiem czego jest błędny baudrate?
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.
(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.
Tutaj masz kalkulator BSEL i BSCALE dla ATXMEGA: JarekC
Próbuje napisać coś w stylu klasy ale stanąłem w miejscu. Klasa ma obsługiwać usart. W pliku H zadeklarowałem strukturę która przechowuje m.in. wskaźniki na funkcje, a w konstruktorze do tych wskaźników przypisuje funkcje. Plik h // usart type powinien być różny w zależności od obiektu który wywołał funkcję! //while (!(module->usart_type->SR & USART_SR_TXE));...
schemat jest następujący - standard: 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 = GPIO_Mode_Out_PP; GPIO_Conf.GPIO_Speed = GPIO_Speed_50MHz;...
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...
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);...
Napisałem program obsługujący komunikację RS232 dla płytki STM32 P103: - dokumentacja płytki - schemat Niestety łącząc docelowo przez konwerter RS232 -> RS485 i podłączając do serwomechanizmu RS28 dynamixel podłączyłem raz zasilanie 15V, 1.2A na lini danych RSa... I tu pierwsze pytanie... możliwe, że szlak trafił konwerter i RS232 na płytce? Sama...
Witam, mam problem z transmisją UART. Działam na płytce Discovery stm8l. Próbuję od jakiegoś czasu dodać do projektu standardowego (projekt Discover ściągnięty ze strony st) transmisję z Hyper Terminalem. Z tego co zdążyłem się zapoznać to porty PC2 i PC3 są zarezerwowane już dla wyświetlacza. Pozostają porty PA2, PA3 oraz PC5, PC6. W datasheet sterownika...
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...
Witam. Napisałem poniższa bibliotek do obsługi DS18b20. Po wysłaniu sygnału RESET (0xF0) otrzymuje od czujnika temperatury sygnał PRESENCE (0xE0). Problem napotykam w chwili odczytu danych z scratchpada. W tablicy w której mam przypisane dane z czujnika są zera ;/ [syntax=c] void one_wire_init(void) { RCC->APB1ENR |= RCC_APB1ENR_USART2EN; RCC->AHB1ENR...
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. Faktycznie od komórki 0x0C zaczynają się wartości AD AE AF B0 B1, ręcznie wbite przeze mnie na progamatorze. Ale przystopowało mnie na najprostszej sprawie. Napisałeś że dane są w...
Witam. Niedawno otrzymałem takie oto zadanie projektowe: Zbudować układ wyświetlający na ekranie lcd pole poprawnie i niepoprawnie odczytanych miejsc szczególnych z tablicy umieszczonej przed kamerą. Realizacja połączenia komputer->układ przez rs232 i baudrate 19200. Dodatkowo taki układ miał być zrealizowany na attiny2313 i sterowniku hd44780. Wydumałem...
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...
Witam, Próbuję korzystać z biblioteki Peter Fleury do obsługi usart-u, której listing znajduje się poniżej: PLIK uart.c /***************************************... Title: Interrupt UART library with receive/transmit circular buffers Author: Peter Fleury <pfleury(at)gmx.ch> http://jump.to/fleury File:...
Fakt ilość informacji które podałem jest znikoma :P, urządzenie które usiłuje zbudować ma za zadanie kontrolowanie świetlików LED, na podstawie informacji uzyskanych poprzez RS - 485 z głównego sterownika, sterownik świetlików generuje odpowiednią sekwencję (sygnał PWM o zadanym wypełnieniu i pulsacji). Problem w tym iż nie do końca mam pomysł jak wygenerować...
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....
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...
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:
Proponuję opierać się na ASF jako pomocy w zapoznaniu się ze procesorami xmega. Z całego ASF do UART'a wykorzystuję tylko funkcję do wyliczenia parametrów generatora fraktalnego a reszta to moje własne funkcję. Przykładowo dla UART'a używam takich funkcji (usart_set_baudrate pochodzi z ASF) : [syntax=c]void usart_init(PORT_t *port, USART_t *usart, uint32_t...
Fuse bits ustawiłeś na 4000000 MHz? W IDE (kontrollerlab) mam ustawione 1 MHz, ale teraz zmieniłem na 1000000UL Pokaż co jest w uart.h. To jest z tej bibloteki: i biblioteki Pokaż schemat. Brałem go z polskiej książki o programowaniu rs232 w Bascomie: max232 + 4x10uF + 100nF Po pierwsze czy ustawiłeś odpowiednio prędkość ATmegi ? No w kontroller lab...