[ dakinet @ 22.01.2013. 10:56 ] @
ima li neko ideju kako da umrežim dva procesora da pričaju preko 485, da na jednom bude taster a na drugom led, pa kad kliknem na taster "ovde" da se upali led "tamo". Pozdrav |
[ dakinet @ 22.01.2013. 10:56 ] @
[ ZAS011 @ 22.01.2013. 11:17 ] @
Zna čika Toma
![]() [ dakinet @ 22.01.2013. 11:41 ] @
U to nema sumnje :)
[ micromatic @ 22.01.2013. 13:59 ] @
Malo nejasno postavljeno pitanje! Probaj svakako bolje pojasniti što želiš.
Pretpostaviti ću da se radi o testiranju RS485 "umrežavanja" dva kontrolera jer za paljenje ledice najednom kraju parice tipkom na drugom kraju dovoljne su samo žice. Dakle imaš dva kontrolera kojima je serijsko sučelje vezano po RS485 standardu. Oba imaju podešene iste brzine i formate prijenosa. Onaj s tipkom na nekom ulazu radi predaju a onaj s ledicom na izlazu prijem serijske komunikacije. Ovisno o stanju tipke šalješ recimo P za pritisnutu tipku ili O za otpuštenu tipku. Kad onaj s ledicom primi P upališ ledicu a ako primi O ugasiš ledicu (ili ako ne primi ništa). Ovo je najjednostavnije pojašnjenje.Tu sad nastupa sva ostala moguća programska zavrzlama. Npr: želiš li na jedan pritisak tipke upaliti a na sljedeći ugasiti ledicu treba tu logiku ugraditi na prijemnoj strani. Ja bi doduše to odradio rađe na predajnoj ali ako malo bolje pojasniš što ti treba mogu pomoći. [ dakinet @ 22.01.2013. 23:46 ] @
Citat: Malo nejasno postavljeno pitanje! Probaj svakako bolje pojasniti što želiš. Preformulisaću u vidu zadatka: ...................................................................................... U cilju ućenja i savladavanje umrežavanja dva i više kontrolera, potrebno je obezbediti RS485 komunikaciju između dva kontrolera, u smislu kad prvi nešto kaže (naveo sam najprostiji primer koga sam se setio jedan je na prekidaču a drugi na ledu), drugi da ga razume šta je rekao i da izvrši i obrnuto. ........................................................................................ Citat: Pretpostaviti ću da se radi o testiranju RS485 "umrežavanja" dva kontrolera jer za paljenje ledice najednom kraju parice tipkom na drugom kraju dovoljne su samo žice. Dobra pretpostavka, cilj je učenje. Citat: Dakle imaš dva kontrolera kojima je serijsko sučelje vezano po RS485 standardu. Oba imaju podešene iste brzine i formate prijenosa. Onaj s tipkom na nekom ulazu radi predaju a onaj s ledicom na izlazu prijem serijske komunikacije. Kako da implementiram ovaj zahtev? Citat: Ovisno o stanju tipke šalješ recimo P za pritisnutu tipku ili O za otpuštenu tipku. Kad onaj s ledicom primi P upališ ledicu a ako primi O ugasiš ledicu (ili ako ne primi ništa). Ovaj deo sam skontao, definišem pin, deklarišem promenjivu i u zavisnosti od pina menja mi se promenjiva. Sad samo treba nekako preneti ovu promenjivu od kontrolera "A" do kontrolera "B". Sa "B" strane treba isčitati dolaznu promenjivu i u zavisnosti od stanja pali ili ne led. Citat: Npr: želiš li na jedan pritisak tipke upaliti a na sljedeći ugasiti ledicu treba tu logiku ugraditi na prijemnoj strani. Za početak bih probao sa klasičnim prekidačem on/off. BTW prošle noći sam pisao kod za ovu zavrzlamu (pritisnem taster upaljeno, ponovo pritisnem ugašeno). Evo kako sam ja to napisao i odlično mi radi Code: #define evacuate_inp PIND.5 //definišem ulazni pin unsigned int evacuate; //deklarišem promenjivu if (evacuate&!evacuate_inp){ //proveravam dal je taster pritisnut ponovo while(evacuate&!evacuate_inp){ //ostajem u petlji dok je pritisnut delay_ms(50); //debounce vreme } evacuate=0; //promenjivoj dodeljujem vrednost 0 } if (!evacuate_inp){ //proveravam dal je taster pritisnut while(!evacuate_inp) //ostajem u petlji dok je taster pritisnut delay_ms(50); //debounce vreme LED1=0; //palim led evacuate=evacuate_inp; //promenjivoj dajem vrednost očitanog pina pre izlaska iz petlje } if (evacuate>=1) LED1=0; //ako je promenjiva 1 pali led if (evacuate<1) LED1=1; //ako je promenjiva 0 gasi led Trudio sam se da uprostim koliko je to moguće. Hvala na pomoći [ Genie_1984 @ 23.01.2013. 00:53 ] @
Ono što ti treba da implementiraš je protokol koji ce razumeti svi "umreženi" mikrokotroleri.
Uobičajan format je adresa (kome su podaci namenjeni), komanda (šta da radi) ,parametri(ako su potrebni za komandu) i CRC. Pronadji knjigu "Serial Port Complete:Programming and Circuits for Rs-232 and Rs-485 Links and Networks" i u poglavnju "Network programming" ti je lepo objašnjeno šta je obavezno prilikom realizacije Imaš i primera na netu (npr. Winpenny rs485 ali nije kompletan,možeš da vidiš samo princip,mada bi za led ON/OFF bio ok,pri tome da je tu primer za MASTER/SLAVE konfiguraciju). Pozdrav [ m51 @ 23.01.2013. 13:06 ] @
Smatram da je u ovome preskočen jedan korak. Najbolje bi bilo da prvo savladaš RS232 komunikaciju, što je i softversk aosnova RS485 komunikacije. Kada postigneš da ono što si hteo sa RS485 radi sa RS232 lako ćeš preći na napredne teme (izvesni hardverski dodaci, a softver može i da ostane isti).
[ dakinet @ 24.01.2013. 09:54 ] @
@Genie_1984
Slab sam sa engleskim, jel ima neka domaća literatura? @m51 Može za početak i 232 Ima li neko primer koda kako se definiše rs232 protokol, kako da kontroleru "A" kažem pošalji promenjivu "prekidač", kako da mi kontroler "B" primi poslatu promenjivu. drugi korak bi bio da kontroler "B" vrati informaciju kontroleru "A" (uspešno sam primio informaciju ili nisam primio informaciju) Ja bih posle usložnio dodatno i prilagodio izlazima/ulazima. Hvala [ ZAS011 @ 24.01.2013. 17:57 ] @
RS-232 i RS-485 su hardverska "podloga" putem koje se vrši komunikacija, protokoli su nešto sasvim drugo.
RS-232 je serijska komunikacija nebalansnim (asimetričnim) linijama, naponskog tipa, RS-485 je serijska komunikacija balansiranim (simetričnim) linijama, naponskog tipa, RS-422 je slična RS-485 samo što je strujnog tipa. Opet da ti napomenem, protokoli su isključivo softverske prirode. Što se jezika tiče, potrudi se da naučiš engleski, bez njega ćeš teško da "plivaš" u ovim vodama. [ dakinet @ 27.01.2013. 08:28 ] @
@micromatic
Druže jel imaš primer za komunikaciju između dva kontrolera? [ dakinet @ 28.01.2013. 09:20 ] @
evo ga odličan tutorijal za UART komunikaciju u jednom pravcu, moze li mi neko pomoci da ovu komunikaciju prevedem u 485?
http://www.newbiehack.com/UART-OneWay-ChipToChip.aspx Code: The Transmitting Chip's Program: #define numberOfButtons 1 include <avr/io.h> #include"ButtonPress.h" int main(void) { DDRB |= 1 << PINB1; DDRB &= ~(1 << PINB0); PORTB |= 1 << PINB0; int UBBRValue = 25; //Put the upper part of the baud number here (bits 8 to 11) UBRR0H = (unsigned char) (UBBRValue >> 8); //Put the remaining part of the baud number here UBRR0L = (unsigned char) UBBRValue; //Enable the receiver and transmitter UCSR0B = (1 << RXEN0) | (1 << TXEN0); //Set 2 stop bits and data bit length is 8-bit UCSR0C = (1 << USBS0) | (3 << UCSZ00); while (1) { if (ButtonPressed(0, PINB, 0, 100)) { PORTB ^= 1 << PINB1; //Wait until the Transmitter is ready while (! (UCSR0A & (1 << UDRE0)) ); //Get that data outa here! UDR0 = 0b11110000; } } } Code: The Receiving Chip's Program: include <avr/io.h> int main(void) { DDRB |= (1 << PINB0); //Communication UART specifications (Parity, stop bits, data bit length) int UBRR_Value = 25; //This is for 2400 baud UBRR0H = (unsigned char) (UBRR_Value >> 8); UBRR0L = (unsigned char) UBRR_Value; UCSR0B = (1 << RXEN0) | (1 << TXEN0); UCSR0C = (1 << USBS0) | (3 << UCSZ00); unsigned char receiveData; while (1) { while (! (UCSR0A & (1 << RXC0)) ); receiveData = UDR0; if (receiveData == 0b11110000) PORTB ^= (1 << PINB0); } } [ ZAS011 @ 28.01.2013. 10:05 ] @
Ti, izgleda, ne čitaš dobro ono što je napisano.
RS-232, RS-485, RS-422, ... su ELEKRTIČNI načini povezivanja između uređaja/kontrolera. Ovi snippet-i će raditi na bilo kom hardverskom interfejsu. Znači, ako hoćeš RS-485, sa svake strane bi trebalo da imaš MAX485 za half-duplex ili MAX488 za full-duplex. [ micromatic @ 28.01.2013. 12:11 ] @
[ dakinet @ 28.01.2013. 13:36 ] @
@ZAS011
Ukapirao ![]() @micromatic Odličan tutorijal pogledaću danas posle posla detaljnije. Hvala. [ ZAS011 @ 28.01.2013. 15:09 ] @
[ micromatic @ 29.01.2013. 13:09 ] @
[ dakinet @ 31.01.2013. 09:12 ] @
Bravo druže!, svaka ti čast!
![]() Hteo sam te pitati za ovaj slučaj koji si obradio u dopuni: jedan uređaj na više uređaja i obrnuto. Genijalno ovako detaljno objašnjenje nisam očekivao. Hvala ti, puno si pomogao. Veliki pozdrav [ micromatic @ 12.02.2013. 07:37 ] @
@dakinet
I kako napreduješ? Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|