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. Posiadam mikrokontroler STM32F429 na płytce 32F429IDISCOVERY. Napisałem obsługę wysyłania i odbierania znaków przez USART, jednak program nie pracuje. Program przedstawia się następująco: -Załączam taktowanie do układu USART2: -Konfiguruję piny D5 (Rx) i D6 (Tx) jako alternatywne: - Konfiguruję układ USART2 do pracy: - Piszę funkcję obsługującą...
Masz rację, że szkoda całego tygodnia na taki problem:). Oto cały kod: Main: podłączenie do STM'a wygląda nastepująco: RxD do PA10, TxD do PA9. Więc nadal stoję w miejscu, ale nie poddaje się;).
Zmieniłem to trochę tak, że wysyłam tylko '3'. Czy o to chodzi? Odbiera mi na PC tą trójkę ale razem z nią krzaki ;/ [syntax=c]/* Includes */ #include <stddef.h> #include <stdio.h> #include "stm32l1xx.h" //defined USE_STM32L_DISCOVERY #include "discover_board.h" #include "stm32l_discovery_lcd.h" /* Private typedef */ /* Private define */...
Witam, Postanowiłem opanować DMA. Zacząłem od USART'a i chciałbym to zrealizować. Moje problemy: 1. wysyłanie w konkretnym momencie(np. po naciśnięciu przycisku) 2. odbieranie danych 3. odpowiedni dobór DMA_BufferSize - wskazówki Konfiguracja: RCC_APB2PeriphClockCmd(RCC_APB2Perip... ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Perip...
Bawię się USART'em na F0 przesyłając między dwoma prockami testowy bajt, Wszystko mi działa, ale nie mogę dojść, dlaczego muszę wprowadzać po wysłaniu danych do drugiego procka delaya(?). Bez niego testowe echo nie działa prawidłowo. Obecnie mam przebiegi jak na poniższym zdjęciu (transmisja bardzo wolna póki co): Gdzie kanał 0 i 2 to crossy TX/RX procków,...
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, z uwagi na to, że bez pośredniego układu nie utworzę komunikacja stm->PC po rs232, zatem chcę wykorzystać do komunikacji dwa dostępne w procesorze USART'y, jeden działa w trybie nadajnik drugi odbiornik. Na płytce połączyłem jedynie pin PA9 - USART1_TX z pinem PC7 USART6_RX, to chyba wystaczy? O ile mam wrażenie, że nadawanie danych przez USART1...
Problem mój jest taki, chciałbym zrobić robota mobilnego sterowanego poprzez USART kablem RS232, w wyniku odebranego znaku ASCII robot ma za zadanie poruszać swoimi silnikami. Moim problem jest, iż chciałbym aby wysyłając sygnał jazdy np. do przodu znakiem np 'w', mikrokontroler zliczył mi czas trwania jazdy i wysłał z powrotem do PC. Probowałem różnymi...
Witam! Przed napisaniem tematu znalazłem coś takiego Twoja funkcja USART_Receive() sprawdzi, czy flaga RXC jest ustawiona i - jeśli nie - zakończy działanie, zwracając właściwie trudno mi określić co. Trudno określić, bo funkcja zwraca niezainicjowaną zmienną, której - w przypadku, gdy RXC=0 - nie przypisujesz żadnej wartości. Nie wiem też co z tym...
Witam rcall nie przeszkadza USARTowi... i całe szczęście, bo musielibyśmy wyrzucić wszystkie AVRy do kosza ;) Problem jak zwykle tkwi w programie. W procedurze obsługi przerwania USART_TXC założyłeś, że możesz włożyć do UDR kolejny bajt, bez sprawdzania, czy jest on pusty. Poniekąd jest to założenie słuszne, ale nie w Twoim programie. A problem polega...
Usart odbiera co do niego nadajesz, on nie wie co ciebie z tego interesuje, to juz jest sprawa programisty.
Dziękuję za odp. W takim razie mam pytanie dlaczego drugi USART (RXD1 oraz TXD1) mają stany wysokie gdy procesor nic nie robi (w tej chwili nie wysyła nic ani nie odbiera Pętla "Main: rjmp Main" - ten USART działa poprawnie odbiera i wysyła? RXD0 jest też w stanie wysokim i odbiera dane natomiast TXD0 ma stan niski (nie mogę podciągnąć rezystorem 1k...
Byłbym zapomnił już że taki temat stworzyłem... tak więc jeśli to kogoś interesuje jeszcze to co do mojego pytania to przetestowałem to i ten bajt, który jest odbierany na kompie to dokładnie te 8 bitów które z mikrokontrolera poszło przez USART do FT232 :)
Wysylajać dane z terminalu "AT560" program odpowiada mi "AT50", czemu nie odpowiada "AT560" #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/signal.h> #define F_CPU 16000000UL #define BAUD 9600 #define MYUBRR F_CPU/16/BAUD-1 char* wys; void usart_init(unsigned int ubrr) { UBRRH...
Witam czy może ktoś spojrzeć na ten prosty kod i powiedzieć gdzie tkwi problem. Gdy wysyłam jakiś znak z klawiatury przez Hyper-Terminal, to procesor ma go od razu zwrócić, a on zwraca jakieś dziwne znaczki. Dodam, że w obsłudze przerwania występuje takie ostrzeżenie przy kompilacji: "usart.c:60: warning: passing argument 1 of 'USART_puts' makes pointer...
Witam Korzystam z tutoriala, , wszystko mi pięknie działa(tzn dane sa odbierane i wysyłane). Jednak nie wiem jak przerobić kod tak by dane były wczytywane po jednym znaku: Wysyłam np. 123 i po pierwszym zczytaniu dostaje 1 i zapisuje ja do jakieś zmiennej int , następnie wywołuje funkcje jeszcze raz dostaje 2 i zapisuje ja do drugiej zmiennej int,itd...
Witam. Niestety potrzebuje znów pomocy - porady. Zakupiłem wyświetlacz prezentowany już na forum.... O ile jeden z Kolegów pokusił się o napisanie bibliotek na c ( które działają) o tyle ja muszę niestety zrobić to na bascomie. Potrzebuje wysyłać dane w formacie 50 05 05 82 01 10 00 64. 50 05 - nagłówek ramki 05 - ile danych 82 01 10 00 64 - dane wysyłam...
Witam, mam problem przeszukałem wiele forów i próbowałem kilku sposobów. Może ktoś mi doradzi, więc mam problem z zapisaniem ciągu znaków w Atmedze (tzn. odbieranie). Wiem że należy zastosować najlepiej tablice do tego celu. [syntax=c]char odebrana_tab[]; if(odebrana_dana ==! 0) // jezeli dana nie jest zerem char i = 0; odebrana_dana = odebrana_tab[i++]...
Witam! Mam problem z odbieraniem stringów przez USART. Chcę, aby po wpisaniu do terminala na komputerze "abc", mikrokontroler odesłał "OK". Kod programu: [syntax=c]//#define F_CPU 14745600 #include <avr/io.h> #include <util/delay.h> #define USART_BAUDRATE 9600 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) unsigned char...
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ą...
[Bascom]Witam. Natrafiłem na pewien problem. Chciałem by po otrzymaniu ramki 10 01 0A 01 otrzymał zwrot w postaci "dana 1" a wysyłając ramkę 10 01 0A 02 odpowiedz "dana 2" Problem wygląda następująco: - nie za każdym wysłaniem jest reakcja - odpowiedz na wysłane dane - odpowiedz nie przychodzi raz tylko w koło i nie można tego przerwać Dodatkowo powiedzmy...
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...
Witam Posiadam płytkę STM32F4 Discavery chciał bym uruchomić USART6 ale przesyła mi złe dane. Sprawdzałem już zegary ustawienia usart ale nic mi już nie przychodzi do głowy. Zegary ustawione są przy pomocy funkcji SystemInit(). Cały plik sytem_stm32f4xx.c generowałem przy pomocy narzędzia STM32F4xx_Clock_Configuration_V1.1.0 (w excelu). Chcę użyć USART6....
Witam Od jakiegoś czasu próbuję przeprowadzić odbiór danych z UART z wykorzystaniem DMA. Jeśli chodzi o konfigurację UART to jest ona przeprowadzona prawidłowo, ponieważ mogę dane wysyłać jak i odbierać ręcznie. Problem pojawia się przy próbie zaprzęgnięcia do odbioru DMA. Dane w buforze odbiorczym nie są aktualizowane (po zainicjalizowaniu bufora wartościami...
Witam, podłączyłem do mojej STM moduł Bluetooth, następnie chcąc wysłać do płytki przez program RealTerm dane np, liczbę 1 , zostaje ona zapisana w pamięci uC jako 254, 2 jako 252, 3 jako 254 itd. Dopiero przy 8 następuje zmiana na 254 , a później ponownie wraca naprzemiennie 252 i 254 . USART na płytce mam skonfigurowane w sposób podany przez producenta...
Witam odwiedzających temat. Napotkałem na problem przy konfiguracji USARTu. Chcę ustawić jego parametry następująco: prędkość : 19200 bity danych: 7 bity stopu: 2 parzystość: parzyste Moja konfiguracja wygląda następująco: [syntax=c]USART2->CR1=0x0000; USART2->CR2=0x0000; USART2->CR3=0x0000; USART2->BRR = 42000000/19200; // predkosc USART2->CR1 |= USART_CR1_PCE;...
Witam, kolegów mam prośbę jestem początkującym z stm i aktualnie bawię się komunikacją poprzez usarta do nauki korzystam z różnych źródeł jak również z poradnika z tego forum posiadam taką płytkę skonfigurowałem sobie USARTA1 tak zwane echo z terminala ale niestety jakieś głupoty odbieram w terminalu, nie wiem co robię nie tak poniżej kod [syntax=c]...
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...
Witajcie, Posiadam płytkę STM32F4DISCOVERY z procesorem STM32F407VG. Używam pakietu Eclipse + linaro + openOCD skonfigurowanego wg opisu Freddiego Chopina. Uruchomiłem również przykładowy program stm32f4_blink_led. Chciałem dołożyć obsługę USART1. Konfigurację napisałem w pętli main. [syntax=c] int main(void) { volatile uint32_t count, count_max = 10000000;...
Witam, Od kilku dniu próbuję uporać się z komunikacją po RS485, no i napotkałem problem z którym sobie nie radzę. Korzystam z płytki testowej ZL2AVR ( ) oraz układu MAX485 ( ) (pomiędzy zasilanie a masę kondensatory 47uF i 100nF, piny !RE i DE połączone razem i podłączone do PB0 uC, RO do RxD od uC, a DI do TxD, B idzie do wejścia przejściówki -485,...
Właśnie nad tym się skupiłem, nad prędkością. Przy czym zmieniłem kierunek transmisji i sobie wysyłam z procka znak 'G' do komputera. Dodano po 39 Ok znalazłem gdzie tkwi problem. HSE domyślnie ustawiony jest na 25MHz a ja mam w układzie 8Mhz. Teraz działa w obie strony tak jak należy na pierwszy rzut oka. Tematu jeszcze nie zamykam może pojawią się...
Dzięki Freddie Chopin za szybką odpowiedz. Sprawdziłem w debagerze czy po zejściu licznika (wartość CNDTR) do zera wyłącza się kanał DMA. Okazuj się iż jest nadal włączony. Twój kod zbyt wiele mi nie pomógł, wcześniej tez go spotkałem w innym temacie na forum. Na początku chcę przesyłać jeden bajt cyklicznie(czyli po każdym wywołaniu zdarzenia TXE),...
Próbuję rozwiązań ten problem już 2 dzień, niestety mało jest jeszcze materiałów na temat tego mikrokontrolera. Chciałbym skonfigurować USART6, tak by odbierać dane z aplikacji napisanej w pythonie na laptopie.Kod funkcji inicjalizacji USART: [syntax=c] /* Pliki nagłówkowe: */ #include <uart.h> /* Zmienne: */ uint8_t cUart6Container[200]; UART_HandleTypeDef...
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...
Witam, otóż mam następujący problem: timer wywołuje mi okresowo procedurę wysyłającą na RS jakieś dane. Jeżeli resetuje układ przez złącze RST poprzez zwarcie do masy przyciskiem lub też poprzez programator wszystko działa prawidłowo - znaki odbieram na terminalu. Ale gdy układ z procesorem zostanie odłączony i ponownie załączony, USART przestaje wysyłać...
Witam serdecznie. Zgodnie z tym: i tym: przy pomocy tego programu: Próbuję wysyłać dane z mikrokontrolera do termiana, ale ten niczego nie odbiera. Proszę o wskazówkę. Jestem początkujący. Dodano po 5 Już wiem w czym tkwił problem. Gdy program uruchamiam krokowo i jestem w petli for to dane się wysyłają. Za szybko ta pętla działa i dane za szybko są...
Hej, napisalem cos takiego na ATm8515, fuse_high=0xd9, uP pracuje na 1MHz, transmisja ustawiania na 8N1, bez parzystosći, 19200, 9600 i za każdym razem komputer odbiera od uP przekłamaną w całości transmisję. Coś zmaściłem, ale co?? Skończyły mi się pomysły.. Z góry dzięki, migod usart.c --------------------------- static volatile u08* data; void usart_init(u16...
Witam, mam problem z połączeniem po USARCIE tych dwóch procesorów. Sprawa wygląda następująco: atmega1284p ma być docelowo masterem, wysyła ramkę i w odpowiedzi dostaje ramkę zwrotną od atmega8. Obsługa ramek nie jest jeszcze napisana, na razie wysyłam 8 bajtów atmegą1284p i jeżeli wszystkie bajty zostają poprawnie odebrane, to atmega8 odsyła mi 11...
Witam. Proszę o pomoc w zrozumieniu podstaw. Atxmega128 (albo 256 - w tym momencie to nieistotne). Chciałbym przesłać po I2C dane z pilota. Posługuję się kodem: [syntax=c]TWI_MasterWrite(&twiMaster, SLAVE_ADDRESS_GLCD, //adres urządzenia Slave &test[0], //dane do wysłania 3); // ilość danych do wysłania [/syntax] Chciałbym wysłać następujący (przykładowy)...
Witam Na wstępie powiem że nie jestem ekspertem w C. Pisze programik działający na Atmedze16. Mam dwa dwa układy Ram i RTC i muszę się z nimi dogadać przez SPI. I się nie dogaduje. Zeby zapisać cos i odczytać z Ramu muszę zapisać (dla zapisu) kod rozkazu - 8 bitów, adres komórki zapisywanej - 24 bity i dane - 8 bitów. Przy odczycie analogicznie rozkaz,...
Witam, Napisałem program który wysyła kolejno bajty przez USART do drugiego urządzenia i jednocześnie odbiera bajty (taki powiedzmy full-duplex :)) . W zasadzie nic specjalnego program wygląda następująco: . Czy przyczyną są drgania styków? Wcześniej tą komunikacje realizowałem za pomocą DMA i przesyłałem hurtem 8 bajtów podczas jednego cyklu i ten...
//Najpierw musisz ustawić odpowiednie parametry //np tak Kod: unsigned char odebrane; //zmienna globalna - definujemy ja przed wszyskimi funkcjami unsigned - oznacza ze przyjmuje warotsc od 0 do 255 unsigned char zmienna; #include <avr\sfr_defs.h> //pozwala sterowac bitami code::blocks #include <avr\io.h> //wejscia_wyjscia avr...
Witam, od kilku dni próbuję wygrać nierówną walkę z programowym pwm i usartem na atmedze8. Wysyłam z nadajnika dane za pomocą USART (sprawdzane wielokrotnie na bank są dobre) do płytki z atmegą i serwomechanizmem. Jeżeli serwo jest sterowane bez ingerencji danych z USART to wszystko działa jak trzeba, w momencie gdy chcę wysłać gotowe dane do płytki...
Witam brać elektroniczną. Chciałem wykonać pewien projekt związany ze sterowaniem listwy RGB poprzez Atmegę8. Niestety natrafiłem na przeszkodę nad która siedziałem cały dzisiejszy dzień. Otóż uC zachowuje się tak, jakby cały czas dostawał informacje po UARcie. Testowałm to na płytce uruchomieniowej ZL2AVR. Nie doświadczyłem niczego takiego wcześniej....
Witam, Na jednym kontrolerze możliwe jest działanie równoległe dwóch przerwań od RX z USART1 i USART2 ? Mam taki problem że jak działam tylko na USART2 to jest ok, w momencie gdy pojawia się w przerwaniu RX od USART1 to kaszani się to co odbieram w USART2..
Witam, Chciałem skomunikować ATmege128 z komputerem PC. Korzystając z manuala do tego kontrolera uzyskałem funkcję inicjalizującą: void USART_Init( unsigned int baud ) { /* Set baud rate */ UBRRH = (unsigned char)(baud>>8); UBRRL = (unsigned char)baud; /* Enable receiver and transmitter */ UCSRB = (1<<RXEN)|(1<<TXEN); /* Set frame...
Ja mam u siebie troche inaczej. Ale najlepiej skorzystać z datasheeta bezczelnie kopiując kod. Po co Ci to L po określeniu taktowania? Piszesz w WinAVR czy czymś innym? Init: #define FOSC 8000000// Clock Speed #define BAUD_GPS 9600 #define MYUBRR_GPS FOSC/16/BAUD_GPS-1 ////////////////////////////////////////... void USART_Init( unsigned...
Witam kod do nadajnika może wyglądać tak: #include <avr/io.h> #define F_CPU 1000000UL #include <util/delay.h> #include <avr/interrupt.h> //set desired baud rate #define BAUDRATE 1200 //calculate UBRR value #define UBRRVAL ((F_CPU/(BAUDRATE*16UL)&... //define receive parameters #define SYNC 0XAA// synchro signal...
Witam Mam prosty układzik max232 + attiny2313 i działa ładnie ale jest takie dziwne zachowanie przy rozłączaniu połączenia ze strony PC, otóż uC odbiera wartość 0. Dlaczego ? Nawet wykorzystanie np. bray terminal, klikam Connect i Disconnect. Po kliknięciu Disconnect uC odbiera właśnie 0. Ustawienia USART: void USART_Init( unsigned int baud )...
Cześć, Od kilku dni próbuję uruchomić obsługę pewnego modułu samochodowego, sterowanego poprzez magistralę CAN. Obsługa tego modułu wymaga wysłania pewnego zapytania, a następnie odebrania 4 ramek CAN odpowiedzi modułu - łącznie trzeba odebrać 32 bity danych. Udało mi się uruchomić nadawanie zapytania oraz odbieranie odpowiedzi, jednakże trzecia ramka...
Ustawiłem w terminalu na PC baud 300 i o dziwo odbieram 0F - czyli to co wysyłam. Nie wiem tylko gdzie mam błąd skora w uP ustawiłem na 2400. Fuse bity też chyba ok. Dodano po 33 Już wiem co było źle. Po prostu wcześniej korzystałem z USARTa synchronicznego w którym inaczej oblicza się baud rate (Fosc=baud/2(UBRR-1)), a w asynchronicznym jest zamiast...
Strasznie dziwne rzeczy się dzisiaj dzieją z tym wszystkim, udało mi się uruchomić USART ale nie działał mój stary kod z którego korzystałem od dawna. W zasadzie to była biblioteka napisana w oparciu o datasheet. Nie działała poprawnie funkcja inicjalizacji i zadziałała dopiero funkcja z jakiejś strony internetowej. Teraz mam tak, że jak dodam w funkcji...
Witam, Mam problem z ustawieniem flagi podczas zakończenia odbierania ciągu znaku. Program pisany pod atmege 8. UART inicjalizuje w następujący sposób: [syntax=c] #define UART_BAUD 9600 #define __UBRR ((F_CPU+UART_BAUD*8UL) / (16UL*UART_BAUD)-1) void USART_init(uint16_t x){ UBRRH = (uint8_t)(x>>8); UBRRL = (uint8_t)x; UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<&...
Witam! Problem polega na tym iz atmega komunikuje sie z PC, natomiast nie komunikuje sie z GPS.Pomimo prawidlowych predkosci oraz identycznego podlaczenia. Posiadam: - atmega644p - evb sim548 (gotowa plytka dostarczona przez producenta simcom, zasilona, z wyjsciem rs232 poprzedzonym jakims klonem max232) - plytka z max232n Pewniki są takie: # PC odbiera...
Witam, Ostatnio mam przyjemność zabawy z płytką STM32F746NG Discovery. Mam problem z usartem... Nie jestem w stanie odebrać znaku w konsoli mojego komputera. Chciałem zrobić tak samo jak to się robi np.: w Nucleo, czyli korzystam z USARTA2, piszę odpowiednią funkcję do wysyłania znaków i w whilu daje printf... ale tutaj to nie działa. Wszystkie parametry...
Dostałem taki log przy kompilacji: [syntax=c]startup/startup_stm32.o:(.isr_... undefined reference to `WWDG_IRQHandler' startup/startup_stm32.o:(.isr_vector+0x4... undefined reference to `PVD_IRQHandler' startup/startup_stm32.o:(.isr_vector+0x4... undefined reference to `TAMP_STAMP_IRQHandler' startup/startup_stm32.o:(.isr_vector+0x4... undefined...
Dzień dobry, mam problem z odbieraniem danych w terminalu poprzez USARTa. Pracuję na STM32f052R8 do tego konwerter rs232 pl2303. Wysyłając jeden znak terminal czasem odbiera dobrze, a czasem inne znaki. Przy wysłaniu słowa "Test" pojawia się Bluescreen. Moje pytanie do Was, co powoduje Bluescreena ? Wadliwy kod czy sterowniki ? I dlaczego terminal wyświetla...
Nie korzystam z systemInit ani zadnej innej biblioteki, cały kod który mam jest napisany w 100% przeze mnie. Czyli dobrze założyłem, to 16Mhz, pytanie ktore dalej pozostaje bez odpowiedzi to co jest nie tak ? :( Chyba jednak nie cały. Nie napisałeś nic o środowisku - obejrzyj SystemInit(). Najbardziej nie tak jest to, że nie pokazałeś poprawionego...
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 następujący problem. Buduje sobie lokalizator. Przez USART0 komunikuję się z GPSem (GPS wysyła dane co 1s) i tu komunikacja przebiega jak należy. Natomiast przez USART1 komunikuję się z GSMem. W tym przypadku wysyłanie działa poprawnie, natomiast odebrane dane zawierają tylko dwa pierwsze i dwa ostatnie znaki. Sprawdzałam procka RealTermem...
Witam, mam problem. Mam podłączony mikrokontroler ATmega8 do komputera przez przejściówkę USB<->RS232 UART TTL opartą o układ PL2303HX firmy Prolific. Mikrokontroler ma ustawione standardowe taktowanie 1 MHz. Kod, którym zaprogramowałem ATmegę8: [syntax=c]#define F_CPU 1000000UL #define FOSC 1000000UL// Clock Speed #define BAUD 19200 #define MYUBRR...
Na początek przypomnijmy, czym są UART i USART. UART to uniwersalny asynchroniczny odbiornik / nadajnik, a USART to uniwersalny synchroniczny / asynchroniczny odbiornik / nadajnik. Jak wskazują ich nazwy, te dwa elementy sprzętu są bardzo podobne. W rzeczywistości, USART są UARTami, które mogą komunikować się nie tylko asynchronicznie, ale również zapewniają...
Jeden kanał DMA odbiera dane z SPI i zapisuje je do bufora w RAM. Drugi kanał DMA zapisuje dane z bufora w RAM do USARTa. Jeśli użyjesz dwóch różnych buforów (zmienianych po zakończeniu operacji), to całość powinna działać całkiem nieźle i w zasadzie większość zadań będzie wykonywana w przerwaniu od zakończenia transferu DMA. Pewnym problemem jednak...
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"...
Jakieś 4 dni męczyłem się żeby uruchomić transmisję pomiędzy Atmegą a kompem po rs232. Niezmiernie zaskoczyło mnie to, iż wszystko zaczęło działać gdy bity:UCSZ0,UCSZ1,UCSZ2 ustawiłem na 0. Czyli (według informacji Atmela) ramka danych miała 5 bitów, a przesyłałem dane 8 bitowe. Przy ustawieniu tych bitów na ramkę z 8 bitami danych nic nie chodzi:nie...
Komunikuję się z komputera PC z atmega8. Kontroler pracuje na wewnętrznym oscylatorze ustawionym na 8MHz. Prędkość transmisji w celu minimalizacji błędów ustaliłem na 9600 baud. Problem polega na tym, że błędy w transmisji zdarzają się niemal stale:(. Średnio udaje mi się przesłać prawidłowo co 4-5 bajt. Co może być tego powodem? Czy może być to wina...
Witam. Mam problem z połączeniem się z ATmegą 2561. Wcześniej wszystko chodziło dobrze do czasu aż wgrałem poprzez avr studio program do obsługi USART0. Użyłem do tego programatora USBisp z wgranym STK500v2. Nie ustawiałem żadnych Fusebitów (domyślne AVR Studio). Teraz nie mogę się połączyć z nim w żaden sposób. Próbowałem również przez ISPProg i STK200....
Witam. Najpierw na Windowsie napisałem prosty program w bascomie do komunikacji przez rs232(Program ma dwie komendy pierwsza odbiera coś przez rs232 a druga to wysyla i tak w kułko), w terminalu od bascoma wszystko działa. Gdy użyłem Open USART Termianal, nic się nie działo więc wyłączyłem go i przeszłem z powrotem do terminala w bascomie gdy nacisnąłem...
Witam wszystkich! Mam pewien problem, który co prawda rozwiązałem, ale rozwiązanie te mnie nie zadowala. Do rzeczy. Postanowiłem napisać funkcję, która jako argument pobiera napis i po znaku wklada do UDR'a. Najpierw mój program wyglądał tak: #define F_CPU 1000000L #define BAUD 9600 #define MYUBRR F_CPU/16/BAUD-1 #include <avr/io.h> #include <util/delay.h>...
np tak: źródło jest wygenerowanie automatycznie przez Codevision ale jak się przyjżysz to załapiesz o co chodzi :) i będzie to dla ciebie jakaś pomoc dla własnych modyfikacji #include <mega32.h> #define RXB8 1 #define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7 #define FRAMING_ERROR (1<<FE) #define...
Aha. rozumiem. Może ja wkleję kody programów dla lepszego zrozumienia całości problemu. Dodano po 2 Program do pierwszej atmegi, wysyłającej sekwencje 4 danych co 20 ms #include<avr/io.h> #include<util/delay.h> #include<uart.c> #include<HD44780.c> #include<stdlib.h> unsigned char dana[4]; int i=0; void Dana_Init()...
Czy ten zapis jest koniecznie potrzebny: USART1->SR=0x80;. Powinno działać bez ingerencji w rejestr SR w przerwaniu. Witam! Pewnie masz rację bo z nim i bez niego tak samo nie działa dobrze. Nie jestem pewien, czy debugger mnie nie oszukuje odnośnie zawartości rejestrów, ale odczyt rejestru danych nie powoduje jego wyczyszczenia, jak chyba być powinno?...
Witam, zaczynam poznawać AVRki i mam pytanie odnośnie USART, poniżej mam funkcje nadającą i odbierającą. Łączę sie z atmega przez HiperTerminal i zauważyłem że jeśli z programu wyśle np. USART_Transmit('A') to w terminalu otrzymam 'A', więc nadawanie działa. Jednak kiedy chcę wysłać do avr jakis znak i ma odeslać go z powrotem to otrzymuję coś innego...
Przede wszystkim porzuć tą buibliotekę, przynajmniej w wersji klasycznej. I teraz od końca - odbiornik USART nasłuchuje cały czas i to nie angażuje procesora. Ba, np. w takiej XMEGA E5 procesor można nawet uśpić, a USART pracuje i jak zajdzie potrzeba to go wybudzi. To na czym powinieneś skupić swją uwagę to przerwania. A konkretnie przerwanie odbiornika...
Inicjalizacja [syntax=cpp] void uart::init(unsigned int myubrr) { /* Ustala pr�dko�� transmisji */ UBRRH = (unsigned char)(myubrr>>8); UBRRL = (unsigned char)myubrr; /* W��cza odbieranie i wysy�anie*/ UCSRB = (1<<RXEN)|(1<<TXEN); UCSRB |= _BV(RXCIE); //włączenie przerwania od odbiornika /*...
Witam wszystkich Problem wygląda następująco, nie mogę odebrać żadnych danych za pomoca uarta1 atmegii 128 (poprawnie wysyła ale nic nie odbiera ;/ ) Prosiłbym o wszelką pomoc, poniżej wklejam programy inicjalizacji i odbioru: [code][syntax=c]void USART_Init( unsigned int ubrr, unsigned int port) { switch (port) { case 0: /* Set baud rate */ UBRR0H...
static void USART_TRANSMIT(uint8_t data) { while ( ! (UCSR0A & (1<<UDRE0))); // tu średnik UDR0=data; } static uint8_t USART_RECEIVE (void) { while ( ! (UCSR0A & (1<<RXC0)));// i tu średnik return UDR0; } Te pętle mają czekać. Jednak odbiór zrobił bym co najmniej tak: [syntax=c]static uint8_t USART_RECEIVE (void) { if(UCSR0A&(1<<RXC0))...
1) Za czekający na flagę while() w przerwaniu grozi ci publiczny lincz i ukamienowanie 2) ten ISR moze i nic nie gubi ale nigdzie nie masz flagi 'odebrałem_paczke_i_czekam_na_jej_obslug... Pewnie dlatego cos ci sie gubi gdzies glebiej w kodzie. Powinienes miec conajmniej podwójne buforowanie, o ile nie zupelnie oddzielne FIFO. Najlepiej tagowane......
Witam !!! Nie napisałeś jakiego używasz kompilatora a w przypadku przerwań, wiele od niego zależy. W standardzie ANSI C nie opisuje się przerwań więc wyglądają one różnie. To kod dla standardowego kompilatora CodeVision. Obsługuje tylko odbiornik w przerwaniu pakując odebrany bajt do bufora. Pzdrawiam (M.) #include <mega8.h> #define RXB8 1 #define...
Witam, bawie sie teraz usartem w atmega32. Uzywam AVR Studio i bazgrze w c. Odbieranie idzie mi bez wiekszego problemu ale zastanawiam sie nad takim tematem mam tak: uint8_t rs_command[sizeof(int)*8+1]; pozniej oczekuje z uzyciem case na 0x0d czyli enter. no i powiedzmy jak wpisze a11 enter to mam na pozycjach rs_command[0] a 1 1 2 1 tylko ze mnie interesuje...
Witam.Mam problem z obsłużeniem USARTów obu jednocześnie i mam pytanka: 1. czy prędkość transmisji obu musi być taka sama? 2.Jak oba obsługiwać na przerwaniach(może głupie pytanie ale nie mam pojęcia jak to zrobić :( ) Co w tym kodzie jest nie tak że nie che ruszyć??Może ktoś wie jak powinien wyglądać ten kod na przerwaniach bo zielony jestem :( Kwarc...
Witam. Jak obsługiwałem Attiny2313 w c i dane z RS-a odbierałem w przerwaniu. Nie mogłem dojść do ładu dlaczego to nie działa. Jak zacząłem szukać to okazało sie ze ten uC ma problemy właśnie z przerwaniami i usartem. Zmieniłem procek i ten sam kod zostawiłem tylko inny plik nagłówkowy wrzuciłem i wszystko było oki. Przepraszam, że to nie jest w sumie...
Niewidoczne zasilanie i masa maxa232 są podłączone. A tak jest zaprogramowany moj PIC (probuje wysłac narazie pojedynczy znak): #include <p18f2620.h> #include <stdio.h> #include <stdlib.h> #include <adc.h> #include <usart.h> #include <pconfig.h> #include <portb.h> #include <delays.h> #pragma config WDT...
Witam. Na początku wypada wspomnieć że jestem początkującym elektronikiem. Problem wygląda następująco: podczas próby wysłania jakichkolwiek znaków do PC przy pomocy Atmegi 162 i nadajnika RS232 Maxima komputer nie odbiera żadnych znaków(tylko chaszcze, zera itp.) Zaznaczam że: 1) Prędkość transmisji zarówno w kodzie jak i programie do przechwytu na...
Wiem że temat ten byl wałkowany wielokrotnie ale nie znalazłem rozwiązania. Chodzi mi o to czy ktoś może przetestować kod na jakimś sprawdzonym układzie pod kątem odbierania bajtu. Atmegę łączę bezpośrednio z ukłądem FPGA ale przeważnie odbieram liczbę 130. Jedyne na czym mogę podejrzeć odebrany bajt to wyświetlenie na kolorowym wyświetlaczu pixeli...
Witam, Od jakiegos czasu pracuje nad urzadzeniem komunikujacym sie z PC za posrednictwem USB. Ostatnio padla decyzja ze trzeba zastosowac ft232rl zamiast sprzetowego USB procesora poniewaz ftdi ma dobre wsparcie bibliotek na PC i ogolnie latwiej jest to stosowac niz uzerac sie z domyslnym sterownikiem wirtualnego portu COM w Windowsie. Ale teraz juz...
zgadzam się z przedmówcą ,włącz przerwania i odbieraj dane w przerwaniach ,dodaj : UCSRB = _BV(RXEN) | _BV(TXEN) | _BV(RXCIE); oraz : ISR(USART_RXC_vect) //przy odebraniu znaku { bufor = UDR ; }
Witam Wykonałem układ, który komunikuje się z PC przez moduł BTM-222. Komunikacja USART, asynchroniczna 38.400 kbps, 1 bit parzysztości, 1 bit stopu. Jeśli zadeklaruję na stałe, że wielkość bufora wynosi np. 30, i wysyłam z PC 30 znaków, to komunikacja działa bez zarzutu. Problem w tym, że chciałbym, aby program działał, przy różnej ilości odbieranych...
Witam. Napisałem prosty program do odbioru danych z akcelerometru MMA7455L. W zasadzie chcę odebrać tylko 8 bits output value X adres: $06. Jednak na wyjściu funkcji read_czujnik() dostaje wartość 9C która zapewne nie jest przypadkowo wartością wpisywaną w TWI_write(0x9C); na chwilę przed odbiorem. main.c [syntax=c]#define F_CPU 8000000UL #include <avr/io.h>...
Witam, mam pytanie dotyczące komunikacji ATMegi działającej na 5V z urządzeniem 3,3V. Jeżeli chodzi o transmisję z uC do urządzenia to zwykły dzielnik napięcia wystarcza, mam natomiast pytanie jak to jest z odbieraniem danych - powinno działać bez niczego tylko mam jedną wątpliwość, oba piny od USARTa są zawsze w stanie wysokim (odbiorczy też) czy więc...
Napis jest w pamięci programu, czyli we FLASHu. Żeby to zadziałało, musisz albo przenieść napis do RAMu, albo odpowiednio zmodyfikować funkcję, żeby czytała znaki z tej pamięci. Zainteresuj się funkcją pgm_read_byte i jej pochodnymi. Nieprawda, napis znajduje się w pamięci SRAM mikrokontrolera i pokazany kod jest zupełnie poprawny. Zazwyczaj przyczą...
Większość mierników panelowych ma małe wyświetlacze. Wskazania max 1999 (gdy oparte o ICL7106/7 lub podobne) lub mniej (np 199 gdy oparte o mikrokontrolery). Wersje na mikrokontrolerach przeważnie nie mierzą wartości ujemnych. Nie spotkałem takich z opcją pomiaru relatywnego. Czasem można spotkać funkcję HOLD. O komunikacji po USART czy USB można zapomnieć....
No cóż chyba faktycznie czegoś nie doczytałem. Przyznam że kwarc wybrałem na podstawie moich doświadczeń z uC ATmega gdzie częstotliwość 1,8432MHz zapewnia transmisję z błędami = 0 "zero". Sądziłem że w Xmedze będzie identycznie. Przecież prędkość 115200 jest idealna krotnością dla zastosowanego kwarcu. Jeśli ktoś jeszcze coś podpowie to dzięki, ja...
Teraz działa jak trzeba. Skoro wysyłam znaki to powinienem i odbierać. Mam jeszcze AT89S8252 zaprogramowany tak aby po rs wysyłał 1 znak i chcę aby atmega go odebrała. Lecz nie działa. Połączyłem procki zwykłym 2 żyłowym kablem - czy to wystarcza?
Ten terminal nie obsługuje transmisji 9 bitowej ale może odebrać dwa bity stopu co niestety może Ci powodować przeszkody w transmisji i generować błędy. Natomiast na mikro procesorach możesz to dowolnie odbierać.
Nie niedziała :( Cały czas odbieram albo 0xC0 albo 0xFF... Raz tylko zdarzyło się że odebrałem wartość taką jaką wysłałem. Czy może być to związane tym że procka z układem RS485 mam podpiętego na kabelkach (takie jest rozwiązanie zestawu)?
#include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 11059200UL #include <util/delay.h> #define UART_BAUD 19200 #define UART_SPD (F_CPU/(16ul*UART_BAUD))... #define clr(PORT, BIT) (_SFR_BYTE(PORT) &= ~_BV(BIT)) #define set(PORT, BIT) (_SFR_BYTE(PORT) |=...
Nie zwykły bufor Serialin Flaga od entera może się Ci przydać by na przykład po jej ustawieniu przenieść odebrany ciąg gdzie indziej, zresetować flagę i ustawić A= "". Zamiast Case Else można by ciąg budować np po: Case 65 to 90 Wtedy do ciągu dodawane były by tylko wielkie litery lub: Case 32 to 127 - czyli wszystkie znaki podstawowe bez sterujących....
Witam! Borykam się z następującym problemem. Przez USART1 pobieram dane z GPS i chce je przesłać dalej za pomocą USART0 (tymczasowo). Problem w tym, iż nie zawsze działa pobieranie odpowiedniej ramki ($GPRMC) Zrzut ekranu i kod programu poniżej.. proszę o jakieś wskazówki. Przerwania dla USART wydaje mi sie że działają poprawnie, dlatego nie załączam...