Cześć chcę napisać program obsługujący transmisję pomiędzy komputerem a mikrokontrolerem poprzez RS485. Wykorzystuje do tego celu układ max3483. Czytałem dokumentację ST w której proponowane są dwa rozwiązania co do zarządzania linią sterującą kierunkiem transmisji: 1. Wykorzystanie przerwania od USARTA-TC oraz przerwania od DMA TC. 2. Wykorzystanie...
Witam Mam pare pytan odnosnie rs485 i atmeg... Naogladalem sie paru prostych projektow na tej szynie tj rs485 i chcialem zrobic cos swojego - Sterownik pieca CO z panelem sterowania na 2 pietrze domu... Modol wykonawczy oparlem na atmega88 - sa to 3 przekazniki, ds18b20.. i pare wejsc Modol "sterowania" oparlem na atmega32 lcd2x16. Oba urzadzenia chce...
Witam, Komunikuje ze sobą dwa Uc: Atmega8 - panel z wyświetlaczem i guzikami Atmega32 - baza gdzie mam wszystkie czujniki Kwarce 14.746 Mhz w obydwu przypadkach Transmisja dwukierunkowa half-duplex przez rs-485. W uproszczeniu panel z wyświetlaczem ma za zadanie wyświetlać wszystko co mu wyśle baza, czyli 21 znaków x 8 lini = 168 bajtów. Wysyłanie realizuję...
Witam, mam następujący układ: płytka z atmega128 i ENC28J60 połączenie db15 (taśma 15-sto żyłowa) z płytka z 16x rs485 połączenie RS485 z płytką z atmega32. Z serwera www jest inicjowana transmisja do ENC28J60, m128 za pomocą SPI (Ffreq/2 18432000) komunikuje się z ENC28J60, pobiera dane ustawia odpowiedni RS485 za pomocą zatrzasku 74HC595 i wysyła...
Jednak jest to dość splątane, czyli zarówno UART jak i USART może sterować RS485? Jedyny mocny wyróżnik dla mnie między USART a UART to linia zegarowa poprowadzona między urządzeniami. Tak, UART jak i USART można podłączyć pod transceiver RS485. RS485 operuje na jednej parze różnicowej więc w ogóle w tym przypadku nie używa się dodatkowej linii zegarowej....
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, Mam problem z odbieraniem danych po RS485 (a w zasadzie to chyba raczej z RS232). Mam dwa procesory. Jeden master, drugi slave master.c: #include <avr/io.h> #include <avr/interrupt.h> #include "lcd.h" #include <util/delay.h> unsigned char z,licznik; char bufor[10]; /*****************************Inicjaliza...
Skoro nikt mi nie potwierdził że schemat jest dobrze to ja sam potwierdzę (jest dobrze, przetestowałem na żywo). Atmega16, zewnętrzny rezonator kwarcowy 16MHz. Rzeczywiście max to 1Mbps. Teraz kolejne pytanie. Transmisja asynchroniczna działa bez problemu, natomiast jak chcę przesłać dane wykorzystując transmisje synchroniczną to odbierane są krzaki......
Przesyłam sobie dane przez RS485. Na linii są dwa urządzenia i oba mają mieć możliwość nadawania. W związku z tym, gdy jedno skończy nadawać, powinno wyłączyć układ sterujący linią. Niestety jest problem przy transmisji USARTem przez DMA. Przerwanie transfer complete generowane jest wtedy, gdy DMA skończy swoją pracę, natomiast jeszcze nie wszystko...
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...
Witam. Jakiś czas temu na forum Budowa. Schemat blokowy i elektryczny konwertera przedstawiają rysunki poniżej. Głównym elementem jest moduł USR-TCP232-T2 Chińskiego producenta firmy USR IOT. Producent na PCB modułu umieścił dwa układy kontroler Ethernet DM9051NP firmy DAVICOM pracujący w standardzie IEEE 802.3, 10/100 Base-T/TX PHY i mikrokontroler...
Witam prosiłbym o pomoc z uruchomieniem transmisji RS485 pomiędzy Atmegą644P a PC z przejściówką Link do schematu : Przejściówka: Definicje: #define UART_DE_PORT PORTC #define UART_DE_DIR DDRC #define UART_DE_BIT (1<<PC5) #define UART_DE_ODBIERANIE UART_DE_PORT |= UART_DE_BIT #define UART_DE_NADAWANIE UART_DE_PORT &= ~UART_DE_BIT #define...
Po pierwsze jak odbierasz w przerwaniu RXC to po co sprawdzasz flagę czy jest odebrany bajt? Wiadomo, że jak jest przerwanie to coś czeka w buforze odbiornika. Co to timeout to wykorzystaj timer. Jego licznik jest niezależnie inkrementowany, można nawet wykorzystać przepełnienie i przerwanie z tym związane do zresetowania maszyny stanu związanej z USART.
niewiem czy taki sposób sprawdzania czy nastąpiła kolizja da jakie kolwiek efekty - jeśli dwa transceivery próbują wymusić przeciwne stany, to stan na obu liniach będzie zbliżony i znaczenie będzie miała histereza. Dodatkowo nie zerowa rezystancja linii transmisyjnej może sprawić, że na obu końcach wystąpią całkiem przeciwne stany. Pisząc o przerwaniu...
O coś takiego chodziło? HAL_UART_IRQHandler(&huart3); HAL_UART_TxCpltCallback
Witam Najlepiej użyć kosci TP-UART i problem rozwiązany ale cena 150zl netto powala!!! Wlasnie jestem na etapie testowania rs485 MultiMaster i tak: Kosc sn75176 docelowo sn75lbc184 obsługa do 128 nadajnikow. Kanal A poprzez rezystor podciągniety do VCC Kanal B poprzez rezystor do GND. Tylko w jednym sterowniku calej sieci i terminatory 120 na koncach,...
Tak. wiem, że tak nie można. Niestety, inaczej też mi nie wychodzi. Wyglada to tak: KOD: void uart_init(unsigned int ubrr) { /* 9600 bit/s */ UBRRH = (unsigned char)(ubrr>>8); UBRRL = (unsigned char)ubrr; // 25 -> 4000000 /* RxD=>ON; ISR(koniec odbioru), TxD=>ON*/ UCSRB = _BV(RXEN)|_BV(RXCIE)|_BV...
Witam Walczę z tym tematem już dość długo i nie mogę sobie sam poradzić, może wy pomożecie... Chcę z komputera za pomocą terminala sterować Attiny2313 za pomocą rs485. Wszystko dział ok po rs232 po 485 już nie. Po niżej pokażę schemat i program. Na schemacie jest podpisany układ MAX3468 ale w rzeczywistości jest tam MAX485 podłączony tak jak na schemacie....
To jest mój testowy kod tylko do nadawania bo na tym się skupiłem: [syntax=c] #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> int main(void){ // konfiguracja usart PORTC.DIRCLR=PIN2_bm; // RX wej PORTC.PIN2CTRL=PORT_OPC_PULLUP_gc; PORTC.DIRSET=PIN3_bm; // TX wyj PORTC.OUTSET=PIN3_bm; USARTC0.CTRLC=USART_CHSIZE_8BIT_gc...
A jakiż jest ten stan utzrymywany przez te oporniki? I jakie są jego zalety? A no taki że będzie generował znaki w USART-cie. Co jak nie trudno sobie wyobrazić spowoduje przekłamanie kiedy zacznie się prawdziwe nadawania USART-a
Mr_T_ -> ja z kolei zrobiłem z powodzeniem na ATtiny2313 obsługę RS232 a nawet RS485 i to w pełni z użyciem przerwań i buforem cyklicznym dla nadawania i odbioru - dzięki czemu wysyłanie czy odbieranie już z poziomu własnej aplikacji sprowadzało się tylko do wpisania czegoś do bufora lub odczytu stamtąd po sygnalizacji odpowiednim przerwaniem. Wszystko...
Witam Mam taki problem... Otóż, próbuję "podejrzeć" transmisję RS485 pomiędzy modułami pewnego systemu. Jest to centralka + panel dotykowy LCD + moduły sterujące oświetleniem (ściemniacze). Całość jest już dość wiekowa (ok 2000 roku), oparta na PIC 17C42. Transmisja jest zrobiona standardowo , na USART + SP483. Czyli normalne RS485. Ale, nie znam ani...
Witam forumowiczów, Sytuacja wygląda tak, że z jednostki nadrzędnej słane są ramki danych, Po każdej ramce jest szczelina czasowa tak aby nasza ATmega zdążyła odpowiedzieć, Mamy Atmega16 kwarc 16MHz i transmisje 57600 (w przybliżeniu), Gadamy przez RS485 tak, że między ramkami jeszcze przełączam linie bufora, Steruje równocześnie buforem wejścia i wyjścia...
Wyprowadzenia 2 i 3 slave, czyli DE/RE też muszą być sterowane odpowiednio z procesora, bo twoje slave będą także odpowiadać. Gdyby slave tylko nasłuchiwał, to możesz podłączyć to na stałe, tak, aby odblokowany był tylko odbiornik. Na generatorze wewnętrznym to raczej nie pójdzie za dobrze, szczególnie jeśli to ma pracować w szerokim zakresie temperatur....
Bywa, że w projekcie trzeba dodać dodatkowy port komunikacyjny. Jest to problemem, gdy taka potrzeba zajdzie w końcowej fazie projektu. Wymiana mikrokontrolera na większy spowoduje konieczność zmiany PCB. Dodatkowy port USART, może być potrzebny tylko podczas uruchamiania urządzenia (np do debugowania) albo tylko do upgrade softu. Wtedy może przydać...
Witam Urządzenie powstało w zasadzie trochę z mojej niechęci do kupowania 100% gotowców , a z drugiej strony jest to zatarcie małego błędu popełnionego przy budowie wcześniejszego urządzenia, którym był niewielki woltomierz i amperomierz zainstalowany w mojej mikro instalacji fotowoltaicznej na działce ogrodowej. Ponieważ zainstalowany miernik poza...
Kawałek biblioteki UART dotyczący tego uC: Kod: c Chyba moje możliwości są ograniczone żeby zamienić to tak aby to co mi wysłałeś działało tak jak ten fragment: [syntax=c]#if defined (__AVR_ATmega168__) #define UCSRB UCSR0B #define TXEN TXEN0 #define RXEN RXEN0 #define RXCIE RXCIE0 #define TXCIE TXCIE0 #define UDRE UDRE0 #define UBRR UBRR0 #define...
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)?
Już pisałem do portu dochodzą dane, już to sprawdziłem... Elementów w obudowach SMD nie sprzedają ze spalonymi wyprowadzeniami, ale istnieje ryzyko spalenia wyprowadzenia podczas lutowania, z czym już się spotkałem. Port sprawdziłem, dane są wystawiane i odbierane prawidłowo (zapalanie diod i reakcja na klawisze) . Ma ktoś jakiś pomysł co może być nie...
(at)Freddie Chopin Przepraszam za zawracanie gitary. Odwouje to co napisaem w tym wątku. W teście przypadkiem ustawiłem liczenie przerwań niewłaściwego U(S)ARTu. Jakie znasz trzeba było napisać nie traciłbym czasu. Myślałem, że napisałem że chodzi mi tylko o przerwania. Jeżeli było to niezbyt jasne to jest mi naprawdę przykro. Nie napisałeś co, gdzie,...
Witam wszystkich. Głupia sprawa ale bardzo uciążliwa. Uruchomiłem RS485 na USART-cie. Robię to na half duplex. Odpowiednio wystawiam 1 aby dane wychodziły. na magistrali są 2 rezystory po 120 ohm. Wszystko niby działa ale jest ale. Jeszcze przed wysłaniem danych w odbiorniku muszę odebrać na początku jeden śmieć. Dopiero teraz mogę w pętli odbierać...
tu jest biblioteka z przykładami W pliku DMXSerial.cpp nie ma definicji stałej RXCn w wypadku użycia Atmega8 i wygląda to na błąd. Jest: [syntax=c] #if !defined(DMX_USE_PORT1) && defined(USART_RXC_vect) // These definitions are used on ATmega8 boards #define UCSRnA UCSRA // Control and Status Register A #define TXCn TXC // Transmit buffer clear [/syntax]...
Witam Mam problem z komunikacją między dwoma uC. Dane są odbierane, jednak nie zgadzają się z wysyłanymi. Atmega32 - pełni funkcję Mastera #define VUART 38400 #define VUBRR F_CPU/(VUART*16)-1 #define T0_start 1 #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/iom32.h> #include <stdlib.h>...
Markosik20 może mieć rację. Częstym błędem jest niewłaściwe ustawienie dzielnika USARTu Atmegi (błąd zaokrąglenia, szczególnie ważny dla szybkich transmisji lub niskiej częstości użytego kwarcu - nawet w manualach są gorsze propozycje niż optymalne rozwiązanie, warto sprawdzić ręcznie dla sąsiednich wartości dzielnika, tzn. dla X będą to x-1 oraz x+1)....
schemat jest następujący - standard: te 4 elementy 3 rezystory i kondensator są niezamontowane - jest to polecane przez ST obwód zamiast rezystora 120R (mniej prądożerny). kod z maina: RCC_APB2PeriphClockCmd(RCC_APB2Perip... ENABLE); GPIO_Conf.GPIO_Pin = GPIO_Pin_10; GPIO_Conf.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Conf.GPIO_Speed = GPIO_Speed_50MHz;...
I masz w ten sposób "spokój" z wydajnością, bo procesor wisi sobie w pętli w czasie, gdy UART transmituje, zamiast zająć się czymś pożytecznym. Jeśli masz na myśli zmianę kierunku na RS485, to czekaj na zakończenie transmisji tylko po wysłaniu ostatniego bajtu przed zmianą kierunku. Nie ma sensu czekać po każdym bajcie. Zrób oddzielną procedurę zmiany...
I drobna aktualizacja mechanizmu działania. Do tej pory było tak, że wysyłka realizowana była w oparciu o DMA, odbiór w przerwaniu USARTu. Od czasu do czasu udawało się ominąć jakieś przerwanie i zgubić bajt, przez co cala ramka była do wyrzucenia. W każdym razie całkowita liczba różnych błędów to około 1,6% było. Co samo w sobie nie jest problemem,...
Korzystam z tego [url=]modułu RS485 bazującego na układzie SP3485 ([url=]schemat), a nie jak pisałem MAX3485. Wyprowadzenia /RE oraz DE odpowiadające za kierunek transmisji są ze sobą połączone. Wykorzystuje zestaw [url=]ZL31ARM, konwerter[url=]AVTMOD14 oraz najnowsze środowisko TrueSTUDIO. Po przetestowaniu programu z konwerterem USB-UART zamiast konwertera...
Witam Podjąłem pierwszą próbę skomunikowania mikrokontrolera Atmega16A z PC. Wysyłam z Atmegi znak i chciałbym go odebrać w terminalu. Niestety coś robię nie tak i w terminalu nic się nie pojawia. Proszę o pomoc. Do komunikacji wykorzystuję konwerter UART->RS485(MAX485): Oraz konwerter RS485 to USB(CH340): Połączenia wyglądają następująco: Mikrokontroler...
Chodzilo mi o wykorzystanie protokolu, tak aby go nie pisac. Z tego co przeczytalem to RS485 to tylko transmisja z ramkami(tzn USART). Protokol trzeba sobie samemu "stworzyc", czyli napisac rozpoznanie do ktorego Slave'a chce wysylac dane itd. To upraszcza mi budowe ukladu, komplikuje soft. Jednak mysle, ze latwiej jest dopisac te kilka linijek kodu...
Najlepiej tak: Polecam ATmega128. - komunikacja mega128 z PC przez UART1 po RS232 - Komunikacja pomiędzy innymi uC przez UART2 po RS485(daleka transisja + stabilność) Może i mega128 jest troche droga, ale warta swej ceny. Zrobiłem na niej komunikacje między PC oraz komunikację z 26 małymi układami wykonawczo zbiorczymi (ATtiny2313). układzik śmiga do...
Czyli z tego co rozumie to do komunikacji potrzebuje w sumie 4 pinów RX, TX, RS485 i masę :?: (Jeżeli źle to proszę poprawcie). Jeżeli dobrze rozumuje to z tego co mówisz i zarówno z tego co zassałem z sieci to transmisja od strony PC jest jak do rs232 a od strony procesora tylko dodatkowa pętelka i warunek (w standardzie usarta) i po problemie :?:...
Dziękuję uprzejmie za zainteresowanie i sugestie. :-D O RS485 mogę napisać tyle, że działa poprawnie. Bez oporników (terminatorów - linia wymaga dwóch!) rzeczywiście był niezły śmietnik (kiedyś oglądałem pod oscyloskopem). Dałem trochę większe (220 omów) niż przewiduje standard, gdyż transceiver RS232/RS485 wymagał takich (w specyfikacji - nie chciałem...
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,...
Znalazłem to: Czy coś z tego da się wykombinować ?
trochę poszperałem w necie i znalazłem gotową bibliotekę do obsługi rs232.....i tu pytanie gdzie robię błąd Nie szukasz gdzie potrzeba! Dokumentacja atmegi32: #include <avr/io.h> #define baud ((F_CPU/(predkosc*16UL)&... #define predkosc 2400 // #define F_CPU 16000000UL // #include <stdio.h> void usart_init()...
Swego czasu na wspomnianym artykule z Elektroniki Praktycznej wzorowałem ramkę danych używaną w moim urzadzeniu. Poczyniłem wtedy [url=]automat sekwencyjny dekodujący nadlatujace depesze "w locie" (ster dzieje, kod z masą warningów więc polecam go tylko jako przykład "że tak się da"). Z kolei w książce Mirka bardzo zbliżony mechanizm zrealizowany jest...
Próbowałem podłączać również na odwrót czyli B do GND A do Vcc, ale wtedy transmisja ustaje. Działa jedynie gdy obie linie są podpięte do Vcc. To samo tyczy się rezystorów 4.7k. Nie mam żadnego specjalnego przewodu. Używam dwóch cienkich miedzianych drucików ze skrętki. Długość nie przekracza pół metra. Prędkość 9600 bodów. taka sama ustawiona w terminalu....
tehaceole, albo się totalnie nie rozumiemy, albo coś tu jest mocno nie teges. Przecież nawet w pokazanej przez ciebie nocie piszą nie o tym, żeby nie łączyć mas, ale jak je łączyć w sytuacji, kiedy mają podobny potencjał, lub różny. Przecież rysunek 4-8 i 4-10 wyrażnie pokazuje połączenie mas wszystkich urządzeń. Nie mówie tu o masie całego urządzenia,...
Dziekuję za wszystkie dotąd udzielone mi porady. Jeśli chodzi o transmisję binarną printbin, inputbin to próbowałem wyszło super przede wszystkim zmniejsza liczbę byte ramki chodzi mi o to, że gdy wysyłam parametr do pwm np. 255 to używam 3 znaków ASCII czyli 3 byte a binarnie wyśle byte 255 i to tyle ale w transmisji nie mogłem korzystać z przerwania...
RS485 lub 1-wire (zakładam że odległości będą kilku metrowe)
Chciałbym zralizować transmisje RS485 na stm32f103rb, gdyż mam pod ręką konwerter usb-rs485 oraz max3485. Moja ramka składa się z 8 bajtów.Jeśli chodzi o odbieranie to do mojego bufora dane wpadają poprawne czyli prawdopodobnie wszystkie ustawienia fizyczne mam poprawne. Niestety po kilku wysłaniach danych z PC z rzędu do arm pojawia się przekłamanie...
Problem pojawia się na mikrokontrolerze STM32F100RB, aczkolwiek wydaje mi się, że nie ma on związku z samym mikrokontrolerem. Próbuje odczytywać dane z ultradźwiękowego anemometru, który jako jedyną magistralę cyfrową posiada RS485 (ma też wyjścia analogowe). Podłączam go do mojego sterownika przy pomocy takiego konwertera: . Jest on oparty na układzie...
Zobacz jak zachowa się wtedy wyjście transceivera i co na to odbiornik USART, bo raczej nie będzie zadowolony (start bit).
Jaka prędkość transmisji baud ? Schemat masz poprawny. Dzięki za czas poświęcony na analizę schematu. Parametry transmisji: 19200 8N1 Przy czym problem raczej nie ma związku z prędkością transmisji. Nawet pojedyncza zmiana sygnału przełączającego nadajnik/odbiornik powoduje zmianę sygnału na linii odczytu danych. ------------- Właśnie zrobiłem jeszcze...
Dziękuje Panie Tomku. Poprawiłem program, czy tak według Pana będzie dobrze? : Dodano po 10 Sprawdziłem. Nadal urywa dwa ostatnie znaki. Chyba użyje delaya. Problem dotyczy zawsze dwóch ostatnich znaków. Wydaje mi się, że funkcja printf wykonuje wysyłke wszystkich znaków, za wyjątkiem dwóch ostatnich , które lądują w buforze. Jeśli pierwszą instrukcja...
Będzie porównywalnie odporny jak RS485 (bo UARTa to chyba nie chciałeś puszczać jako czysty UART?) Czyli będzie kilkadziesiąt razy bardziej odporny niż I2C. CANa w STM32F103 chyba da się puścić na 2 Mbps. Tylko weź pod uwagę narzut na obudowę ramki (zresztą przy UARCie też on jest nawet jak nie ma CRC). Jak policzyłeś że potrzeba Ci 2 Mbps?
komunikacja pomiędzy dwoma STM32 poprzez RS485
Witam kolegów Potrzebuje stworzyć układ który skonwertuje dane odebrane przez SPI na RS485. Prędkość nie jest tu istotna max kilkanaście razy na sekundę. Sprawa wydaje się prosta, ale chce użyć jakiegoś małego uC żeby nie zajmował dużo miejsca. Preferowana obudowa to DIP ze względu na możliwość łatwej wymiany. Patrząc na uC AVR to najlepszy wydaje mi...
odp. 1: Miernik ma wyjście optoizolowane, można podłączyć dowolny interfejs. W przypadku RS485 powstanie problem zmiany kierunku. Można poświęcić wolny GPIO uC (kilka wolnych jest) lub konwerter USART-RS485 załatwi problem zmiany kierunku. odp. 2: Zależy co kto lubi. Zrobiłem tak, bo nie musiałem pisać aplikacji rejestrującej przychodzące dane, wystarczy...
Brak obsługi RS485 (sygnału DE) nie stanowi problemu: Sprawdzone - działa, również w wielu urządzeniach produkcyjnych.. Ostatnio do tematu wracałem i byłoby niefair gdybym nie napisał że - co prawda takie rozwiązanie działa to nie jest wolne od wad. W tym wypadku nadajnik w RS485 jest włączany tylko gdy USART w procku wysyła zero.. Gdy jedynkę - układ...
Dlaczego mając do dyspozycji sprzętowy usart używasz programowego? Podstawowy błąd Arduinowców to "problem" usarta. Do pseudo debugowania (Arduino nie ma debugera) używa się usart-usb. Większość Arduino ma 1 usart. Dlatego nie widze sensu uzywania UNO itp wynalazków, jedyne sensowne rozwiązanie to ArduinoMega2560/1280. Jedyna wada to rozmiary, wad...
Zajrzałem do opisu LPC4370. Jest tam sprzętowe liczenie CRC dla SD/MMC, USB0 (nie ma dla USB1?), Ethernet-u, CAN (obu portów). Ale dla USART-ów nie. A jak to jest dla STM32?
Witam Bardziej profesjonalnie jest wszystkie układy potraktować jako slave . Każdy słucha i czeka na przerwanie z uarta , jak je otrzymuje odbiera zawartość z udr porównuje i albo odbiera dalej albo ignoruje i czeka na kolejny adres . Atmel wyposażył układy w tryb multimaster ,który się do tego świetnie nadaje i warto o nim przeczytać w dokumentacji...
Na razie zaczynam robić komunikacje i master ma jedynie odbierać znaki a slave ciagle nadaje. Dorzucam kod slave: [syntax=c]#include <avr/io.h> #include <inttypes.h> #include <util/delay.h> #include <stdio.h> #include <avr/interrupt.h> #define F_CPU 8000000UL void USARTInit(uint16_t ubrr_value) { UBRRL = ubrr_value; UBRRH...
Moim zdaniem płytka jak na załączonym linku powinna wystarczyć. Marek
W RS485 nie ma sterowania przepływem za pomocą linii RTS i CTS. To łącze różnicowe gdzie masz sygnały R+ R- i T+ T- (dla pełnego duplexu). Sterowania przepływem jest na poziomie softu. Chyba że pytasz o konfigurację UART'a, wówczas możesz w nim wyłaczyć sterownie przepływem, ale port będzie czynny i odbierał znaki jak i wysyłał. Różnica między RS-232...
Możesz użyć programowego uarta do komunikacji z bootloaderem i sprzętowego do obsługi rs485 , można też tak napisać bootloader żeby przy starcie systemu czekał na jakiś znak po rs232 a po chwili przełączał się na rs485 . taką funkcję można zrealizować na układach ttl . Minimalnie wystarczy nawet jedna zworka do przełączania wejścia rx mikrokontrolera...
Witam, Po uruchomieniu trzech interfejsów RS232 w STM32f103rb przyszedł czas na RS232 w STM32f407 i odrazu problem. Zrobiłem konfigurację USARTA i wysyłam w pętli znak 'a' a otrzymuję jakieś E z indeksem dolnym 1. Konfiguracja : [syntax=c] void init_USART1(){ /* This is a concept that has to do with the libraries provided by ST * to make development...
W Tera Term mam ustawione 8-bitów danych, bez kontroli parzystości, 1 bit stopu. Szybkość transmisji jest ta sama. Odczytywanie w Tera Term "Hello world" działa. Coś takiego napisałem ale nie działa. Jest w stanie ktoś coś podpowiedzieć? [syntax=c]void send_char(char c) { while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); USART_SendData(USART2,...
Witam, Czytając to forum i wzorując się na przedstawianych przykładach kodu postanowiłem napisać swój pierwszy program - komunikacja Atmega8 -> PC przez RS485. Na początku miałem małe problemy z nawiązaniem samej komunikacji ale po paru zmianach w kodzie udało mi się z tym uporać. Poniższy kod działa ale nie do końca. Założenie jest takie żeby mikroprocesor...
Witam Poszedłem za twoją radą i odpaliłem najpierw rs232 #include <stdint.h> #include <avr/io.h> #include <util/delay.h> // Define baud rate #define USART_BAUD 9600ul #define USART_UBBR_VALUE ((F_CPU/(USART_BAUD<<4... void USART_vInit(void) { // Set baud rate UBRRH = (uint8_t)(USART_UBBR_VALUE&g...
Mam dla Ciebie inną propozycję. 0. USB zostaw jak jest, ale pomyśl o dodatkowym wejściu VBUS. Lepiej wiedzieć czy jesteś podłączony do hosta czy nie. To znacznie poprawia obsługę portu od strony programowej. 1. połączenie karty pamięci i 4 kontrolerów ETH nie jest dobrym pomysłem. Transmisja danych między uC i kartą może blokować SPI na długi okres....
Raczej sugerowalbym USART ale na RS485, on umozliwia podlaczenie wiecej odbiornikow i nadajnikow.
A ten "jakiś czujnik" to komunikuje się ze światem zewnętrznym po SPI, I2C, USART TTL, RS232, RS485, 1Wire...?
Cześć! Posiadam od wielu lat (co najmniej 4) płytkę uruchomieniową Open107V od Waveshare. Nigdy nie miałem z nią problemów, i każdy projekt robiłem na niej, bo ma wszystko ładnie wyprowadzone i szybko mogłem sobie debugować instalację. Obecnie robię układ w którym 2 układy (drugi to STM32F407) komunikują się ze sobą przez RS485, korzystając z gotowego...
Witam, mam problem z zawieszaniem się freeRTOSa. Program grzęźnie w funkcji vListInsert void vTaskUSART3(void * pvParameters) { portCHAR i; vSemaphoreCreateBinary( xSemaphore_US3_O ); xSemaphoreTake( xSemaphore_US3_O, 0); xQueue3_TX = xQueueCreate( 32, sizeof( portCHAR ) );//32 xQueue3_RX = xQueueCreate(...
Witam Pracuje obecnie nad projektem odbiornika sygnały DMX512. Sprawa wygląda następująco: -Sygnał danych czytany jest z urządzenia zwane Kwamatik USB2DMX, obsługiwane przez program Q Light Controller. „Po drodze” do uC trafia jeszcze na driver RS485 a potem na PIN RX UART1 oraz PIN PB9 skonfigurowanego jako wejścia dla Timera 11 pracującego...
Szanowni Forumowicze, zwracam się do Was z takim problemem: mam taki program do sterownika opartego na kontrolerze ATMEGA 164. Mam też kod źródłowy w C i problem polega na tym, że przy zaniku sygnału DMX kontroler gasi wszystkie światła, a miałoby być tak, że przy zaniku sygnału miałoby utrzymywać ostatni stan wyjść zapodany DMX'em. Opis może trochę...
Witam wszystkich mam następujący problem, otóż chciał bym stworzyć funkcję która pobiera z portu rs232 cały napis, który następnie mógł bym przekonwertować do postaci integer, czy double lub inne zmiennej liczbowej. Próbowałem to zrobić w oparciu o własną funkcje uart_get_string ale funkcja pobiera tylko jeden znak. Powyższe potrzebne mi jest do np....
Witam wszystkich kolegów. Na samym początku życzę wszystkim wesołych świąt i wielu interesujących pomysłów na nowe konstrukcje. Chciał bym wam przedstawić konstrukcje swojego wielokanałowego kontrolera temperatury współpracującego z czujnikami Pt100. Zastanawiałem się czy pewno pokazać tą konstrukcję bo niestety okazało się że ma drobny błąd. Trzeba...
Witam. Jakiś czas temu pokazałem swój uniwersalny kontroler do automatyki domowej. Od tego czasu powstała jego nowa wersja oparta na mocniejszym sterowniku Mega128 i główny kontroler umożliwiający zarządzanie systemem z poziomu przeglądarki internetowej. Projekt powstaje bardzo wolno, a dzisiaj pokażę, jak działa stary model sterownika z modułem internetowym....
No fakt, w kodzie powyżej jest tyle skomplikowanych odwołań do rejestrów, że zrozumienie ich zajmie na pewno więcej czasu, niż zrozumienie 10 parametrów konfiguracji HAL i z 5 potrzebnych do tego samego funkcji HAL oraz ich argumentów. ;) Dodajmy do tego niezwykle długi i skomplikowany kod inicjowania UART na rejestrach: RS485_UART->BRR = (SYSCLK_FREQ...
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ę....
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ść...
Tak jak w temacie coś mi kod nie działa proszę o pomoc gdzie leży błąd Ps wyświetla A ale B to nie wyświetla korzystam z 8Mhz [syntax=objc] #ifndef UART_H_ #define UART_H_ //Załączenie bibliotek systemowych #include<avr/io.h> #include<avr/interrupt.h> #include<util/delay.h> //Zadeklarowanie używania lub nie RS485 #define RS_485 0 #if...
Ja na samym początku przerzucam wektory przerwań na początek pamięci RAM. A później wstrzykuję swoją funkcję w miejsce oryginalnego wektora. Po rozmyślaniu na ten temat doszedłem do następujących wniosków. 1. Możliwość dynamicznej rejestracji przerwań (najlepiej w wysoce abstrakcyjny sposób, tak aby funkcje nie musiały być publiczne) byłaby z pewnością...
Jakiś czas temu trafiłem na stronę www.whiteelectronics.pl której autor jest polskim dystrybutorem budżetowych paneli operatorskich DGUS. Z ciekawości nabyłem jeden z tych wyświetlaczy ( Aby moja biblioteka była jak najbardziej przyjazna postanowiłem, że: - umieszczona będzie w niej jedna zmienna określająca ilość zmiennych jaką wymieniamy się z panelem,...
Witam, Chciałbym nasłuchiwać co się dziej na magistrali I2C, bez ingerencji w przesyłane dane. Informacje które zostaną odebrane z magistrali I2C przesłane zostaną po USART-cie do hyperterminal-a . Do budowy tego urządzenia wykorzystałem mikrokontroler ATtiny2313, rezonator kwarcowy 20Mhz oraz transoptor LTV-817C (do izolacji między magistralą I2C,...
Jedynie trzeba zapewnić, aby w danej chwili był aktowyowany tylko jeden slave. Z tym może być problem gdy nie można podsłuchiwać co się dziele na magistrali. W takiej sytuacji najrozsądniejsze jest aby master odpytywał slave. Można użyć innych rozwiązań, np drugi usart do podsłuchiwania ale Ardiuno to ma jeden usart. Można "podsłuchiwać" wprowadzając...
Mam problem z wysyłaniem i odebraniem z rs485. Jest to ATMEGA 8 + max485. [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <HD44780.c> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <avr/eeprom.h> #include <avr/wdt.h> #include <stdio.h> #include <string.h> #include <stdlib.h>...
sprzęt za słaby do zadania. Ale możesz się pobawić np tak: Tylko po co? Gdyby była to ostateczna wersja softu to ok ale że to nie koniec rozbudowy programy, a jedynie początek. Musze dodać jeszcze 4 urządzenia na i2c oraz SoftwareSerial Przy okazji, po co pchać się w softwarowy serial? Można użyć UART SC16IS740/750/760 lub podwójnego SC16is752/762...
Głównym zadaniem urządzenia jest sterowanie diodami WS2812 z DMX. W ten sposób można sterować 512 diodami paletą 8-bit (216 "bezpiecznych" barw) lub 170 paletą 24-bit Dodatkowo urządzenie może pełnić funkcję konwertera USB-DMX. Sterownik diod potrafi obsługiwać kilka wirtualnych ekranów (warstw) niezależnych od siebie. Ekrany posiadają priorytety,...
Niekoniecznie musi to byc RS485. AVR-y mają tryb dla USART-a MPCM . Jest to tryb Master -kilka slave, przy czym transmisja jest 9-bitowa i ten ostatni bit jest znacznikiem adresu. W slave-ach łączysz wszystkie Rx ze sobą i Tx ze sobą , następnie krosujesz z Tx i Rx Mastera. Szczegóły w nocie katalogowej... EDIT: Przykładów nie podam, bo nie miałem potrzeby...
Witam, chciałbym Wam zaprezentować prostą konstrukcję, która znacznie ułatwia tworzenie i debuggowanie sieci opartych o moduły RFMxx (RFM22/23/63). Są to popularne moduły radiowe, dostępne w bardzo przyzwoitej cenie, oferujące sporo możliwości. Ktoś w czasie, gdy dostępne są tanie moduły WiFi mógłby zapytać, po co używać droższych modułów RFM? Odpowiedź...
I bufor kołowy właśnie jest wykorzystywany w bibliotece Atmela :) (at)Piotrus_999 - uważasz, że powinienem napisać tutaj własne funkcje do obsługi uarta? Panie Tomku - rozumiem zamysł, poprawię kod :) Powiem może dokładniej co mam do zrobienia i dlaczego uparłem się na tę bibliotekę Atmela. Trochę mi nie wychodziło stąd wróciłem do początku żeby sobie...
rs232 nadaje się dość dobrze (do 255 urządzeń chyba), ktoś o tym pisał już na forum (szukaj 'Magistrala danych w domku jednorodzinnym' migod Wydaje mi sie ze na rs232 to mozna podlaczyc tylko 2 urzadzenia. Oczywiscie zminiajac interfejas na rs485 mozesz laczyc stadartowo do 32 urzadzn ale mozna to robudowac. Osobiscie polecam rs485- niezawodna tania...
na jakiej diodzie???? tzn gdzie ją dałeś? ;) ja uzyskiwałem przy takim układzie prędkości transmisji 115200 przy kwarcu 11.059.200 Hz. Schemat połączeń uC z SN75176 mam dokładnie taki jak ty, poza tym że tylko 1 rezystor 120R. A tak nawiasem mówiąc - o jakim czsie przełączania mówisz? przecież przed wysłaniem ustawiasz stan wysoki i po zakończeniu wysyłania...
Pomieszałeś dwa sposoby obsługi transmisji - nie można stosować dwóch w tym samym czasie. Proponuję tu obsługę na przerwaniach i do niej się odniosę. 1. Nie widzę wywołania inicjalizacji nadawania USART w main(). Powinno to polegać na włączeniu na stałe TXCIE. UDRIE natomiast włączasz na starcie transmisji i na jej końcu wyłączasz. 2. W przerwaniu od...
po pierwsze przebrnij przez ten temat: Pamiętaj że są 3 przerwania od USARTA i w przypadku poprawnie napisanego programu (zgodnie z best pratice) wszystkie 3 powinno się wykorzystać. Tak jest też najprościej, poniekąd :) To co piszesz jest raczej nie możliwe. Sprawdź jak działa Twoja płytka bez podłączonego niczego pod RS485. Jeżeli wtedy przerwanie...