[ ruzmarin84 @ 21.09.2010. 22:21 ] @
Evo posle duze pauze (oko dva meseca) ponovo sam se nasao u slicnom problemu kao u svom prethodnom postu...
Dva mikrokontrolera komuniciraju preko serijskog porta. Jedan (16f877a) vrsi ad konverziju, i podatke salje preko serijske veze (rs485) drugom (18f4550), koji podatke prosledjuje na usb port racunara. E sad, oni komuniciraju dobro kada su na rs232, ali kada povezem sve sa sn75176, uz odgovarajuce izmene u kodu, desava se malo nejasna situacija. Komunikacija krece i odvija se dobro u oba smera, ali desi se nekad, obicno na pocetku komunikacije da se posalje kao prvi podatak sa adkonverzije neka nula, koja sve ostale podatke pomeri "u desno" za po jedno mesto, i tada dobijem nebulozne rezultate. E sad ono sto mi je najcudnije, kada pic18f povezem preko razvojnog sistema easypic3 i sn75176 sa plocicom na kojoj je pic16f877a, sve radi korektno, i nema greske... testirano sto puta. A kada koristim plocicu za pic18f, desi se greska. Mislio sam da je mozda u pitanju los kvalitet transivera sn75176, pa sam ga danas zamenio sa max485, i taman se obradujem... kad posle nekog vremena pojavi se greska... istina dosta redje nego sa sn-nom. Ja pretpostavljam da je neka hardverska caka u pitanju, pa cu okaciti semu jedne i druge plocice, i molio bih da mi neko ko je ovo radio i sretao se sa slicnim problemom malo pojasni...
Inace pic 16f877a vrsi merenje temperature ad konverzijom pomocu senzora pt100, na vise mernih mesta, a pomocu nekog pretvaraca koji daje strujni izlaz od 4 do 20ma, pa ja to preko otpornika od 250 ohm-a pretvorim u napon od 1 do 5V i uvedem u ad konvertor na jednom kanalu pic-a.

Oni su medjusobno povezani samo sa dve zice (upredena parica), bez ikakvih otpora izmedju A i B. Stavljao sam otpor od 120 ohm-a izmedju A i B, ali nisam primetio razliku. Nije mi bas jasna funkcija tog otpornika. Desava se greska. Da li je potrebno da se doda neki otpornik na izlazu iz transievera (pull up), ili imate li ideju kako bih ovo resio... Ne iskljucujem i mogucnost da je greska negde u kodu, ali cudi me da u velikoj vecini slucajeva odradi posao kako treba, a samo po nekad zabrljavi u tom jednom suvisnom podatku...

Hvala unapred...

[Ovu poruku je menjao ruzmarin84 dana 21.09.2010. u 23:35 GMT+1]
[ _str_ @ 22.09.2010. 07:20 ] @
Evo kako sam povezao SN75176 i radi bez greske na 50m kabla, brzina je 9600.

http://www.elitesecurity.org/t405214-0#2652357
[ Drole_e @ 22.09.2010. 08:04 ] @
Otpor izmedju A i B sluzi za terminaciju voda. Vrednost tog otpornika bi trebala da bude jednaka karakteristicnoj impedansi voda i u tom slucaju nece doci do refleksije signala. Terminisu se krajevi voda (ako se radi o jednosmernoj komunikaciji onda samo onaj kraj voda gde je prijemnik). Vrednost otpora zavisi od kabla ali je preporuka oko 100 oma. Rekao si da si povezao piceve preko dve upredene parice pa se nadam da si preneo i masu, jer ako nisi i to moze da napravi problem.
Nisi rekao kolika je razdaljina i kolika je brzina. Maksimalna brzina za ovu komunikaciju je 10Mbits/s na 10 metara razdaljine, ali ako je veca razdaljina onda se brzina racuna kao 100Mbit/metar.
[ acaobr @ 22.09.2010. 08:37 ] @
Hvala na odgovorima. Brzina je 9600, a razdaljina bi trebalo da bude preko 150 m, mada je sada (dok je u pripremi) oko 15m, ali greska je potpuno identicna i kada je pola metra. Da napomenem da kada se koristi easypic3 razvojni sistem i sn75176 nema te greke, ali kada koristim plocicu koju sam za to napravio desava se. Zato sam pretpostavio da je hardverski problem.

Nisam spajao masu na plocicama, koliko sam razumeo rs485 nema potrebe za zajednickom masom... Samo sam vidjao da se masa zakaci na jednom kraju komunikacije, i ide kompletnom duzinom voda, ali se ne vezuje na sledecem vodu...

Pokusacu sa semom koju je _str_ postavio pa cu da javim rezultate... A u medjuvremenu ako imate jos neku sugestiju bio bih zahvalan...

[ ruzmarin84 @ 22.09.2010. 08:44 ] @
Ups, odgovorio sam sa pogresnog naloga... :)

Hvala na odgovorima. Brzina je 9600, a razdaljina bi trebalo da bude preko 150 m, mada je sada (dok je u pripremi) oko 15m, ali greska je potpuno identicna i kada je pola metra. Da napomenem da kada se koristi easypic3 razvojni sistem i sn75176 nema te greke, ali kada koristim plocicu koju sam za to napravio desava se. Zato sam pretpostavio da je hardverski problem.

Nisam spajao masu na plocicama, koliko sam razumeo rs485 nema potrebe za zajednickom masom... Samo sam vidjao da se masa zakaci na jednom kraju komunikacije, i ide kompletnom duzinom voda, ali se ne vezuje na sledecem vodu...

Pokusacu sa semom koju je _str_ postavio pa cu da javim rezultate... A u medjuvremenu ako imate jos neku sugestiju bio bih zahvalan...

[ Sepa011 @ 22.09.2010. 08:53 ] @
Xa, sada znamo da si "podvojena" licnos'
[ ruzmarin84 @ 22.09.2010. 09:06 ] @
Aha, pokusavam sam sebi da odgovorim na pitanje....
Nije nego sam seo za drugi racunar, a nisam ja bio ulogovan... i eto :)
Ko radi taj i gresi...
Samo da proverim dal je sad sa pravog naloga... :)
[ Sepa011 @ 22.09.2010. 18:05 ] @
Na svakoj strani gde je MAX485 stavis otpornik od 100 oma izmedju A i B (sve u svemu 2 komada). 100 oma posto je karakteristicna impedansa UTP/STP CAT-5e kablova 100 oma.
[ foxhunter1 @ 22.09.2010. 19:23 ] @
Ako se dobro secam ti koristis PBP kompajler? Ako je on u pitanju, stavi neki 'kvalifajer' kod prijema od minimalno 2 karaktera. Tek kada njih primi ispravno pocece da pakuje tvoje (korisne) podatke u niz. Na predajnoj strani je takodje bitno da zadrzis TXenable dok se TX bafer ne isprazni. Ako si poslao podatke komandom HSEROUT i odmah posle te komande stavio da ti iskljuci TXenable moze biti belaja ako ti je paran broj bajtova koje saljes. TX bafer u PICovu je duzine 2 bajta. Kod komande HSEROUT posle upucavanja zadnja dva bajta u TX bafer PBP prelazi odmah na izvrsavanje sledece komande. PIC nastavlja sam da salje ta dva bajta ... ako ti je posle komande HSEROUT odmah komanda za iskljucivanje TXenabla, preko SN75176 ce ti u najboljem slucaju proci samo predzadnji bajt, a zadnji ce biti izgubljen (malo sam cupao kosu oko toga ....). Zato stavi kod ovako:
Code:

TXenable = 1
HSEROUT[...]
While TXSTA.1 = 0    ' proveri tacan naziv registra u tvojem slucaju
Wend
TXenable = 0
[ ruzmarin84 @ 22.09.2010. 19:47 ] @
Opasno pamtis... koristim pbp... :)
Ovako, do hardvera nije greska...
Softverski jeste, ali ne mogu da uhvatim taj suvisni bajt nikako...
Na plocici gde se vrsi konverzija i salju podaci je sve ok, a na plocici koja salje sve podatke na usb ima neki "belaj"...
Ja sam to resio na sledeci nacin. Ako je prvi bajt koji primim 0, onda na njegovo mesto smestam drugi bajt, i ostale redom na trece... cetvrto, do desetog..., ako prvi bajt nije 0, punim baffere redom do desetog. Za sad to obavlja posao, ali jos je na testiranju, pa videcemo kako ce da radi do kraja...
Posto koristim neki kondicioner signala za pt100 senzor koji ima izlaze od 4 do 20mA, ja sam to transformisao o napon od 1 do 5 V, pa nema opasnosti da na temperaturi od 0 stepeni prvi bajt sigurno bude nula... (zato sto je tada napon 1V) videcemo jos oko toga... ali svakako cu da odradim ovo sto ste mi savetovali (foxhunter1) cini se da ima smisla...

Hvala svim aktivnim ucesnicima na nesebicnoj pomoci..
[ micromatic @ 23.09.2010. 07:29 ] @
Pozdrav,

Komunikaciju po 485 je zgodno uokviriti kontrolnim karakterima (obično STX poruka ETX) iza ETX obićno dolazi i kontrolni zbroj. Dakle, na prijemniku zanemariš sve što primiš do STX karaktera nakon kojeg dolazi korisna poruka (koja nesmije sadržavati STX ili ETX karaktere) završena s ETX-om.
[ milossd026 @ 05.12.2014. 00:43 ] @
icon izrada komunikacijskog interfejsa sa rs 485 i rs232 komunikacijom 05.12.2014. u 01:41 - pre 0sec
pozdrav drugari, nov sam ovde i vidim da ima dosta pametnih i strucnih ljudi na forumu

zanima me ako neko moze da mi pomogne ili objasni nesto, interesuje me kako bi se moglo napraviti vise komunakacijskih interfejsa koji ce sakupljati odredjene podatke sa nekih uredjaja i sve i sve to slati na obradu na jedan racunar...
da pojasnim

primer: dva poker aparate, u oba se nalaze TI interfejsi koji sakupljaju podatke o ulogu i potrosnji novca, i te podatke salju na racunar za obradu.

takav sistem vec postojii TAJ interfejs na sebi ima atmel i neki cip za komunikaciju rs485 i rs232.

bio bih Vam veoma zahvalan ako bi mi neko pojasnio kako to radi, posto je tema malo delikatna...

srdacan pozdrav svima i hvala unapred
[ bogdan.kecman @ 05.12.2014. 01:30 ] @
da bas tako bi se mogao napraviti, neki mcu (atmel, pic, '51..) koji komunicira sa tim uredjajem sa jedne strane i salje datu na pc sa druge strane i jedan device koji bi bio usb-rs485 koji bi sakupljao svu tu datu i logovao na komp
[ ZAS011 @ 05.12.2014. 17:18 ] @
I valjalo bi da ne radiš crossposting (ista tema u 2 foruma).

A inače si i sam napisao kako to radi:

Citat:
primer: dva poker aparate, u oba se nalaze TI interfejsi koji sakupljaju podatke o ulogu i potrosnji novca, i te podatke salju na racunar za obradu.
takav sistem vec postojii TAJ interfejs na sebi ima atmel i neki cip za komunikaciju rs485 i rs232.
[ milossd026 @ 07.12.2014. 01:27 ] @
a imas li ideju ili neku semu kako bi izgledala ta plocica i kakav bi bio zapis na atmelu,
posto ja znam kako to fizicki izgleda kod drudog proizvodjaca, ali ne znam sta je na atmelu, to je problem, i svaki atmel je nekako posebno numerisan zbog prepoznavanja na racunaaru...

nadam se da razumes o cemu govorim... :)
[ bogdan.kecman @ 07.12.2014. 02:08 ] @
naravno da razumemo, nije da smo jednom pravili rs485 mastere i slaveove
na mcu-u (atmel, pic, ti, nec, st ...) se nalazi kod koji salje rs485
pakete masteru kada master to zatrazi ... nije nesto komplesan kod ali
za nekoga ko ne zna kako to radi nije vikend projekat
[ m51 @ 07.12.2014. 14:59 ] @
Pokušaću da pomognem. Najpre, potrebno je razjasniti samu koncepciju sistema, pa evo:

1.
Sa svakog aparata vezanog u Jack pot se sakupljaju podaci od interesa, npr. broj poena/novca po svakoj odigranoj ruci (bet in). Ti podaci mogu da se pribave na dva načina-u komunikaciji sa samim softverom igre ili pošto je nemoguće pristupiti softveru, podaci se uzimaju od elektromehaničkih brojača, ako su ispravni. U oba slučaja na svakom aparatu je po jedna pločica koja se bavi i time. Ta pločica je slave i ona šalje podatke masteru.
Potrebno je hardverski i softverski rešiti tu pločicu. Komunikacija master slave je RS485 ili sl. RS232 ne može.

2. Potrebno je napraviti RS485/RS232 konvertor. Naime, slave ploče, šalju podatke masteru. Master je realizovan najčešće na nekom PC-u, mada ima i drugih rešenja. Pošto PC ima serijski i/ili USB port potrebno je izvršiti pomenutu konverziju.

3. Potrebna je aplikacija na master strani. Piše se ili koristi gotova.Ta aplikacija prikuplja podatke od slave-ova (aparata), radi potrebna preračunavanja, odlučuje o Jack potovima i daje informacije na monitoru, displeju i sl.
Ako se koristi gotova mora da se zna komunikacioni protokol, ako nije neki standardni.

Ovo je u osnovi opis kako sistem radi i od čega se sastoji. Naravno ima nekih varijacija, ali je u osnovi ovako.
smatram da sam pomogao da uočiš kako to izgleda. Nije preterano složeno, ali ima posla, što reče Bogdan nije vikend varijanta.
Ako hoćeš sam da radiš idi sa pitanjima korak po korak, pomoći ću koliko mogu.
[ bogdan.kecman @ 07.12.2014. 17:51 ] @
@m51, osnovni problem kod tog projekta je sto svako ko zna da radi sa mcu to moze da uradi lagano i nece postaviti pitanje "kako" a onaj ko ne zna - teorije nema da mu objasnis kako da dodje do stadiuma da to zna...

@milossd026, veruj mi jeftinije ti je da kupis gotovo testirano resenje, to nije komplikovan posao ali vidi, ni da ti neko prekopa njivu nije komplikovan posao, cak stavise sto nizi iq je pozeljan jer normalan covek poludi radeci tako dosadan i glup posao, ali ne moze da se uradi za cuku vremena ... taj projekat je puno glupog posla a svi koji rade to za pare naplacuju vreme a ne to koliko su morali da upale mozak, cak ce to sto je projekat bio glup dodatno da naplate ..