Witam, poniższy kod przedstawia inicjalizację USARTA1 i USARTA2: Dodano po 57 OK kod był poprawny, po prostu zlącze rx/dx z ktorego korzystałem nie zostało zwarte na płytce NULCEO. Cenna informacja dla potomnych należy zewrzeć SB63 SB62 oraz wylutować rezystory na SB13 i SB14
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, 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...
Witam Potrzebuję odebrać z komputera ciąg znaków (tablicę 10 elementową). Korzystam przy tym z funkcji: Poprawiono tytuł. LordBlick
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...
Mam ta samą płytkę. Może pobaw się tak jak ja: wysył przez DMA, odbiór w przerwaniu oto co starczy: [syntax=c]void SYSTEM_DMAConfig() { DMA_InitTypeDef DMA_InitStructure; DMA_DeInit(DMA1_Channel4); DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)(&USART1->DR); DMA_InitStructure.DMA_MemoryBaseAddr = (u32)SYSTEM_USART1BufferTx; DMA_InitStructure.DMA_DIR...
Witam. Zmagam się z konfiguracją USART na rejestrach. Widziałem dużo rozwiązań na rejestrach - ale dotyczyły one odczytu pojedynczych znaków - ja chciałbym odczytywać łańcuch znaków. Inne rozwiązania bazowały na funkcjach bibliotecznych. Do tej pory efektem było odczytywanie pierwszej litery bądź ostatniej i wypełnianie nią buffora. Jak to zrobić żeby...
Witam próbuję obsłużyć komunikację procesora Attiny2313 z komputerem poprzez port RS232. Komunikacja jest jednokierunkowa. Tylko procesor przesyła dane do komputera. Niestety mimo wielu prób nie chce mi to ruszyć. Bardzo bym prosił o sprawdzenie i pomoc w znalezieniu błędu. Poniżej wrzucam kod programu oraz schemat połączeń. Z góry dziękuję za pomoc....
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...
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, Mam problem z realizacją przerwania z USART3 na STM32L152RBxx. W momencie wywołania przerwania debugger zatrzymuje się na funkcji default_handler(). Poniżej umieszczam kod: main: #include "stm32l1xx.h" #include "stm32l1xx_conf.h" #include <string.h> void GPIO_Conf(void); void RCC_Conf(void); void NVIC_Conf(void);...
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...
Cześć, Naskrobałem programik, który powinien mi wysyłać przez UART co sekundę 1 z 3 stringów(czy tam tablic charów bo to w C) ale coś się buntuje. Problem polega na tym, że nie przesyła mi wszystkich wartości tylko jakieś ochłapy i to niepełne. Pytanie brzmi czy to ja mam błąd w kodzie? Gdzieś w USART_SendString ? Czy może jest jakiś maksymalny rozmiar...
Czemu nie działa jakieś błedy kompilatora, jak nie tak to może źle napisany kod i się przy większej optymalizacji wysypuje. Jak coś to wrzuć kod nie działający. Heh, no ok, wrzucam więc kod. Od razu jednak uprzedzam, że to jest mój pierwszy program w C i mogą występować rażące programistów błędy. Poza tym kod jest nieco rozlazły - dla mnie bardziej...
//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 paru godzin męczę się z niedziałającym USARTem na atmedze32. Na atmedze88 wszystko śmiga jak ma więc przejściówka USB<->RS232 jest ok. Brak zimnych lutów na płytce. Kwarc zewnętrzny (ustawiony jako EXTHIFXTALRES_258CK_4MS - przy czym nie wiem czy tak ma być dla kwarcu 16MHz). Kod zamieszczam poniżej: [syntax=c] /* * softPWM.c * * Created:...
Witam, postanowiłem przenieść swój układ z atmegi na atXmegę. Do tej pory do komunikacji urządzeń po serialu używałem biblioteki SoftwareSerial (Arduino) bo układ miał tylko 1 fizyczny serial. Teraz w Xmedze mam ich 5 :) Wgrałem [url=ten] programik i wszystko śmiga, komunikacja przez putty z xmegą działa. Postanowiłem pójść krok dalej i na ekran puttiego...
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:...
David.C - spokojnie :) Coś poradzimy. Po pierwsze wykonaj przejściówkę UART / RS232 i: - uruchom kod nadajnika sprawdzając poprawność wysyłanych danych z użyciem dowolnego terminala (osobiście polecić mogę real term), - następnie identycznie postąp z odbiornikiem wysyłając do niego dane z terminalu, - gdy wszystko będzie ok dopiero wtedy weź się za...
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...
Przykład dla F051, ale podejrzewam, że na F4 będzie tak samo: Inicjowanie DMA w main: [syntax=c]DMA1_Channel2->CMAR = (uint32_t)time; DMA1_Channel2->CPAR = (uint32_t)&USART1->TDR; [/syntax] W przerwaniu timera: [syntax=c] if (upd_time) { // init DMA for time string transfer DMA1_Channel2->CCR = 0;// disable DMA1_Channel2->CNDTR = sizeof(time);// no....
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....
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...
Dzień dobry! Mam taki kod: [syntax=c]#include <avr/io.h> #include <util/delay.h> //set desired baud rate #define BAUDRATE 1200 //calculate UBRR value #define UBRRVAL ((F_CPU/(BAUDRATE*16UL))-1) //define receive parameters #define SYNC 0XAA// synchro signal #define RADDR 0x44 void USART_Init(void) { //Set baud rate UBRRL=(uint8_t)UBRRVAL;...
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"...
Witam Mam pytanie dotyczące transmisji RS232 w atmedze8 do komputera. Chodzi o wielkość bufora w USART. Realizuje komunikacje z komputerem w sposób: wysyłam w petli znak, mikroprocesor w odpowiedzi wysyła ciag znaków po 10, po odebraniu w komputerze wysyłam nastepny znak i tak 10 razy obecnie. Z moich obserwacji wychodzi na to ze bufor moj musi miec...
Witam. Mam problem z komunikacją między btm-112 a atmega8 po usart, między btm - PC i Atmegą - PC nie ma problemów. Gdy z PC wysyłam komendy na uC to reaguje tak jak powinien, czyli gasi i zapala diodę, natomiast po połączeniu btm z uC zero reakcji. W czym problem? Prędkość transmisji się zgadza. Proszę o odp. na temat, taktowanie zostaje 1MHz! [syntax=c]#define...
Witam wszystkich Chciałbym się poradzić ponieważ mam problem z komunikacją USART. W czasie wysyłania stringów do terminala komputer się resetuje, pojawia się blue screen oraz komunikat problem z multiple_irp_complete_request. Sytuacja powstaje tylko w przypadku gdy komunikuję się poprzez przejściówkę USB-USART, gdy korzystam z modułu bluetooth wszystko...
ja mam tak, zawsze działało bez problemów: int USART_Transmit( unsigned char data ) { while ( !( UCSRA & (1<<UDRE)) ); UDR = data; return 0; } void USART_PutS (char *text) { while (*text) USART_Transmit(*text++); }
No ja wiem, że by wypadało:) Tylko nie wiem jaką;p W programie korzystam z takich bibliotek: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/crc16.h> #include <util/delay.h> #include <string.h> Jest jakiś plik nagłówkowy do obsługi USARTa?
Witam ! Piszę program regulatora temperatury. Używam czujnika ds18b20, którego obsługuje Attiny2313. Komunikacja z komputerem poprzez USART. Postanowiłem, że prześle 2B danych z czujnika ds18b20 i konwersje dokonam na komputerze, w terminalu otrzymuje śmieszne krzaczki, ale nie przejąłem się tym, napisałem w Delphi używając bibliotek CPort program do...
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 Mój problem polega na tym, że muszę odczytywać z ADC, a następnie wysyłać dość duże paczki danych. Wymyśliłem tak jak poniżej (wiem, że nie najlepiej), że wezmę puszczę przetwornik w FRM, tak żeby generował przerwanie po każdym pomiarze i w tym przerwaniu wysyłam to prosto po USART. [syntax=c] //pliki nagłówkowe #include <avr/io.h> #include...
No tak, to się wywali, bo podniesie na 115200. Jak zacznę komunikację z modułem ESP-01S z prędkością inną niż 115200, to nie idzie się z nim dogadać. Trzeba wystartować z 115200 i obniżać. Niestety moja sekwencja Jeśli serial jest programowy to nic dziwnego, ze nie działa. Mega328PB ma dwa sprzętowe USART.
Przyjrzałem się funkcji "strtok2()" i wniosek mam taki, Bardzo Ci dziękuję za zaangażowanie w moim temacie. Oczywiście jetem wdzięczny każdemu za każdą odpowiedź. Wczoraj do późnej godziny pracowałem nad tym programem, napisałem bardzo dużo kodu od początku, nie patrząc wcale wstecz na to co i jak pierwotnie wykonałem. Oto część kodu, który tworzę....
Witam, Używam w Bascomie polecenia: Dane_uart1 = Inkey() Gdy chcę wyświetlić dane na LCDku to wyświetla mi liczbę po liczbie. Np. Gdy wysyłam do tego procka za pomocą polecenia PRINT "1234" To otrzymuję kolejno 1, 2, 3, 4 . Chciałem otrzymać 1234 a nie kolejne liczby w stringu. Już trochę się z tym męczę i proszę o pomoc w tej sprawie....
Witam! Od wczoraj siedze nad tym kodem i nie moge odebrac string'a w "calosci". Wysylanie pojedynczych znakow oraz calych tekstow dziala prawidlowo jak rowniez odbior pojedynczych znakow. Jednakze jak probuje odebrac string - nic z tego. Ponizej zamieszczam kod: #include <avr/io.h> #include <stdlib.h> #include <util/delay.h> typedef...
Witam, prosze o sprawdzenie mojego programu bo moim zdaniem jest OK a wciąż nie chce zadziałać. Używając hyper terminal-a wysyłam znak poprzez RS232 do układu na USART0, chcę żeby po odebraniu znaku zapaliła się dioda podłączona do portu E. Hyper terminal mam skonfigurowany następująco: 4800b/s, 8bitow danych, bit parzystosci, 2 bity stopu, kontrola...
Witam, Napisałem program do obsługi USART-a, ale nie chce on poprawnie wysyłać znaków. Atmega8A, 8MHz-kwarc, 19200. W kodzie pokazałem problemy: [syntax=c] #include <string.h> #include <avr/io.h> #include <stdlib.h> void uart_puts(char *s); int main(void) { // zapis rejestrów USART UCSRA= 0; UCSRB=0x18; UCSRC=0x86; UBRRH=0; UBRRL=25;...
Może dlatego, że niewiedzieć czemu po wysłaniu komendy czekasz na odebranie kolejnego znaku i go usuwasz odczytując UDR (dummy=UDR). Kolejna sprawa - te strcmp jest bez sensu, sprawdzać powinieneś dopiero po odebraniu danych. Ew. trzebaby zamazywać cały bufor, bo tak jak to masz zrobione przy odbiorze kolejnych komend bufor jest mixem nowych i starych...
Witam, Napisałem program na Atmegę który m.in wysyła przez USART informację do PC. Część związana z USART jest klasyczna: [syntax=c] void uart_TX( unsigned char data ) { while ( !( UCSR0A & (1<<UDRE0)) ); UDR0 = data; } void uart_puts (char *s) { while (*s) { uart_TX(*s ++); } } void uart_putint(int value) { char string[6]; utoa(value, string,...
Jak to wszystko ładnie wyświetlić na lcd? Już napisałem, jakich funkcji można użyć. To jest pierwsze rozwiązanie, zabawa na stringach. Jest też inna droga, używając sscanf (sscanf_P) skonwertować string do zmiennej a później wyświetlić w formacie jaki się chce. PS Ten delay na końcu i to aż sekunda, to nie najlepszy pomysł. Bufory usarta itp moga zostać...
Droga, którą obrałem to wpierw HAL, ze względu na bardzo przyjazną graficzną możliwość konfiguracji, a potem wraz z przeglądaniem dokumentacji powolne przechodzenie na rejestry. Po prostu po kolei np. obsługę portów (wejścia/ wyjścia) stosuję już bezpośrednio na rejestrach. I tak krok po korku ;) Co do wcześniej opisanego problemu, to moduł BT sterowany...
Prawie że na kolanie napisane: #include <avr/io.h> #include <avr/interrupt.h> #define USART_BAUDRATE 57600 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) // maksymalna liczba znaków polecenia #define UART_MAXBUFF 16 // bufor znaków polecenia (UART_MAXBUFF znaków + jeden pod znak zero)...
Chcę zaprogramować sterowanie Komendami AT. Coś typu połączenie > rób program Połączenie > przerwij program. Próbowałem dostosować kawałek programu dla Atmega 8 z "Powiadamianie GSM" (było kiedyś w DIY) Kompilator zwraca mi błąd: Error: 7 Line: 0 IF THEN expected [96], in file: Error:123 Line: 0 END IF expected, in file:...
Czekam 100ms po instrukcji print dla 115K nic to nie pomoglo zmniejszylem predkosc do 9600 nadal nic ;/ kod nadajnika $regfile = "m32def.dat" $crystal = 14745600 $baud = 9600 Config Serialin = Buffered , Size = 10 , Bytematch = 13 '##### Definicja wyswietlacza ##################### Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6...
Witam. Dziekuje za pomoc transmisja na 9600 bodow rozwiazana. Okazalo sie ze procesor dziala na wewnetrznym rezonatorze 1mhz i po przestawieniu na 8MHz wszystko jest ok. Natomiast mam jeszcze jeden problem a mianowicie chodzi o to ze PB2 i PB1 i PB0 standardowo w programie sa wejsciem z wewnetrznym pull-up czyli maja napiecie. Stan tych pinow zmienia...
Odbieraj po kolei znaki do bufora w przerwaniu np ISR(USART_RXC_vect) a jak odebranym znakiem będzie umowny znak końca (moze byc enter=0x0d) dodaj na koniec zero i wróć z wskaźnikiem na początek bufora, w buforze będziesz miał prawidłowego stringa. Zabezpieczył bym się też przed ponownym nadpisaniem bufora zanim odczytasz odebrany łańcuch.
Co się tyczy odczytu UCSRA: "Doing a read access to the UBRRH or the UCSRC Register is a more complex operation. However, in most applications, it is rarely necessary to read any of these registers. The read access is controlled by a timed sequence. Reading the I/O location once returns the UBRRH Register contents. If the register location was read...
Po pierwsze proponowalbym zmienic troche ta funkcje: void wyslij_znak(unsigned char znak) // bylo: unsigned int { if (znak == '\n') znak = '\r'; // bylo: wyslij_znak('\r'); while (!(UCSRA & (1<<UDRE))); UDR = znak; } A tak w ogole to masz moj fragment kodu: :D typedef unsigned...
Witam! Mam taki problem: Wysylam string "START" z procka do kompa. Mając ustawiony zewnetrzny kwarc wszystko dziala ok. Ale ustawiając na wewnetrzny oscylator dostaje albo np ST i pozniej krzaki albo w ogole krzaki. Napiszcie mi prosze czy ten wewnetrzny oscylator jest az tak do bani czy gdzies moglem popelnic blad. Nigdy wczesniej mi sie to nie zdazylo...
Podsyłam prosty programik z polskiego helpa do bascom-avr. Bardzo dobrze obrazuje zasade wysylania i odbierania sygnalu szeregowego. Wiem, że niby temat jest zamknięty, ale może kolega jeszcze tutaj zerknie, a jak nie, to będzie dla innych :) '---------------------------------------... ' RS232BUFFER.BAS ' (c) 2000-2002, MCS...
Witam, zabralem sie za komunikacje USART miedzy PC a atmega. Znalazlem juz jak napisac wysylanie i odbieranie pojedynczego znaku oraz wysylanie stringu, ale nigdzie nie moge znalezc jak odebrac stringa np. wysylam przez Docklight "jakies zdanie" i wysylam to na LCD. funkcje jakie mam: void nadajznak(char dana1) //wyślij znak { while(!(UCSR1A&(1<<...
mam problem z odczytem danych z telefonu. wysylanie komend at do telefonu (siemens s45) odbywa sie bez problemu - aparat reaguje prawidlowo. linia Tx kontrolera polaczona z telefonem poprzez opornik i zenera 3,3V. Linia odbiorcza polaczona bezposrednio. komunikacja z telefonem za pomoca terminala rowniez dziala prawidlowo. biblioteka uart: #include...
Witam ponownie, dziękuję za naprowadzenie. Jednak od razu nasuwają mi się kolejne pytania i nowo powstałe problemy. Odpowiadając na pytania: Freddie Chopin - założyłem, że zmienna typu double istnieje, ponieważ zadeklarowałem ją sobie i przy sprawdzania kodu debugerem w podglądzie zmiennych widniał właśnie mój wpis - zmienna typu double. A co do wysyłania...
Nie wiem co tam namieszałeś ale ja bym trochę zmienił odbieranie ciągów. Coś w ten deseń: SIGNAL (SIG_UART_RECV) { if ( (odebranyZnak!='\r') && (odebranyZnak!='\n') ) { slowo[i++]=odebranyZnak; } else { slowo[i]='\0'; i=0;// zakończenie słowa - dodanie znaku końca stringa **ANALIZA...
Witam, Postanowiłem zrobić tak: normalna transmisja wyglądała tak: $0030000 //komenda ustawienia karetki na pozycji temp NAW //bez znaku $ więc zwykły tekst $0000001 ////komenda ustawienia karetki na pozycji 23 ////bez znaku $ więc zwykły tekst Baza musi poczekać z wysłaniem kolejnego stringa aż panel odpowie że już wyświetlił poprzedniego. Już to zrobiłem...
Pierwsza zmienna od lewej na górze to pobrana z Input i po odcięciu pierwszego znaku (LF). Druga za nią, to zmienna liczbowa przekonwertowana ze zmiennej którą opisałem w poprzednim zdaniu. W dolnej linijce, zmienna Y, która jest "wysyłana" do serwomechanizmu. Dzieją się znowu cuda, i nie mam pojęcia dlaczego. [syntax=basic4gl]$regfile = "m8def.dat"...
Szczególnie nadawanie jest problematyczne, ponieważ nie można mieć non-stop włączonego przerwania, chyba że naprawdę chcesz NON-STOP wysyłać znaki. a no właśnie, o tym nie wiedziałem ;) a chyba mniej więcej tak rozwiązałem to w przed ostatnim poście, po prostu wyłączając to przerwanie jak bufor jest pusty No niestety jest trudniejsze ;) ale tak jest...
Nie wystarczy itoa? Ja wiem, wiem - biblioteki zwiększają zajętość flash... , ale myślę (w tym przypadku), że jeżeli projekt jest mały i masz jeszcze trochę flash'a i RAM oszczędzanie - poprzez pisanie własnych funkcji konwertujących int na string nie ma sensu. Ale wracając do twojego kodu: W twoim przykładzie brak zwolnienia pamięci po jej użyciu -...
Witajcie, moją przygodę z STM32 zacząłem stosunkowo niedawno, praktycznie od samego początku staram się stworzyć "protokół" do bezawaryjnej komunikacji po USARcie, który wykorzystany będzie do transmisji danych z małego robota typu LineFollower. Nie mam większej wiedzy, ani doświadczenia z tej dziedziny. Stworzyłem trochę kodu na podstawie własnych...
Niemożność zmiany rozmiaru tego mizernego bufora to rzeczywiście fatalna wiadomość. Napiszę w czym jest rzecz ale prawdopodobnie nie jest to wina tego ubogiego bufora ponieważ myślałem, że wynosi on 8 bajtów a nie 1 bajt. Posiadam konwerter uart-ethernet, który podłączyłem do ATmega8A (wykorzystuję na chwilę obecną tylko linię Tx uC) i dla testu wysyłam...
Co może być przyczyną tego, że zamiast wysyłanego "hello" odbieram w termianlu "hhhhheeeeeellllllllllllllllllllloooooo"... Dodam, że przy wyłączonym DMA nic takiego nie ma miejsca.
Dzień dobry Dane przesyłam w taki sposób (atmega32->PC po RS232 (max232)- baud9600): [syntax=c] for(int i =0;(pom[i]!=0);i++) { sendChar(pom[i]); } [/syntax] Jak widać przesyłana jest tablica char (2-3 znaki, temperatura), funkcja sendChar wygląda następująco: [syntax=c] void sendChar(char data) //Wyślij 8bitową daną { while(!(UCSRA&(1<<UDRE)));...
W C++ można spokojnie zwracać zmienne przez wartosć, ponieważ wykorzystane zostanie "return value optimization". Ta optymalizacja jest wręcz obowiązkowa w C++11, w którym do tego celu zostanie użyte "move semantics". Zwracanie przez wartość to często najbardziej optymalna opcja jaką można zastosować! A nawet jeśli to zwracanie stringa wywoła alokację,...
Poprawiłem kod: [syntax=c]#include <avr/io.h> #include <util/delay.h> #define USART_BAUDRATE 9600 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) void init(){ UCSRB |= (1 << RXEN) | (1 << TXEN); // Enable receiver and transmitter UCSRC |= (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); // 8 bit,...
To według mnie zdecydowanie zbyt niska oporność, jak na obciążenie fototranzystora w transoptorze. Spróbuj coś koło 4,7 - 15kΩ. Podciągnąłem DATA do 3.3V przez rezystor 10kΩ i działa. Możliwe. Możesz to sprawdzić próbując nadawać inne request stringi. Tu też masz rację. Wysyłanie traktuje jako sygnał i transmisje wyzwala najprawdopodobniej...
Mimo wszystko głupio tak marnować czas innych :). W każdym razie. Parę tematów chciałem poruszyć. - Po pierwsze odniosę się może do poleconej książki - "AVR. Układy peryferyjne" . Udało mi się dziś ją dostać i niestety nie znajduje w niej zbytniej pomocy. Nie jestem pewny czy szukałem w dobrym miejscu, jednak postanowiłem zagłębić się w dwa tematy -...
Opanowałem odbieranie danych z UART, ale pojawił sie nowy problem. Napisałem sobie własny terminal i przystosowałem go do przesyłania parametrów , które są zapisywane do EEPROM mikrokontrolera. Działa, ale problem jest z przesyłaniem bajtów większych niż 127. Problem jest raczej w programie w VisualBASIC a nie w AVR bo testowałem i AVR odbiera 8 bitów....
Cześć Jeżeli uruchomię moduł i wykonam poniższą sekwencję poleceń to wygląda na to, że wszystko działa poprawnie: [syntax=c] //================================ odczytuje numer IMEI modułu gsm uart1_puts("\rimei="); uart1_puts(IMEI); // wyswetlam dotychczas znany IMEI odczyt_IMEI(IMEI); // odczytuję numer IMEI modułu GSM uart1_puts("\rodczytany imei=");...
Witam, właśnie przerabiam kolejne ćwiczenie z książki J. Dolińskiego, ale przechodząc do rzeczy... Chcę wysłać kolejno w pętli za pomocą funkcji "WyslijTekstROM" 3 kolejne stringi, jednak przy wysyłaniu pojawia się następujący problem, że tylko ostatni string wypisywany jest na terminalu cały, a 2 początkowe są poucinane. Sądzę, że problem może leżeć...
[syntax=c]ISR(USART_RXC_vect) { static unsigned char odebrana; odebrana = UDR; }[/syntax]
Szanowni Państwo, Mam pewien problem z dekodowaniem zmiennych w ramce usart po string hex. Procesor Attiny1614 połączony z modułem bluetooth po TTL. Zaznaczam że ze zwykłymi stringami nie mam problemu tylko jak mam przekonwertować z string hex na int i odesłać. Procek wysyła proste rozkazy np: włącz, wyłącz, włącz na określoną moc, włącz na określoną...
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...
Witajcie, dziękuję za wszystkie posty. Większość okazała się bardzo pomocna. Swoją modyfikację chciałam zacząć od najprostszej zmiany, tj. zmiany konfiguracji modułu bluetooth poprzez komendy AT. Najpierw jednak chciałam przetestować odbiór danych z terminala. Znalazłam program i nieco go zmodyfikowałam, którego celem jest odebranie wpisanej danej w...
ta płytka ma standardowy program do obsługi i teoretycznie można z niego obsłuztc karte ale ja niewiem jak ją zamontować [syntax=c]/*****************************... (c)*************************************... ** ** ** **--------------File Info------------------------------------...
Witam, mam problem z komunikacją z czujnikiem ciśnienia HP02S. Szukałem swojego problemu na forum, ale nie znalazłem. Udało mi się bez problemu odczytać dane z EEPROMu. Udało mi się też skomunikować z czujnikiem, ale do czasu. Sekwencja odczytu ciśnienia wygląda następująco (pseudokod): [syntax=c] i2c_start(); i2c_write(0xEE); i2c_write(0xFF); i2c_write(0xF0);...
Uruchomiłem bibliotekę FatFS na STM32L i karcie microSD o pojemności 512MB. Na tej karcie wszystko działa. Jednak próby uruchomienia innych kart (2GB, 16GB) zakończyły się niepowodzeniem. Funkcja f_mount po wywołaniu zwraca wartość: FR_OK = 0, /* (0) Succeeded */ Następnie próbuję utworzyć plik i tu pojawia się błąd: FR_DISK_ERR,/* (1) A hard error...
Dzięki za to, że napisałeś odpowiedzi na Twój problem, przydało się ale niestety nadal mam problem... Poniżej jest mój kod do odczytu przez I2C i wysyłanie po UART. Putty niestety wyrzuca "S▒▒" co restart. Ktoś wie czemu? (wiem, że ten kod nie jest najlepszy ale powinno działać. [syntax=c]#include "stm32f30x.h" void SysTick_Handler(void);...
właśnie wgrałem program do atmega32 #include <avr/io.h> #include <util/delay.h> #define F_CPU 1000000UL #define UART_BAUD 19200 #define UART_CONST (F_CPU/(16ul*UART_BAUD)-1... void USART_Transmit(unsigned char data ) { while ( !( UCSRA & (1<<UDRE)) ); UDR= data; } unsigned...
Zrobiłem program wykorzystujący do odczytu wyników RS i tak samo jest. Dodatkowo zrobiłem to na ATmega 16. Więc nie mam pojęcia gdzie jest ten błąd.. [syntax=c]#include <avr/io.h> #include <avr/pgmspace.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdio.h> #include <stdlib.h> #include "string.h"...
Dzięki za szybką odpowiedź. Zmiana jednak nic nie dała ; / Postanowiłem wypróbować język C i napisałem coś takiego Dodano po 3 Aha, próbowałem również z baud 19200 jak i 9600 za każdym razem co innego sie wyświetla ale za każdym razem jest to jakiś krzak
Witam Nie za bardzo wychodzi mi wykorzystanie z dwóch portów UART. UART sprzętowy odbiera ramki z modułu GPS ( Tx modułu do Rx AtMega32 ) i to działa. Działa do momentu gdy włączę UART sprzętowy ( tylko Rx na jednym z portów Atmega do Tx portu Com w komputerze - korzystam z przejściówki, ale to chyba nie problem ), wtedy informacje na LCD nie są aktualizowane...
A oto prosta funkcja (kompiluje się w najnowszym AVRStudio) :D : #include <ATmega8535.h> .include "m8535def.inc" ; Prohibits use of non-implemented instructions (ATmega8535) #define XTAL 11059200 #define USART_BAUD 19200 #define _UBBR(_X,_X_BAUD) ((_X/(16*_X_BAUD))-1... #message "_UBBR =="...
Problem, w zasadzie coś co jest już wałkowane na forum wielokrotnie, ale mimo przeczytania kilku wątków nie znalazłem odpowiedzi. Otóż potrzebuję zrobić odbiór poprzez uart. Korzystam z Atmegi 32(w zestawie ewaluacyjnym, zewnętrzny kwarc) i środowiska WinAvr. Wysyłanie z mikrokontrolera udało mi się uruchomić, odbioru przez uC nie do końca. Komunikacja...
Ten kurs to tak też średnio jest zrobiony, bo nadal mieli w podprocedurach... Najlepiej byłoby w obsłudze przerwania timera obsługiwać licznik programowy, który po wyzerowaniu ustawiał jakąś wartość, która byłaby sprawdzana w podprocedurze pętli głównej... Ogólnie rzecz ujmując, należy pisać program tak, aby najsłuszniejszą pętlą była pętla główna....
Napisałem funkcję zamieniającą dobule na char void USART_wyslanie(char znak) { //Sprawdzanie czy bufor jest pusty while(!(UCSRA & (1<<UDRE))){&... UDR = znak; //while(! (UCSRA & (1<<TXC)) ){} } void Double_To_String(double liczba, int precyzja,...
Chodzi o wyświetlanie Stringów przez USART? To na czas testów tylko. Jakiś pomysł?
Posiadam 2 układy: - hy-smart stm32 na STM32F103 - urządzenie na attiny2313 oba udało mi się ładnie dotychczas ogarnąć, oba pracują poprawnie, jednak pozostaje ostatni krok - połączyć je. Jako, że hy-smart oraz attiny mają uart to na ten protokół padł wybór. Niestety mimo wielu podejść nie udało mi się wysłać poprawnie pakietu. Gdzie robię błąd? Tak...
Witam, otóż zasilam owy wyświetlacz napięciem ±3.3V, a także stany logiczne są na tym poziomie. Pin kontrastu jest podpięty bezpośrednio do masy, kontrast wizualnie wydaje się być dobrany idealnie. I problem w tym, że pixele bardzo wolno się zapalają.(wyszło mi ok. ~300ms na pełne zaświecenie pixela) Czy jest to jest maksimum wyświetlacza, czy...
Witam Wysyłam przykładowe ramki z terminala do STM32 przez driver MAX3485 i cały czas sypie mi błędami w odpowiedziach. Nie mam też pewności czy to co wysyłam z terminala do STM32 dociera bez błędów. Poniżej fragment kodu oraz zrzut ekranu. Powinienem otrzymać to co wysyłam. Czarny kolor to odebrane ramki. Proszę o pomoc
Niestety nie wiem o którą informację na początku skryptu linkera chodzi. :| O tą? * description: * Linker script for STM32F4xxxG chip (1MB Flash, 112kB SRAM, 16kB aux SRAM, * 64kB CCM RAM and 4kB backup SRAM). Only main block o SRAM (112kB) is used. Poza tym Twoja szklana kula działa wyśmienicie. :) Po wystąpieniu przerwania uint8_t...
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! Posiadam moduł wyświetlacza LCD 3.2", prawdopodobnie na sterowniku SSD1289 (sprzedawca twierdził, że na HX8347-A, jednak dopiero metoda inicjalizacji do SSD1289 zadziałała). Próbuję nim sterować przy pomocy mikrokontrolera STM32F103RBT6. Wszystko zdaje się działać dobrze, do czasu gdy chcę wyświetlić jasny kolor, np. RGB(240,240,240). Wtedy sterownik...
Cześć wszystkim, Zwracam się do Was z prośbą o pomoc w rozwiązaniu problemu z poprawnym wysyłaniem stringa po UART za pomocą przerwania nadawczego. Męczę, się z tym już któryś dzień, czytam reference manuala, i cały czas nie udało mi się tego problemu rozwiązać. Ogólnie rzecz biorąc funkcje do buforowania zdarzeń odbiorczych/nadawczych są sprawdzone...
Witam Mam dosyć spory problem z parsowaniem tekstu, mianowicie użytkownik może w terminalu wpisać sobie taką o to składnie. Silnik 3,5;Silnik 5,25;Silnika 7,45; Ma to podzielić na "Silnik 3,5" , "Silnika 5,25" itp; Robię to w następujący sposób: -gdy z USARTa przychodzi ciąg znaków zakończonych znakiem '\0' wychodzi do przerwania gdzie tworzona jest...
Witam. Aktualnie walczę z kompilatorem GCC non-eabi. Chcę utwożyć projekt w C++ używając własnego skryptu linkera, jednak po długiej walce nie mam już pomysłu na rozwiązanie. W jaki sposób skonfigurować kompilator, linkera oraz skrypt linkera tak abym mógł własne tablice zdefiniowane w plikach .cpp wstawić w wybrane prze zemnie miejsce w pamięci? Wersja:...
Pojawił mi się problem taki, że nie mogę odpalić przerwań. Mam 2 programy: 1- test przerwań poprzez zmianę stanu na pinie D0 i generowaniu dźwięku przez PIEZO - działa super. 2- wstęp do wariometru, też działa super, wykresy generują się bardzo realnie. Próba uruchomienia przerwań w programie 2 nie działa. Timer się kręci elegancko bo wartości licznika...
Witam wszystkich. Uzywam Eclipse + OpenOCD (0.9.0) + GCC. Do tej pory używałem STM32F103 (Cortex-M3), a teraz przesiadłem się na STM32F373 (Cortex-M4). Wziąłem ze starego programu skrypt linkera, startup, vectors.c i posklejałem do kupy odpowiednio je modyfikując. Program generalnie odpala się, mogę sterować GPIO. Następnie spróbowałem uruchomić SysTicka....
Cześć, w końcu postanowiłem pobawić się modułem Wifi, który jest prosty w użyciu, jest doskonale udokumentowany i generalnie nie ma najmniejszych problemów z jego uruchomieniem. No cóż... nie. Po kilku godzinach kminienia, czemu nie działa komunikacja z użyciem komend AT dowiedziałem się, że trzeba go odpowiednio zflaszować. Hura, komendy działają,...