Witam serdecznie. Pisać w Bascomie zacząłem w lipcu br. To mój pierwszy program. Oto mój problem. Sieć Master-Slave na platformie RS485. Master - PC z dedykowaną aplikacją Slave - ATmega64 [syntax=basic4gl]'----------------------... Dim Tmpstr As String * 50 'dane odebrane Dim Tmpout As String * 50 'dane do wysłania '------------------------------------...
Też miałem z tym problem i kolega z Elektrody doradził mi żebym zastosował zamiast Input to Inputbin. I tak samo zamiast Print to Printbin, tyle, że ja to robiłem na RS485. Pozdrawiam
Niektóre radiolinie mają wbudowane kodowanie transmisji, ale większość z nich nie. W Bascomie można kodować dane za pomocą Xtea, ale zobacz, co się dzieje, gdy wysyłasz te same dane. Zakodowany ciąg Hexstring zawsze wygląda tak samo. Jeśli więc ktoś nagra twoją transmisję, to gdy zostanie ona odtworzona, urządzenie zareaguje tak samo. Możemy to mocniej...
Witam. Mam małe pytanie, chciałbym sterować kartami przekaźnikowymi przez PHP (www) Karty które mam to są klony KITu [url=]AVT5217, pracuja na RS485 spięte są za pomocą KITu [url=]ATV530 + kabel USB->RS232 (PL2303) W tej chwili steruję kartami przez różne skrypty [syntax=bash] #!/bin/bash stty -F /dev/ttyUSB0 raw speed 4800 echo -ne "AABC\r" > /dev/ttyUSB0;...
Jest tego sporo, DCF77, 7 x DS18B20 i DHT11 ( akurat jeśli chodzi o niego to mam wątpliwości, czy ten kod działa, bo jest na obydwu płytkach podpięty i zdarza się zawieszenie ) Nadajnik Atmega328p Dodano po 16 Odbiornik Atmega644P - trochę zmieniłem obsługę przerwania, wydaje mi się, że w przerwaniu nie powinno się wykonywać dużych obliczeń. [syntax=basic4gl]...
Niby to proste ale spędziłem 2h bez jakichś specjalnych efektów. Robię tu jakiś głupi błąd - zapisywałem to na wiele sposobów Print , Makemodbus(&H01 , 16 , &H0004 , &H010400040002300A); ale to co zwraca mi terminal to jedynie 20 30. Prośba o jakąś podpowiedź
Trzeba by poczytać troszku o RS485. Jeśli chodzi o sprzęt, to w zasadzie masz dwie główne możliwości. Pierwsza to półdupleks, czyli transmisja naprzemienna po tej samej parze przewodów, druga dupleks w układzie czteroprzewodowym (para przewodów od mastera, para do mastera). Dodatkowo korzystnie z punktu widzenia linii może być pociągnięcie między układami...
zmieniłem kod w następujący sposób #define F_CPU 1000000UL // 1 MHz // prędkość transmisji 9600 #define UART_BAUD_RATE 9600 #include <stdlib.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/pgmspace.h> #include <util/delay.h> #include "uart.h" // częstotliwość CPU w...
Witam wszytkich, Od kilku dni próbuję się nauczyć obsługi modbus rtu w bascomie i na podstawowym programie z helpa się wyłożyłem. Poradźcie dlaczego wpisując mój procesor w poniższy kod wywala mi błędy? Czy ta biblioteka jest tylko pod dany procesor? Proszę podpowiedzcie. [syntax=vbnet]'-------------------------...
Witam. Mam problem z protokołem MODBUS RTU na ATMega644, który błędnie interpretuje mi ramki. Kod w BASCOM wygląda następująco: a właściwie nie komunikuje się) się z urządzeniem zewnętrznym przy pomocy MODBUS'a. Chciałbym to zrobić wykorzystując MODBUS RTU (teoretycznie zostaje mi jeszcze ASCII),a do zestawu mam podpięty jeszcze skaner nasłuchujący...
Jakby ktoś szukał gotowego rozwiązania wklejam to bazujące na obsłudze UART w przerwaniu zamiast Input. W pełni działający kdo poniżej: [syntax=basic4gl] $regfile = "m32def.DAT" $crystal = 8000000 $baud = 4800 Nadawanie Alias Portd.7 Config Nadawanie = Output Enable Interrupts Enable Urxc On Urxc Odbierz Dim Kod_znaku As Byte Dim Tekst As String * 1...
Problem w tym że nieprawidłowo sterujesz portem , uart jest urządzeniem peryferyjnym i print coś tam sprowadza sie do wysłania do właściwego rejestru wartości kodu ASCII przestawiając port na odbiór wyłaczysz nadajnik zanim skończy gadać ... tak samo trzeba odpowiednio sterować nadajnikiem od strony komputera . Przerobiłem to zagadnienie w bascomie...
Witam Na początku zaznaczę ze jestem początkujący i jest to mój pierwszy projekt i nie proszę o podanie mi odpowiedzi na tacy tylko ukierunkowanie na odpowiednie rozwiązanie...to tyle na wstępie:) Projekt: Status unit - służy do przesyłania informacji o stanie wejść mikrokontrolera-nadajnika do odbiornika i wyświetlaniu informacji na lcd wszystko opiera...
Panowie, Panie potrzebuję pomocy bo siedzę i siedzę i nie mogę sobie dać rady z kodem BASCOM. Jestem początkujący, a raczej raczkujący w AVR, programowaniu itd. :( Próbuję zbudować sterownik do pokoju który ma wykonywać: -sterowanie światłem (8x) -sterowanie piecem/kotłem gazowym (temperatura noc i dzień-dwie różne temperatury) -każdy przycisk ma dwie...
Tu są opisane przerwania od seriala:
Witam Napisałem program, który dekoduje sygnał DCF77 ( ustawia flagę ), następnie zapisuje ( przy pierwszym uruchomieniu ) wartości zmiennych do PCF8563 i cztery razy na dobę wysyła przez RS485. do tego dwa razy na dobę koryguje czas w PCF8563. I to działa bez problemu. Do celów testowych mam podłączony LCD. Chciałem dołączyć możliwość pomiaru i wysyłania...
Witam! Państwa bardzo serdecznie, jednocześnie zwracając się do Państwa z poniżej opisanym problemem. Otóż chcę zrealizować transmisję w oparciu o standard RS485 między dwoma mikrokontrolerami ATtiny2313 firmy ATMEL Corporation. Schemat zestawionego układu przedstawiono na poniższej rycinie. Próbując zrealizować ową transmisję napisałem kilka programów...
Witam, potrzebuję zrobić komunikację miedzy 2 procesorami ATmega16. Jeden wysyła zmienną typu Byte (Status) z informacją o stanie wejść, a 2 to odbiera. Natomiast 2 będzie wysyłał do 1 także zmienną Byte (Settings) z informacjami konfiguracyjnymi. Dodatkowo chciałbym wysyłać sumę CRC w obu kierunkach. Transmisja w obu kierunkach jednocześnie! Bity będą...
Witam. Robię trzycyfrowy wyświetlacz led sterowany przez rs 485 (na razie 232) i zastanawiam się nad sposobem przesyłenia danych , poczytałem posty na tym forum + specyfikację gotowego protokołu i postanowiłem że chciałbym przesyłać: 1 bajt startu , 2 bajty adresu , 1 bajt rozkazu , 2 bajty danych , 2 bajty sumę kontrolną , 1 bajt koniec ramki . Pytania:...
W Bascom jest to załatwiane automatycznie kiedy skonfigurujesz sobie pin który jest odpowiedzialny za przełączanie. Kiedy masz włączone IDE Bascom naciśnij klawisz F1 na klawiaturze i w nowo otwartym oknie Helpa wpisz "Config Print" Alternatywnie możesz to samo zobaczyć Online pod tym linkiem [url=]Link, albo po polsku u mnie na stronie [url=]Link
Bo jak ja zacznę coś tworzyć to mi flash-a w procku nie starczy a pewnie potrzeba do tego dwóch linijek kody aby coś wysłać i odebrać z tego nieszczęsnego FT232RL :) ale dlaczego nieszczęsnego FT232RL - przecież komunikacja za jego pomocą to dokładnie to samo co przez MAX232 - tyle że tu masz o wiele lepszy samochód - mercedes - bo pozwala łączyć się...
Witajcie Z bootloaderem na 485 to nie tak prosto... :-( Trzeba oczywiście bootloadera przerobic by obsługiwał TX/RX - należy pamiętać że z tym RS mam SIMPLEX a nie DUPLEX. Deklarujemy który pin steruje transceiverem RS485 Config Print0 = Portd.4 , Mode = Set Config Pind.4 = Output Trzeba zastrzec z zwykłym protolole pewne znaki które są zarezerwowane...
Ma ktoś jakieś pomysły jak to przeskoczyć? Zainstalować najnowszą wersje BASCOM'a (2.0.7.6.001) :). Tak z ciekawości uruchomiłem program na swoim zestawie, dane odbierał terminal. Za pierwszym razem skompilowałem program wersją 2.0.7.5.003, program wysyłał jedną ramkę (printbin) i stanął. Przy drugiej próbie użyłem BASCOM'a 2.0.7.6.001 i ramki zostały...
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...
Witam Mam problem z przesyłaniem kilku zmiennych po RS485, tzn. wartość zmiennych przesyłana jest prawidłowo, ale w odbiorniku zmienne zamienione są miejscami. A mianowicie nadajnik wysyła np. zmienne a=504 b=129 c=292, a odbiornik odbiera je tak a=292 b=504 c=129. I nie mogę dojść dlaczego tak mi się dzieje. NADAJNIK [syntax=basic4gl]$regfile = "m32def.dat"...
Z ta funkcją Config Print nie miałem jeszcze problemów więc problemu szukałbym gdzie indziej. Łatwo o błahy błąd. Czy na pewno masz wybrane zewnętrzne taktowanie? uC programuję programem MkAvrCalculator i oczywiście wybieram zewnętrzny kwarc. Wymieniałem uC i MAX485 na inny egzemplarz. Próbowałem na ATmega8. Wywaliłem z kodu wszystko poza obsługą RS485....
Witam W głównej mierze dzięki Waszej pomocy zbudowałem urządzenie na bazie Atmegi8 do tego kwarc 16 MHz i Max485. Urzadzenie ma przyciski i wyswietlacz LCD 2x16 Kod w bascomie: $regfile = "m8def.dat" $crystal = 16000000 $baud = 9600 Dim Tryb As String * 14 Dim Trybp As String * 14 Dim Takt As Integer Dim Dane As String * 5 Dim Dane1 As String...
Zamiast 'Print' użyj 'Printbin'
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...
Również nie jestem Bascomowcem ale być może moje uwagi okażą się cenne. Po instrukcji Print "{008}5r", dane jest 10 ms opóźnienia. W tym czasie slave mógł już przesłać wszystkie swoje dane - a master jeszcze nie rozpoczął nasłuchu. Inną sprawą jest to, że 100 obiegów pętli w procedurze Odczyt_zn może trwać krócej niż transmisja jednego znaku przez UART...
Sprawdziłem problem kolizji i też nie działa jak ma działać. Otóż sytuacja ma się dokładnie tak: Jeśli nadaje jakikolwiek znak do slave-ów to reagują na znak tak jak chce. Podam kod którym realizuje to co pisze: (dodam, że pisze w Bascomie) Kod centralki: ... Do print "q"; wait 1 loop ... kod slave-ów : ... Dim A as Byte Do A = Waitkey()...
Witam! Usilnie próbuje opracowąć protokół komunikacji miedzy wieloma węzłami w sieci RS485 multimaster. Ramka wyglada tak: 1 bajt - długosć ramki 2 bajty - adres odbiorcy (word) 2 bajty - adres nadawcy (word) x bajtów - dane właściwie 1 bajt suma kontrolna z wszystkich poprzednich Transmisja odbywa się na prędkosci 19200bps przy użyciu transcieverów...
SRAM-u raczej nie zapełniało, bo mam zadeklarowane sporo więcej jak standardowo Bascom ustawia. Śmieci też raczej nie zapełniały bufora, bo na printscreenie widać, że podczas jednoczesnego nadawania rzadko kiedy dochodziło do bufora i na linie pełne 7 i więcej bajtów. Na razie nie jest to tak istotne, ale ważne, że udało się rozwiązać problem. Jak będzie...
Witam forumowiczów ... Piszę dość zaawansowany program na Atmege64, większość rzeczy wykonywane jest w przerwaniach programowych i jest wszystko OK. Komunikację zrobiłem na RS485 i działa dobrze (protokół MODBUS RTU) ale mam problem z wysłaniem danych: - jak wiadomo RS485 - więc na czas wysyłania muszę uruchomić nadajnik - wysyłam dane - po ostatnim...
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...
Jak dobrze rozumiem to mówisz o czasach w kodzie karty? Zapomniałem wspomnieć, że zmieniłem parę rzeczy w kodzie odnośnie RS485 było: [syntax=basic4gl] Config Portd.4 = Output Nadawanie Alias Portd.4 If Stan = 2 Then Waitms 20 Set Nadawanie Select Case Urzadzenie Case 1 : If Out1 = 0 Then Print "off" Else Print "on" Case 2 : If Out2 = 0 Then Print "off"...
W wersjo Bscom-AVR 1.11.8.3 dodano obsługę MAX485. Wystarczy CONFIG PRINT0 = pin CONFIG PRINT1 = pin Pytanie tylko jak dopiąć MAX'a do uP? (mam zamiar dopiąć kilka ATMega8 do PCta po RS485) W katalogu Samples/serial jest plik rs485.bas a w nim przykład programu.
jeżeli mam transmisje miedzy wieloma uP na jednej płycie, to używam dodatkowych pinów i robie synchroniczną transmisje, sposób z dioda jest powszechnie stosowany w takich sytuacjach, zresztą podpatrzyłem to dawno temu w naświetlarce gdzie na jednej płycie siedziało kilka Z-80 i właśnie tak gadały ze sobą. kod który wkleiłem jest terminalowy, serwerowy...
Witam Andy74 zakupiłem dzisiaj nawet nowego uP i jest to samo, błą weryfikacji. Jak mi przyjdzie jeszcze budować nowy programator, to się chyba zastrzelę, jakiś nie fart pod koniec tego tygodnia? A było tak pięknie RS485 działał, na SLAVE dałem wartość która się zmieniała i wysyłał ją do ATmegi, wszystko łądnie i pięknie, aż do momentu następnego proghramowania,...
Witam wszystkich. Mam dwa proste układy master i slave. Jeden nadaje drugi odbiera. Oba układy to ATmega8 + MAX485. Jedna strona MAX485 zaterminaowana 120R a druga poza 120R podciągnięta do masy i Vcc (linie A i B) opornikami 560R. Oba układy spięte z sobą skrętką długości 10cm. Wszystko jakby zgodnie z opisami. Kod nadajnika: $regfile = "m8def.dat"...
przełączenie na nasłuch rozumiem, że to ustawienie sn75176 w stan wysokiej impedancji tak?? chcialbym zrobic cos takiego, że jeden z mikroprocesorów byłby masterem, a pceta podłączałbym raz na jakiś czas. Czy musiałbym wtedy odłączać zasilanie, czy można to zrobić w locie?? I teraz jeszcze takie pytanie, jak master wyśle komendę print 0103, to wysyła...
W tym urządzeniu pętla główna jest praktycznie pusta. Obsługuje tylko wyświetlanie na LCD na którym na razie wyświetlam tylko to co odbiorę z Uart-a. Jeśli chodzi o tą pętlę Do Loop to wiem że to chore. Ale działa. Wiem że tak być nie może i muszę uruchomić "Config Serialin". Ale mam spore problemy. W tej chwili nic się nie wiesza i wszystko funkcjonuje...
Wymieniłem procesor w jednostce głównej i mogę przystąpić do testów. Chyba jednak nie rozumiem zasady działania sieci rs485. Mam w swoim systemie jednostkę główną, zasilacz oraz moduł gsm. Wszystkie mają wbudowane układy MAX485CN. Kiedy do modułu głównego podepnę zasilacz to komunikuja się aż miło patrzeć. Ale kiedy podepnę sobie moduł gsm , transmisja...
Witam Mój problem wiąże się z zaprogramowaniem "Echa" które obijało by sygnał w standardzie RS. Układ buduję w celu sprawdzania poprawności działania konwertera USB-RS485. Aby nie programować układu dla każdej szybkości transmisji chcę użyć pinów PB0-PB3 gdzie za pomocą zworki możliwy byłby wybór jednej z 4 przygotowanych szybkości transmisji: 921600,...
Witam Mam następujący problem: Posiadam w swojej sieci RS485 kilka pracujących modułów. Znajduje się w niej jeden Master i 6 Sleave-ów . Problem jest następujący. Jeden z modułów działa prawidłowo zaraz po podłączeniu do zasilania , tzn. odpowiada poprawnie na zapytania Master-a ale po kilku minutach zaczyna krzaczyć. Ale co śmieszniejsze krzaczenie...
Witam! Usilnie próbuje opracowąć protokół komunikacji miedzy wieloma węzłami w sieci RS485 multimaster. Węzły zbudowane są za pomocą AtMega8. Ramka wyglada tak: 1 bajt - długosć ramki 2 bajty - adres odbiorcy (word) 2 bajty - adres nadawcy (word) x bajtów - dane właściwie 1 bajt suma kontrolna z wszystkich poprzednich Transmisja odbywa się na prędkosci...
Witam, Na własne potrzeby chciałem zbudować monitor temperatury z 4 dallasami 18B20. Dane są odczytywane z czujników po RS485 i wysyłane do mastera. Kiedy odpytuję czujniki po kolei, muszę czekać standardowe 750ms na odpowiedź każdego z nich, co nie zadowala mnie. Zależy mi na tym, aby po wysłaniu komendy odpytującej, każdy z czujników bezzwłocznie...
Przy takim kodzie: Attiny2313 - temu raczej nic nie dolega - odbiera i wysyła: $regfile = "attiny2313.dat" $crystal = 8000000 $baud = 9600 '********************* Konfiguracja magistrali 1-Wire Config 1wire = Portd.5 '********************* Config Serialin = Buffered , Size = 10 Enable Interrupts '********************* Konfiguracja wejść i wyjść...
Sporo tego ( obsługa SD, PCF8563 + menu do ustawiania daty, obsługa PCF8574 w przerwaniu INT1 )- ale nie ma problemu - zmieniła się tylko zawartość podprogramu Pomiar była taka, jak w pierwszym poście oraz wyłączyłem w wyświetlanie na LCD tych wartości wskazań z DS18B20, oczywiście dostosowałem pozycje wyświetlania do LCD 4*20 - załączniku spakowany...
1) Najpierw spróbuj tak: Print Chr(42) ; "12345" ; Chr(13) 2) W helpie bascoma wpisz "config com" i zobacz jak się konfiguruje port COM, zrób tak 3) Upewnij się że oba procesory mają taką samą szybkość RC w fusebitach
Łap. Przypomniałem sobie że miałem dwie płytki z RS485 na pokładzie i komplet kabli z innego projektu(most RS poprzez ETHERNET). W każdym miejscu gdzie podłączam RS`a mam zawsze dwa gniazda więc mogę je łączyć albo podglądać terminalem. W kodach Slave ustawiasz adres stałą My_ID. Z racji tego, że na szybko, miałem tylko dwa to testowałem adresy 3 i...
#1 - chodziło mi o RS485 i kilka urządzeń na jednej linii z transmiją w jedną stronę. Czy #1 oznacza, że jakbędzie kilka urządzeń to input #1 odbierze z urządzenia któro nadaje print #1 ? Mikrokontroler nic nie wie o tym ile i jakich urządzeń masz na zewnątrz. Musisz mu powiedzieć jak ma interpretować dane z prefix'em "#1 " jeśli chcesz by to rozumiał....
Witam. Miałem dwie atmegi spięte przez port szeregowy. Full duplex. Master, wysyłał do slave znak "Q" a w odpowiedzi otrzymywał stan wszystkich ośmiu bitów wybranego portu. Master odebrany komunikat wysyłał na port i zapalał LEDy. Ukłąd prosty. Wszystko działało przepięknie. Odbieranie znaków w układach master i slave realizowałem przerwaniem od URXC...
Dziekuję za odpowiedź. Czyli rozumiem, że kupuję MAX485 podłączam do Atmegi tak jak pokazano na rysunku bez żadnych innych elementów i mam już układ do nadawania/odbierania w standardzie RS485? :D Odnośnie punktu 1 - chodzi Ci o linie X1-1 oraz X1-2 tak? Połączone powinny być faktycznie z tego co widzę to między kolejnymi odbiornikami? Do PC kupie gotowy...
Witam, chciałem spróbowac komunikacji na RS'sie - Atmega8 <-> Atmega8, ale przed tym spróbowałem zobaczyć, czy jak połącze linie transmisyjne TXD i RXD to czy transmisja będzie się odbywała dobrze. Po napisaniu poniższego programu ukazuje się napis “hello” ale oprócz tego jeszcze dwa inne znaki (niechciane) na symulacji w terminalu...
Racja! Dzięki! Właśnie zobaczyłem w Bascomie 2.0 i jego nowym helpie piękny przykład obsługi RS485 wraz z automatycznym sterowaniem kierunkiem transmisji. edit: Automatyczne sterowanie działa rewelacyjnie i znacznie upraszcza kod. Dla potomnych: Config Print0 = Portd.2 , Mode = Set ' use portd.2 for the direction Rs485dir Alias Portd.2 Config Rs485dir...
No właśnie jak mówi help wystarczy ta linia aby bascom wiedział że ma sterować kierunkiem przez ten pin Config Print0 = Portb.0 , Mode = Set Specjalnie studiuję teraz nowego helpa i z tego co widzę nic więcej nie potrzeba. Używam tej konfiguracji w moim testowym module i w połączeniu z PC "gada" bezbłędnie. Ale jak połączę kilka takich modułów to dzieją...
Patentów jest wiele, ale chyba najleprzy to zastosowanie RS485, który z założenia jest zrobiony dla sieci do 32 urządzeń. RS485 opisuje elektryczną stronę komunikacji, a nie protokół, który jest z regóły identyczny z RS232, jedyne czym się całość różni z punktu widzenia procesora, to transmisja ma sterowany kierunek, czyli jest half-dupleksowa, procesor...
pgnige --> tak patrzę sobie, patrzę - temat się toczy - a ty sam nie dość, że nie wiesz czego chcesz to nie masz pojęcia o żadnych sposobach transmisji. Dlatego snujesz jakieś fantasmagoryczne plany o rozjeżdżająych się kwarcach, zegarach i tym podobnych banialukach. Dlaczego tak sądzę - bo wystarczy poczytać o twoich pomysłach na komunikację między...