RS485 komunikacija... (dva PIC-a)
21.09.2010. u 22:21 · pre 195 meseci
#1
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]
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]
Re: RS485 komunikacija... (dva PIC-a)