Witam Porwałem się na robienie własnego sterownika co i stanąłem w martwym punkcie. Mianowicie sterownik składa się z 2 płytek na których są Atmegi 16 taktowane zewnętrznym kwarcem 11.059200 + kwarc zegarkowy jeden układ odpowiedzialny za odczyt temperatur regulację fazową wentylatora oraz sterowanie elektrozaworami a drugi obsługa wyświetlacza graficznego...
1. No ale tu blokujesz działanie całego procesora na niepotrzebnie długi czas. Przy 9600 nadanie 1 bajtu to wieczność. Procesor może wtedy zatańczyć kankana. I to 2 razy ;) 2. Bo można to szybciej zapisać jako: "\r\n" w ciągu formatującym wyświetlanie liczby (printf) 3. Oj wygląd się liczy. I to bardzo. Jak napiszesz program liczący tysiące linijek...
Mam problem z obsługą odbioru danych przez UART w przerwaniu. Dotąd korzystałem z funkcji SPL niewykorzystujące przerwania do transmisji danych przez UART. Mój kod poniżej, wpisując przez terminal (putty) na klawiaturze cyfry od 1 do 8 mikrokontroler wysyła na terminal m,gp� , a przecież powinien wypluć właśnie przesłane znaki. W czym jest problem...
A jeśli chodzi o AVR to: ON źródło_przerwania nazwa_podprogramu [ NOSAVE ] gdzie: źródło_przerwania - symboliczna nazwa źródła przerwania, nazwa_podprogramu - etykieta określająca gdzie znajduje się podprogram obsługi przerwania. jako żródło przerwania można: URXCprzerwanie układu sprzętowego UART – odebranie znaku UTXCprzerwanie układu sprzętowego...
Miałem okazję przetestować modemy Konfiguracja Modem konfigurujemy ustawiając na wejściach M0 i M1 stany logiczne wysokie i przesyłając przez UART odpowiednie ciągi konfiguracyjne np. z mikrokontrolera. Możemy także wykorzystać konwerter USB<->RS232 (3.3/5V) i oprogramowanie Konfiguracja to zaledwie 5 bajtów. Rozpoczynamy ciąg od 0xC0 (jeżeli...
To powiedz jeszcze jakie dane odebrałeś: - Pierwsze 400 bajtów i brakło 8 ostatnich? - a może np. Dane[0..49], Dane[51..99], Dane[101..149], Dane[151..199], Dane[201..249], Dane[251..299], Dane[301..349], Dane[351..399], Dane[401..407], ale brakło Dane[50], Dane[100], Dane[150], Dane[200], Dane[250], Dane[300], Dane[350], Dane[400]? Dlaczego nie pokazałeś...
To jest proste jak świński ogon :D ahahahaha, ale napisz kawałek kodu. Czy masz tam jakiś LCD czy nie, czy masz tam jakiś Timer ustawiony do odmierzania sekundy czy Wait`ujesz :D Czy w dokumentacji czujnika pisze, że nadaje tez na końcu niewidoczne w terminalu znaki 13 lub 10? EDIT: aaa masz tu taki prosty. Napisałem przy śniadaniu więc błąd mógł się...
Programator jest widziany jako normalny programator USBasp. W zipie znajduje się aplikacja, która odpala konsolkę. Wtedy znaki, które do niej wpisujemy zostaną wysłane przez UART, a odebrane zostaną w niej wydrukowane. Nie jest to widziane jako normalny port COM. Jak ktoś potrzebuje takiej funkcjonalności - proszę dopisać ten kawałek kodu i podzielić...
Mam trochę dziecinne pytanie odnośnie UARTa w mikrokontrolerach AVR (dokładniej: ATMega644PA). Czy jest możliwość, aby przerwanie UART było wywoływane dopiero po odebraniu całego ciągu znaków np. zakończonego znakiem CR/LF zamiast po każdym bajcie osobno?
Witam, jak waszym zdaniem najefektowniej z liczby (dajny na to 454857, binarnie 110 11110000 11001001 (3 bajty)) wyodrębnić poszczególne bajty. Pytanie wynika stąd, że opracowuję komunikację, gdzie ramka danych składa się z konkretnej ilości bajtów, każda składowa informacja tej ramki zawiera się w pewnej określonej liczbie bajtów. Więc na przykład,...
Ciekaw jestem czy ktoś z was robił takie połączenie by przez UART odebrać dane , wybrać te interesujące no i je wykorzystać np- akcelerometr , kompas , żyroskop , gps itd . Jak wygląda taka ramka danych i które dane za co odpowiadają . Coś podobnego znalazłem na filmie [youtube][/youtube] Program można napisać samemu no ale bez info jak taka ramka wygląda...
Witam, czy poniższy kod zadziała? Chcę wysłać bajt danych do komputera wykorzystując konwerter UART-USB i odebrać w terminalu. Czy poniższy kod zadziała? [syntax=c] #include <stdio.h> #include <stdlib.h> #include <p32xxxx.h> #include <plib.h> #pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF #pragma...
Używam biblioteki pana Mirka. [syntax=c]/* * mkuart.c * * Created on: 2010-09-04 * Autor: Autor: Mirosław Kardaś */ #include <avr/io.h> #include <avr/interrupt.h> #include <stdlib.h> #include "mkuart.h" // definiujemy w końcu nasz bufor UART_RxBuf volatile char UART_RxBuf[UART_RX_BUF_SIZE]; // definiujemy indeksy określające ilość...
Witam! Nie umiem sobie poradzić z uruchomieniem kodu. Myślę, że temat książkowy. Mam błędy w programie który próbuję uruchomić w celu dalszej edukacji w C. Nie znam jeszcze dokładnie w tym języku wszystkiego, więc zwracam się o pomoc, jeżeli to możliwe, aby uruchomić ten projekt. Dodaję kod i plik z builda. Poprawiłem tytuł, formatowanie postu i pisownię....
Witam. Chciałem napisać następujący program: Dane przesyłane są z komputera przez UART1, a następnie te dane chciałbym przesłać dalej, za pomocą UART0. Na razie połączyłem sobie, w UART0 RxD z TxD za pomocą rezystora 200Ohm (taki loopback do testów). Czyli jak na razie chciałem uzyskać następujący przepływ : komputer -> UART1 -> UART0 -> UART0...
#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) |=...
Proszę o pomoc. Mam oprogramować moduł UART - RS232 w AT90CAN128. Płytkę dostałem już gotową. Oczywiście komunikacja poprzez MAX232. Do procesora podłączony jest zewnętrzny kwarc 16.000. tzn procek ma działać z częstotliwością 16 MHz. Fusebity są już niby poprawnie ustawione, a moim zadaniem jest tylko oprogramowanie komunikacji RS-232 z prędkością...
Zrób tak i zobaczymy co ci wyjdzie ;-) : int main(void) { uart_init ( MYUBRR ); sei(); for( ;; ) { uart_putc(uart_getc()); } } Oczywiście nenpa8lo to działa jak juz pisałem wcześniej ale tylko wtedy jeśli pozbędę się instrukcji sei(); i nie zezwolę na przerwanie. Powracając do drugiego...
Witam. Mam problem z odbiorem znaku przez UART na medze8. Jakiego bym znaku nie wysłał zawsze odbiera <00>. Poniżej kod źródłowy #include <avr/io.h> #include <avr/interrupt.h> #include <inttypes.h> #define F_OSC 1000000 /* oscillator-frequency in Hz */ #define UART_BAUD_RATE 4800 #define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC&...
Witam ponownie. Zabrałem się za problem od trochę innej strony, chodzi mi na razie o to, żeby w ogóle uruchomić tę komunikację. Próbuję, żeby zadziałało to na tyle, żeby zaświeciły się dwie diody, jak już będę potrafił to uruchomić to myślę, że poradzę sobie z dalszymi problemami łatwiej. Używam gotowych bibliotek, kompilator nie wyrzuca błędów. Program...
Witam. Od dłuższego czasu "walczę" z przerwaniem, które nie chce się za nic wykonać. Zrobiłem już wszystko co potrafiłem, ale niestety brak reakcji. Chodzi tu o układ z obsługą dysku twardego, który połączony jest z komputerem za pomocą MAX232 (RS-232). Procesor to Atmega32 z wewnętrznym oscylatorem 8MHz. Pętla "echo" działa. Dane wracają. Może ktoś...
Witam. Mam problem dotyczący komunikacji uk z ECU znajdującym się w Nissanie. Mianowicie posiadam protokół komunikacji według którego, ECU w samochodzie komunikuje się za pomocą UARTa. Transmisja 9600 baud, 8 bitow danych i 1 bit stopu. Komunikacja ze sterownikiem(odczytwanie parametrów) może nastąpić po wysłaniu ramki inicjalizacyjnej (0xff)(0xff)(0xef)....
W jaki sposób w trakcie działania programu na uC zmienić prędkość transmisji - Baud Rate? Napotkałem następujący problem, na który nie znalazłem niestety odpowiedzi. Transmisja ma przebiegać UARTem między PC a uC (ATmega32). Aplikacja uC ma mieć możliwość zmiany Baud Rate w czasie pracy. Załóżmy, że chcąc połączyć się z PC z BR 115200: 1. Łączę się...
Spróbuj z taka inicjalizacją: #define F_CPU 8000000 //częstotliwość zegara w Hz #define UART_BAUD9600 //prędkość transmisji #define UART_CONST(F_CPU/(16ul*UART_BAUD... void UART_init(void) { // ustaw prędkość transmisji UBRRH = (unsigned char)(UART_CONST >> 8); UBRRL = (unsigned char)(UART_CONST...
Prosze, moja mala biblioteczka do odbierania danych, wraz z buforem cyklicznym #define BUFF_SIZE8 volatile unsigned char UART0recv, UARTBuffer[BUFF_SIZE], UARTCount, UARTGet, rx_counter; // Zmienne globalne, reszta unsigned char a; ISR(USART_RXC_vect) { UARTBuffer[UARTCount] = UDR; UARTCount++; rx_counter++; if ( UARTCount...
Mam problem,bo nie potrafię odebrać poprawnie więcej niż 1 bajt danych po UART na ATMEGA 128L .Dokładnie potrzebuję np 100bajtów odebrać od razu i wiem ,że potrzebuję tablicy (której nie mam w poniższym kodzie). Odbiór danych mam na przerwaniu, pomału po 1 bajcie wysyłane dane z komputera dochodzą ,ale przy większej ilości już źle odbiera. Z procesora...
To nie Arduino - kodu Ci nie wrzuci. Robisz przerwanie dla i2c i uarta. W przerwaniach implementujesz kolejkę odbiorcza i nadawcza. W i2c jeszcze musisz podawać ile bajtów chcesz odebrać aby procedura wiedziała kiedy dać nack. A program sobie czyta i piszę tam gdzie mu potrzeba. A tak na poważnie - to ponieważ widać nie robiłeś jeszcze takich rzeczy...
Witam Zauważyłem pewien problem i szukam rozwiązania.. Mając Atmega162 - dwa sprzętowe UARTy, chcę je wykorzystać, urządzenie które podpięte jest pod RX nadaje linie danych zakończone CRLF, więc skonfigurowałem w taki sposób: Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0 Config Serialin0 = Buffered ,...
Witam Zbudowałem sobie na jednej płytce stykowej Dodano po 4 Przeczytałem na stronie radzio.dxp.pl, że w zmiennej znak otrzymuję kod klawisza, a nie kod ascii i po to jest plik scancodes.h aby sobie zamienić kod klawisza na znak. Jednak dla przykładu: SPACE - hex:0x20 znak klawisza:29, a gdy klikam spacje na klawiaturze Telly mate wyświetla mi literę...
Witajcie Tak jak w temacie. Walczę z komunikacją z komputerem przez RS-232. Port COM sprawny, jak zewrę TX i RX dostaję na wejście to co wysyłam. Bezsilny zacząłem ładować przykładowe, niby działające kody w C z UARTem ale nic z tego... Atmega nie odpowiada. Czasem coś wyrzuci ale to niezgodne z tym co powinno. Dodam że wysyłając komendy by np zapalił...
Dzięki wielkie, udało się! Program odczytuje poprawnie informacje, dodatkowo ograniczyłem bufor do 1 znaku, bo Atmega wysyła znaki jeden po drugim. Poniżej zamieszczam wszystkie kody działające, dla potomnych :) UPDATE: ----------------------------------------... No i chyba poległem z wysyłaniem, nie obejdzie się...
Proponował bym Ci na początek zrobienie komunikacji między PC a jednym z tych ATMEL-i. Wtedy będziesz wiedział o co chodzi. Mój program dla ATMEGA16 w BASCOM-ie wygląda tak: $crystal = 16000000 ' mam kwarc 16 Mhz $baud = 9600 ' prędkość na RS-ie Config Com1 = Dummy , Parity = None , Stopbits = 1 , Databits = 8 ' konfiguracja portu Echo Off ' nie chcę...
Witam, mam problem z RS232. Wysyłam z procesora różne znaki (0...255) i próbuję je odebrać, ale nie wychodzi tak jak trzeba. Procek na pewno wysyła (sprawdzone pod terminalem). Jak odebrać np. 100 znaków ?? //--------------------------------------... #include <vcl.h> #include <stdio.h> #pragma hdrstop #include...
Przepraszam za grzebologię, ale postanowiłem to umieścić na forum, żeby był pożytek :] ( W związku z mailem, jaki otrzymałem :], Był on opatrzony tym tematem :] ) Kod programu na 8051 wysyłającego komunikat powitalny "AT89C51 ver. 1.0", a następnie odbierającego to, co wysyła komp i wyświetlającego na LCD. Prędkość transmisji 2400 b/s. ;------------------------------------...
Witam, Mam pewien problem powiazany z UARTem pod atmega8l... Otoz mam pewnien program ktory pieknie dziala pod attiny2313(UART sprawny, komunikacja rs232<=>pc tez dziala dobrze). Problem narodzil sie, gdy chcialem przeniesc ten program na atmege8l... Podejrzewam, ze problem lezy we flagach... Nie znam sie jeszcze na tyle dobrze na C, zeby problem...
witam up avr po odbiorze znaku przez uart generują przerwanie (rxc), czy w bascomie istnieje możliwość "sprawdzenia" przerwania od uarta? wiem że jest polecenie "ischarwaiting" jednak to polecenie musze umieścić w kodzie programu i sprawdzać nim czy w buforze odbiorczym jest jakiś znak, natomiast interesowało bym mnie jakieś przerwanie które przerywało...
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)...
witam a czy moze ktos mi powiedziec jak zamiic odebrany unsigned int res na tablice skladajaca sie z np 8 znakow ? chce odebrac poprostu 8 znakow i zapisac je do tablicy tylko nie wiem jak przypisac/dopisac unsigned in res;.. strcat pokazuje mi blad ;-( prosze o pomoc ----___---___ czy taki zapis jest dopuszczalny ? kompilator wywala mi blad niestety...
Poprawiłem kod żeby był czytelniejszy i nieco go skomentowałem: [syntax=c] /* układ ATmega88pa-pu 8MHz */ #define F_CPU 8000000 #define BAUD 9600 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <stdint.h> #include <stddef.h> #include <avr/interrupt.h> #include <util/setbaud.h> volatile...
Witam, 1. Układ procesora działa. Mogę zmienić np. stany na wyjściu itd (np. sterować diodą). 2. Schematu nie daję bo w chwili obecnej nie mam. Wszystko jest na eksperymentalnej płytce. Ale korzystam z UART0 no i oczywiście linii RxD oraz TxD. Chodzi mi o to jak przeprowadzić wysyłkę np. takiej komendy jak w pierwszym poście, no i jak potem coś odebrać....
Witam. Mam malutki problem z przerwaniem z UART'a. Otoz program wchodzi do przerwania i w nim zostaje, wykonujac je ciagle. W debugerze wszystko dziala swietnie a w rzeczywistosci ... niestaty nie. Nizej zalaczam listing programu. Srodowisko keil, procek 89s52. #include <AT89X52.H> #include <stdio.h> #define FREQ 3686400L //czestotliwosc...
Obsługa UART jest przerywana TIMEREM i dlatego gubi znaki. Zrób odbiór UARTU na przerwaniach, odbieraj w nim tylko pojedynczy znak i ładuj go do bufora (nie czekaj w tej funcji,aż odbierzesz wszystkie znaki), a po odebraniu końcowego znaku ustawiasz flagę, że skończył. I w pętli głównej dekodujesz sobie na spokojnie tą ramkę. Popróbuj może jeszcze ze...
Tak. Połączenie ma skrosowane. Dodam tylko że funkcje wyslij i odbierz działaja dobrze. Testowałem to programem który tylko odbierał daną, wpisywał ją do Pwm i wyświetlał i wszystko dobrze chodziło. A po połączeniu ze sterownikiem serwa już nic nie odbiera. Oto funkcje: void UART_Wyslij(unsigned char dana) { while (!(UCSRA&(1<<UDRE&...
(at)albertb: Zwróć uwagę, że ja także podaję to jako alternatywę nie krytykując Twojego rozwiązania. Przepraszam, nie chciałem nikogo urazić czy krytykować. Sam początkowo pomyślałem: przecież to banalnie proste, więc w czym problem. Zacząłem kombinować podobnie jak Ty, ale właśnie napotkałem problemy, o których napisałem powyżej. Te 960 taktów nie...
Witajcie, muszę stworzyć w SystemC UARTa a dokładniej mówiąc część RX z niego. Od kilku dni kopię po internecie jak krecik z bajki i jedyne co wykopałem to wielką stertę śmieci... Szukam kodu w SystemC (lub czymś innym co mógłbym przerobić). Znalazłem kilka lecz wszystkie albo nie działały, albo nie miały sensu, albo symulacja się krzaczyła i pokazywała...
Konfiguracja UARTa: [syntax=c] #define UART_BAUD 76800 //9600 // tu definiujemy interesującą nas prędkość #define __UBRR F_CPU/16/UART_BAUD-1 // obliczamy UBRR dla U2X=0 void USART_Init( uint16_t baud ) { /* Ustawienie prędkości */ UBRRH = (uint8_t)(baud>>8); UBRRL = (uint8_t)baud; /* Załączenie nadajnika I odbiornika */ UCSRB = (1<<RXEN)|(1<<TXEN)|(1<&l...
Jesli nic nie zmieniales z lewej strony powinienes miec panel Workspace. Na dole tego panelu sa zakladki Project|I/O|Info. Kliknij zakladke I/O. Ukaze sie drzewko z zasobami procesora. M.in. jest tam galaz I/O. Po rozwinieciu powinien tez byc USART. W Atmedze 128 pewnie beda dwie takie galezie USART0 i USART1. Po rozwinieciu ukaza Ci sie wszystkie rejestry...
Witam, I znowu Was pomęczę z UART-em. No więc zrobiłem sobie wysyłanie. W CodeVision: a)putchar('U'); b)printf("Jakis tam tekst"); Uart ustawiony na 9600 8bitów, 1 stopu, no parity. UCSR0A=0x00; UCSR0B=0x18; UCSR0C=0x06; UBRR0H=0x00; UBRR0L=0x33; Podobnie w komputerze 8,1, no parity. Po wysyłaniu dałem sobie delay_ms(250); I bez względu na to czy to...
Witam kolegów. Pierwszy temat: potrzebuję odbierać poprzez UART ciągi znaków wysyłane z urządzenia. Urządzenie wysyła taki ciąg bajtów: GZ GZ A0 A1 Cm Sc -tu dane- EN gdzie: GZ GZ to jest stały początek zawsze taki sam, A0 A1 podaje kierunek transmisji, Cm Sc komendy według wzorca, -dane- może być od jednego do pięciu bajtów, EN koniec transmisji. Jak...
Witam Mam problem z reakcją na przerwanie od USART0. Za pierwszym razem przerwanie ma reagować na flagę RXRDY - pierwszy bajt ramki. Następnym razem przerwanie ma reagować jedynie na TIMEOUT lub ENDRX. Jest to w ten sposób zrobione, iż przy inicjalizacji odpalam przerwanie oraz ustawiam flagę przerwania na RXRDY. Po przejściu do przerwania i zrobienia...
Witam Potrzebuję odebrać dane w formacie HEX przez uart 64 bajty z czego 10 pierwszych bajtów chciałbym sie pozbyć i 54 bajty przesłać dalej uartem programowym. Jaką użyć instrukcje INPUTHEX czy INPUTBIN i do jakiego typu zapisać te zmienne. pozdrawiam
Witam, Na wstępie wymienię sprzęt i oprogramowanie na jakim pracuję, a następnie opiszę problem z jakim się spotykam. A więc pracuje na zestawie Arduino Mega 2560 + Ethernet Shield. Jako środowisko programistyczne wykorzystuje Atmel Studio 6.0 + avrdude do programowania. Do obsługi eth wykorzystuję źródła (), natomiast do UART-a (). Po zabiegach kosmetycznych...
ok zobaczę , w swoim projekcie używam FT232RL do komunikacji pomiędzy PC a A128 , Windows poprawnie pokazuje mi kolejny COM tylko nic nie mogę wysłać odebrać na Atmedze taki kod znalazłem w necie [syntax=basic4gl] $regfile = "m128def.dat" ' specify the used micro $crystal = 16000000 ' used crystal frequency $baud = 19200 ' use baud rate $baud1 = 19200...
Zauważ, że gdy wyślesz "TEST" to: 1. funkcja "analizuj_dane_id" w buforze "buf" dostaje odebrane dane z uartu - czyli słowo "TEST" 2. funkcja "strtok" nie znajduje w buforze (w słowie "TEST") znaków rozdzielających słowa/tokeny (+ lub "), więc zwraca NULL 3. "eeprom_write_block" nie ma sensu bo wartość "wsk" jest równa NULL 4. kopiowanie do tablicy...
Witam! Próbuję odpalić prosty kod aby wysłać (i odebrać na PC) znak 'A'. Jednak nic nie działa.. przy próbie debugowania zauważam że rejestr UDR0 jest cały czas pusty.. czy to normalne? Rezonator 8MHz Pozdrawiam [syntax=c] #include <avr/io.h> #include <util/delay.h> #define UART_BAUD 9600 #define __UBRR (F_CPU/16/UART_BAUD-1) void USART_Init(...
Witam. W moim urządzeniu atmega328 odbiera poprzez sprzętowy Uart ramki danych z odbiornika gps. Problem w tym że robi to jak chce. Dobrze odebrana ramka powinna wyglądać tak: $GPGGA,235948.000,0000.0000,N,00000.0000... $GPVTG,,T,,M,,N,,K*4E A mi procesor odbiera różnie te ramki. Poniżej przykład: "$GPGGA,235948.000,0000.0000,N,0000...
Hej. Wiecie jak na windows 10 zrobić tak aby odebrane dane z uarta na komputerze były wyświetalne jako klawiatura. Na arduino leonardo to wiem. On ma sprzętowy usb i przykłady. Które na uno nie działają. Znalazłem rozwiązania ale. To dziwne bo arduino uno ma konwerter usb uart a te rozwiązania w internecie opierają się o jakieś pliki konfiguracyjne...
Witam volatile struct _sTime { volatile uint8_t uiHours; volatile uint8_t uiMinute; volatile uint8_t uiSecond; }; ... ... if((60*sTime.uiMinute + sTime.uiSecond)>=600) { eMAIN_AutomatState = SERVICE_accepted; } if(true==volatileEverySecondsToggle && FREE==TxBufor_0.eTxStatuss)//tylko do spr. że...
Kawalek mojej procedury w asemblerze. Na poczatku programu: .ORG URXCaddr rjmp ObslugaOdbiornikaUSART Inicjalizacja: IcjalizacjaUSART: ldi rTemp1,0x00.........;tu wpisac porzadane wartosci out UBRRH,rTemp1 ldi rTemp1,0x00.........;tu wpisac porzadane wartosci out UBRRL,rTemp1 ldi rTemp1,(1<<RXCIE)|(1<<RXEN) out UCSRB,rTemp1 sei Procedura...
Witam, Proszę o pomoc w uruchomieniu transmisji UART w procesorach ATmega. Chodzi konkretnie o podłączenie procesora ATmega32 oraz ATmega8. Transmisja ma odbywać się w dwóch kierunkach wg następującego schematu: 1. Atmega32 wysyła bajt do ATmega8 2. ATmega8 odsyła bajt do ATmega32 3. ATmega32 sprawdza czy to co wysłał zgadza się z tym co odebrał -jeśli...
Może się jednak zdarzyć w niektórych przypadkach (takim jaki był mój), że odbieranie danych było ok tylko że nie tych co akurat powinny być. Sytuacja ma ta miejsce kiedy kilkakrotnie w pętli głównej odpytujemy jakieś urządzenie i za każdym razem oczekujemy innej odpowiedzi (w moim przypadku różne komendy AT). Zanim nadejdzie odpowiedź pętla główna...
No właśnie myślałem o tej funkcji, ale trochę zmylił mnie jej opis:/ Znalazłem w necie, że: Funkcja CDec konwertuje wprowadzone wyrażenie do typu Decimal. Składnia funkcji CDec: CDec(Wyrażenie) Argument Wyrażenie jest wymagany. Może to być dowolne poprawne wyrażenie numeryczne w zakresie +/-79,228,162,514,264,337,593,543,950,33... dla liczb bez miejsc...
Tablicę deklaruje jako volatile [syntax=c] volatile char g_buff[UART_MAX_GETSTR]={};// tablica odebranych danych z modemu [/syntax]
Witam! napisałem prosty programik odbioru danych przez rs232, jednak program nie odczytuje mi pierwszej paczki danych (pierwszego bajtu) niestety po kilku godzinach szukania nie znalazłem błędu :( Programuje na atmedze 32 [syntax=c] #include <avr/io.h> #include <util/delay.h> #define F_CPU 11059000 //częstotliwość zegara w Hz #define UART_BAUD...
Próbuję odebrać dane z modułu GPS fgpmmopa6e za pomocą wspomnianego mikrokontrolera w wersji niskonapięciowej (3.3V). Oba elementy znajdują się już jednej płytce PCB, GPS został przylutowany zgodnie z notą katalogową ([url=]Datasheet s.22) i sam w sobie działa (wnioskuję po tym że podłączona do pinu 3D-fix dioda mruga przez jakiś czas, po czym gaśnie,...
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...
U mnie poszło coś takiego: $regfile "m16def.dat" Config Lcd = 16 * 2 $crystal = 1000000 $baud = 9600 Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portb.1 , Rs = Portb.0 Config Serialin = Buffered , Size = 12 Dim X As Integer , Y As Integer Config Pind.1 = Output Enable Interrupts ' Musisz włączyć...
Witam na procesorach aduc814 uklad pomiarowy i uklad obiorczy dane przez UART do dalszej obrobki, kazdy uklad wyposazony w max232 Zarsy działania Uklad pomiarowy wysyla przez uart 5 bajtow danych co sekund(paczka 5 bajtów co sekunde), odbiornik do celow testowych odbiera 5 pierwszych bajtow (obsluga przez przerwania) zatrzymuje program i po wcisnieciu...
Bufor jest 1 bajtowy ale całą ramkę może skompletować slave a master odbierze całą i po analizie ją wyśle. Chodzi Ci o to by slave'y wysyłały na bieżąco to co dostały i "nic z tym nie robiły"? Taki wariant raczej odpada, bo komunikaty midi mogą być np. 3 bajtowe i gdyby każdy wysyłał to co odebrał to mogłyby się "krzyżować", mieszać, master mógłby...
Zrób jakiegoś delay-a . Jeżeli transmisja odbywa sie raz na powiedzmy 1 sek to to załatwi sprawę - np po 0,1 sek od ostatnio odebranego znaku czyść bufor, a do odczytanych danych nie odwołuj się funkcją printf czy podobną bo one służą do stringów. Zawsze można jechać na wskaźniku czy indeksie i wyswietlać poszczególne znaki. Trochę mało danch zeby powiedzieć...
Witajcie ! Dopiero przerzucam się z bascoma na C i chciałem sobie odpalić UARTA aby podawał mi wartości ADC ... Na wyjściu powinienem otrzymać wartości ADC ... i leci coś ale zauważyłem że tylko w zakresie 0-255 ... a nie 0-1024 Gdzie popełniłem błąd ? proszę sprawdźcie też pozostałość :) Taki oto kod zmontowałem .. #include <avr/io.h> #include...
Witam. Mam mały problem związany z obsługą UART i zarazem z tablicami. Program ma za zadanie odbiór danych zakończonych znakiem <CR> <LF>. Dla przykładu odebrany ciąg znaków jest następujący: bla bla <CR> <LF> bu bu <CR> <LF> Korzystam z przerwania SIG_UART_RECV a jego obsługa jest następująca: SIGNAL(SIG_UART_RECV)...
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<<...
Coś mi to nie pasuje, procesor nie może nic nie odbierać, jeśli uart działa a urządzenie nadaje. Musisz dostawać jakieś krzaki, sprawdź sobie w terminalu jaka gigantyczna musi być różnica w prędkościach żeby nic nie odebrać. Jeśli dostajesz krzaki sprawdź jak wyglądają, czy dostajesz za mało czy za dużo bajtów. Jeśli nic nie dostajesz, to stawiam na...
Witam, mam taką funkcję (z książki Bryndzy): static void Uart0Gets(char *str) //Odbior znaku przez rs232 z terminalu { char c; do { while(!(U0LSR & U0LSR_RDR)); //Czekaj na znak c = U0RBR; //Odbierz znak *str++ = c; //Zapisz znak do bufora while(!(U0LSR & U0LSR_THRE)); //Czekaj na nadajnik //U0THR =...
Może pokaż cały kod. Poza tym, przerwania mogą być tak szybko wywoływane, że przy debuggingu się one gdzieś zgubią (bo nie odbierzesz wszystkich znaków z bufora a już przyjdą następne znaki). Mówisz, że nie działa w ogóle, więc może posprawdzaj flagi transmisji ?
Witam. Mam taki problem, gdyż chciałbym ogarnąć komunikację poprzez UART między dwoma mikro. Mam dwa uC: Atmegę 16, która działa jako master oraz Atmegę 88 jako Slave (na której będzie termometr, z którego będę odczytywał dane). Programy, definicje wyglądają następująco: plik RS485.h #indef RS_INT_H #define RS_INT_H //rozmiar buforów nadawania i odbierania...
Sprawdzam właśnie ten symulator ISIS wersje demonstracyjną fajny program ale jak zrobiłem układ do odczytania RS-232 to z moim programem to z nim też jakby mi procesor nic nie wysyła . Dlaczego mi te symulator pokazuje że procesor nie wysyła ? Tutaj jest mój kod. Kod proszę umieścić w odpowiednich tagach (syntax) - dotyczy całego tematu. [code]
Dzień dobry; Dobry, dobry, Tytuł poprawiono, proszę się zapoznać z zasadami korzystania z działu: LordBlick Niedawno zacząłem używać atmegi8, wszystko fajnie sie wgrywa ale mam problem bo uart nic nie wysyła do konsoli Hercules( Baund 9600 Data size 8 Pariti none Handshake off Mode free) Kwarc 11.0592, Oto mój kod(diody migają - tylko ten uart nie rusza):...
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.
No to podsumujmy: - uart_getc() zwraca znak z bufora, dekrementuje licznik znaków i przesuwa wskaźnik w buforze nawet wtedy, gdy bufor jest pusty. - W przypadku przepełnienia bufora nowe znaki będą przyjmowane, a licznik będzie inkrementowany. Przy buforze na 4 bajty po nadaniu ciągu "123456" odbiorca odbierze "345634". - Od czasu do czasu nastąpi zgubienie...
Działa!!!!!!!!! Zastanawiałem się czemu procesor próbował wyświetlać ciągle tę samą wysłaną zmienną jedną pod drugą i po wielu próbach i błędach znalazłem przyczynę. Mianowicie wcześniej myślałem że zmienna zdefiniowana jako: Dodano po 1 Nawet szybko mi poszło z tą kartą sd. :D Oto kod wysyłania z atmegi32 pliku *.txt z karty sd w którym zapisany tekst...
Witam. Od pewnego czasu zajmuje się wykonaniem sterowania na mikro-kontrolerach AVR. Nadajnik pracuje na atmega 8 a odbiorniki na atmega 16. Mój system to zestaw 15 odbiorników i 1 nadajnika. Połączone jest to wszystko za pomocą magistrali RS485 za pośrednictwem Sn75176 z przełączaniem odbiór nadawanie. To tyle odnośnie układu docelowego. Do celów diagnostycznych...
Usiłuję odebrać pakiet danych przez UART. Pakiet ma zawierać od 5-8 bajtów, kończy się znakiem '\r' lub '\n'. Robię to na uC STM32F407 ten sam co na płytce Discovery z wykorzystaniem przerwanie. UART działa bardzo dobrze, przerwanie działa, tylko prawie zawsze jakieś dane uciekają. Mam taka funkcję, która sam wymyśliłem, ale on nie jest doskonała. Myślę,...
Witam. Wczoraj przyszedł mi z Chin mój pierwszy moduł ESP8266 i postanowiłem się z nim trochę zapoznać. Chciałbym nawiązać z nim najpierw komunikację przez UART przy użyciu przejściówki USB<->UART opartej na układzie PL2303 i aplikacji RealTerm. Jako, że wyprowadzenia modułu mają dosyć nietypowy raster, położyłem go na kawałek płytki uniwersalnej...
Witam, czy ktoś mógłby mnie nakierować co muszę zmienić w poniższym kodzie aby otrzymać po UART poprawny wynik temperatury odczytanej z DS18B20 ? Kod (MikroC, PIC16F628A) gdzie w pomieszczeniu mam ok 25C (wg wskazań innego termometru). Kombinowałem też z poniższym kodem i też wysyła niepoprawne wyniki:
nie bardzo rozumiem czym się różni funkcja HAL_UART_RxCpltCallback(UART_HandleTypeD... *huart) od USART1_IRQHandler(void) Callback jest wywoływana po odebraniu ściśle określonej liczby znaków przez mikrokontroler z zewnątrz natomiast ta druga? Dodano po 4 i jeszcze jedna kwestia: Czy to, co proponujesz tu niżej to mam zmienić w pliku sem32f4xx_it.c edytując...
Jak dobrze zrozumiałem Idle jest wystawiane na końcu transferu. Tak więc wszystkie dane powinny już być w tablicy. Czy się mylę? Nie wiem czy dobrze rozumiem. Po przesłaniu 4 bajtów DMA przegrywa ostatni odebrany znak jako pierwszy? Jednak jak wyśle ramkę 3 bajtową wszystko odbiera się idealnie. Wygląda na to, że trzeba jakoś po IDLE zresetować bufor...
Witajcie, przedstawię tu od 0 rozpoznanie wyprowadzeń, podłączenie, zaprogramowanie i uruchomienie z Arduino wyświetlacza LCD z elektrośmieci. Omawiany tu wyświetlacz pochodzi z pralki Amica AWSN12DA i posiada sterownik BL55066 do którego nie znalazłem biblioteki, tylko samą notę katalogową. Dodatkowo, w celu urozmaicenia tematu, wyświetlacz ten będę...
Witam, Tak jak w poprzedniej odpowiedzi pisałem USART działa. Jednak pojawił się problem, że nie działają mi przerwania w USART. Za pomocą kodu: ;***************************************... USART0_Receive: ; Odbiór USART0 ; czekaj aż bufor odbiorczy będzie pełny sbis UCSR0A, RXC0 rjmp USART0_Receive ; załaduj dane z rejestru...
Ok, problem rozwiązałem. Niestety okazało sie ze nie można odczytać dokładnie tych bitów które zostały wysłane przy pomocy instrukcji bascoma typu PUT, GET, INPUT, PRINT, INPUTBIN itp. - instrukcje te zajmują sie przesyłaniem znaków w kodzie ASCI bodajże. Trzeba odwołać sie bezpośrednio do rejsetru SBUF(bufor UARTu). Są tam dane które przychodzą na...
zauważyłem jedno ...zamiast kwarcu 11.0592MHz mam 11.059MHz Czy to może w jakiś znaczący sposób wpłynąć na prace UARTU? EDIT: problemem był terminal na PCta ;) Terminal v1.9b by br(at)y++ miał problem z odebraniem więcej niż jednego znaku 0x00. Po odebraniu pierwszego nie odbierał już pozostałych bajtów. Zainstalowałem X-CTU i wszystko działa :) pozdrawiam...
Witam Czego mogę się spodziewać jeżeli uruchomie prawidlowo skonfigurowany przetwornik ADC, przejde do trybu Noise Reduction a jednoczesnie na liniach UART lub I2C bedzie trwała jakaś transmisja. 1) Czy informacja z uartu lub I2C bedzie odebrana czy linie TX,RX lub SCL są odlączone po wejściu w tryb Noise Reduction? 2) Czy transmisja po RS lub I2C bedzie...
Witam wszystkich. Chciałem napisać program który odbierze znak po rs232 i go odeśle. Kod pochodzi z datasheeta atmegi16. Port w komputerze jest dobrze skonfigurowany. Do komunikacji używam terminala v1.8. Atmega niestety nie odpowiada. #include <avr/io.h> #define F_CPU 8000000L // zegar w Hz #define RS_BAUD 4800 #define RS_UBRR F_CPU / 16 / RS_BAUD...
Przesyłam przez uarta pomiar z trzech ds'ów. Składam sobie to w jeden łańcuch przed wysłaniem na uarta, a po odebraniu, poleceniem MID wyciągam to co mnie interesuje w danej części kodu. Trzeba tylko pamiętać o stałej długości każdej temperatury, tak żebyś w danym miejscu łańcucha miał zawsze to co trzeba. Jakieś uzupełnianie spacją np. Chociaż rozwiązanie...
Prezentowane urządzenie to konwerter 3w1: USB - RS232, RS485, oraz UART. Rolę konwertera pełni dedykowany układ FT232RL widziany w systemie jako port COM, a wspomagany jest przez dwa układy MAX232 oraz MAX485. Wszelkich ustawień pracy konwertera dokonujemy poprzez system tak jak ma to miejsce w normalnym porcie COM, obsługiwane prędkości 110 - 921600...
Witam. Może temat artykułu nie jest za dobry, ale nie wiedziałem jak to opisać dokładniej. Mam taki problem, od kilku tygodni próbuję połączyć Amtege8 poprzez UART z komputerem. Kiedy budowałem przejściówkę opartą o układ MAX232 to chyba spaliłem mój port COM w komputerze bo teraz to nawet echo na tym wejściu nie działa. Na wtyku jest napięcie na wszystkich...
Witam, mam problem i proszę o pomoc. Posiadam czytnik RFID, który ma wyjście TX. W terminalu na komputerze odbiera ok. przykładowy odczyt (0A00A295DD). Dane wysyłane są w 10-ciu znakach i działa to dobrze, praktycznie żadnych błędów. Teraz opiszę mój problem. Chciałem zacząć od prostej obsługi. Czyli odbiór danych przez UART. Wpisanie jednego odczytanego...
Witam, Napisałem program dobierający dane poprzez UART4 z wykorzystaniem DMA, komunikacja ma docelowo odbywać się z giroskopem. Pierwsza ramka danych ma jednak inną długość niż pozostałe. Czy można zmienić długość bufora DMA po odebraniu pierwszej ramki? Próbuję to zrobić w ten sposób, że przy injcalizacji DMA podaję adres i długość bufora początkowego,...
Chcę w przerwaniu odbierać znaki na UART. Odbieram już pojedyncze znaki a nawet całe "słowa". Ale problem polega na tym, że w rzeczywistości to co odbieram to ciąg pojedynczych wyświetlanych znaków (zmiennych) jeden po drugim tworzących "słowo". A ja chcę stworzyć z nich zmienną typu string i nie wiem jak je do siebie dodać. Mam przerabiać każdą w locie...