Komunikacija PIC sa PIC-om

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

User avatar
tesla2_IG
Posts: 18
Joined: 11-04-2011, 21:15
Contact:

Komunikacija PIC sa PIC-om

Post by tesla2_IG »

Znaci potreban mi ja primjer kako napraviti da dva pica međusobno komuniciraju. Znaci imam PIC16F877 on je glavna jezgra.. i imam PIC16F628 koji bi prikupljao podatke sa senzora, obradio ih, sluzio za nesto dodatno. Ali neznak kako uspostaviti komunikaciju.

Svaka pomoc je dobrodosla ! ;)
Vratio sam stari korisnički račun ! Koristim se ovim: http://www.elektronika.ba/forum/memberl ... ile&u=9139
buco-1
Napredujem
Napredujem
Posts: 105
Joined: 24-10-2010, 21:22

Re: Komunikacija PIC sa PIC-om

Post by buco-1 »

Najjednostanije, emuliraš serijski sinhroni protokol, osmisliš makro naredbu i to je to.
Uzmeš niz od tri byte-a, od kojih je prvi tkzv. guard byte drugi naredba a treći invertirani drugi byte radi sigurnosti. Iza njih slijete podaci.
Guard byte je znak prvom ili drugom računalu da ima prijenos. Možeš to riješiti i signalom na pinu za prekidni vektor. To ti je najjednostavnija komunikacija dva računala.
Today's scientists have substituted mathematics for experiments, and they wander off through equation after equation, and eventually build a structure which has no relation to reality.
- Nikola Tesla
jazz
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 21-10-2010, 21:18
Location: Hrvatska

Re: Komunikacija PIC sa PIC-om

Post by jazz »

Želiš uspostaviti komunikaciju između dva jednaka uC, i software na obe strane radiš sam. U tom slučaju možeš odabrati bilo koji protokol (I2C, SPI, paralelni, serijski...) koji je podržan od obe strane, ili sam nakucati kod u slučaju da podrška ne postoji. Prošunjaj po web gdje vjerojatno postoji i primjer koda za navedeno.

Da je radim nešto tako odabrao bih običnu serijsku vezu.
User avatar
gurko
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 241
Joined: 18-03-2011, 19:28
Location: Srednja BiH

Re: Komunikacija PIC sa PIC-om

Post by gurko »

877 ima hardversko rjesenje za USART, nisam siguran za 628, ali uvijek imas softverski USART. Jest' da losije radi od hardverskog ali radi. Znaci, sto rece @jazz, netreba ti nista bolje od dobrog starog RS232 protokola. Naravno ako ti nije drugi pic udaljen recimo vise od 10ak metara. Brzina isto moze biti faktor, ali uvjek mozes povecati je na obe strane!
buco-1
Napredujem
Napredujem
Posts: 105
Joined: 24-10-2010, 21:22

Re: Komunikacija PIC sa PIC-om

Post by buco-1 »

jazz wrote:...ali uvijek imas softverski USART. Jest' da losije radi od hardverskog ali radi.
Sad. Neznam odakle ti to?
Ne samo da ne radi "lošije" već obrnuto, možeš emulirati taj protokol za nestandardne i standardne brzine, nije katastrofalno ovisan o takt freq. oscilatora kao HW-ski implement itd...
Može se postaviti autodetekcija u velikom opsegu brzina. Komuniciranje u Rx, jednom u Tx drugom brzinom kao i mijenjanje brzine u samom prijenosu. Kad emuliraš neki protokol možeš napraviti što god poželiš, ograničenje je samo brzina processora i iskustvo, dok je u većine HW-skih implemenata dio opcija onemogućen ili nije ni postavljen u HW, tj. smatra se da nije dio protokola.

Možda tvoja loša iskustva s emuliranim usart-om dolaze zbog korištenja rutina koje nisu napisane kvalitetno pa si zbog toga imao problema.
Brzinama na 115200 bps mogao bi odraditi dovoljno brzu razmjenu podataka za te MCU-e ako nema namjeru čačkati oko grafike više rezolucije. Njih, usart rutine, je relativno lako napisati.
Today's scientists have substituted mathematics for experiments, and they wander off through equation after equation, and eventually build a structure which has no relation to reality.
- Nikola Tesla
jazz
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 21-10-2010, 21:18
Location: Hrvatska

Re: Komunikacija PIC sa PIC-om

Post by jazz »

Pogrešan quote, nema veze, ionako sam mislio neš nadodat.
Nisam se družio sa PIC familijom, al što se tiče ostalih čvaraka, nikakav problem u komunikaciji putem serijske veze nisam imao, bilo da se radi o hardware-skom ili software-skom načinu rada. Ovisi o taktu uC, ali nikakav problem nije ni rad na većim brzinama od 115k. Dobra stvar je što u uC/uC komunikacije nije potrebno razmjenjivati informacije nekim standardnim bit rate-om (PC UART), nego bilo kojim, bitno je samo da je isti na obe strane. Apsolutni prvak što se brzine tiče je DS89C4x0 kojem serijska veza fercera na 2000k bez ikakvih problema.
User avatar
tesla2_IG
Posts: 18
Joined: 11-04-2011, 21:15
Contact:

Re: Komunikacija PIC sa PIC-om

Post by tesla2_IG »

nije me duže vremena bilo jer sam morao raditi. ipak će se raditi o dva ista pic-a (PIC16F877) i izabrao bih I2C komunikaciju jer mi je na jednom PICU već iskorišten serijski port (RX/TX). Znaći programiram u MicroCode Studiu (PICBASIC), naredbe i2c read, i2c write... uglavnom probem je što kod I2C imam dva pina, data i clock... zanima me od kuda se dobiva clock.. dali spajam SCL sa SCL i SDA sa SDA na picevima ? ili nekako drugačije ?
Vratio sam stari korisnički račun ! Koristim se ovim: http://www.elektronika.ba/forum/memberl ... ile&u=9139
buco-1
Napredujem
Napredujem
Posts: 105
Joined: 24-10-2010, 21:22

Re: Komunikacija PIC sa PIC-om

Post by buco-1 »

Normalno da idu SCL na SCL. :shock:
tesla2_IG wrote:...jer mi je na jednom PICU već iskorišten serijski port (RX/TX)
Da i? :?
Poslušaj savijet, kad se emulira usart NIKAD se ne korite nikakvi Rx i TX pinovi. To realno uopće nije potrebno i jako rijetko, gotovo nikad, se ne koristi full duplex veza. USART protokol (serijski asinhroni protokol) se emulira, na bilo kom I/O pinu, i za to ti treba jedna jedina "žica" tj. pin. Puno brže radi, jer sam postavljaš parametre kašnjenja, od two wire protocola. Sam si definiraš makro mod i njegov način korištenja.
Today's scientists have substituted mathematics for experiments, and they wander off through equation after equation, and eventually build a structure which has no relation to reality.
- Nikola Tesla
User avatar
tesla2_IG
Posts: 18
Joined: 11-04-2011, 21:15
Contact:

Re: Komunikacija PIC sa PIC-om

Post by tesla2_IG »

nikad nisam radio to, može li neki primjer u picbasicu ili nešto ?
a do tada ću pokušati ovo sa i2c.
Vratio sam stari korisnički račun ! Koristim se ovim: http://www.elektronika.ba/forum/memberl ... ile&u=9139
jazz
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 21-10-2010, 21:18
Location: Hrvatska

Re: Komunikacija PIC sa PIC-om

Post by jazz »

tesla2_IG wrote:nikad nisam radio to, može li neki primjer u picbasicu ili nešto ?
a do tada ću pokušati ovo sa i2c.
Ako je izbor u potpunosti moj, a ovdje je (jer radim obe strane koje komuniciraju), prije bi odabrao SPI, nego I2C. Kod I2C master upravlja clock (SCL) linijom, a podaci se šalju u oba smjera preko SDA linije (OC sa pullup otpornikom) . Ako ne moram, ne bih koristio I2C.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7882
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Komunikacija PIC sa PIC-om

Post by pedja089 »

A jos moras imati i implmentiran I2C slave jer nije podrzan iz pbp-a. Ne mozes ici samo na jedno i2c write, na drugom i2cread, jer se oba pica ponasaju kao masteri. SPI, moze zasto da ne, ali ja uvek koristim za komunikaciju izmedju piceva softverski UART, tj nesto slicno. Jer 1 liniju koristim za slanje podataka u oba smera, jer svakako softverski ne moze da se izvede full duplex, na neki jednostavan nacin. i jos 2 ili 3 pina zavisno od potrebe, za prekid, i uglavnom ni to nije hardverski prekid, nego negde u delu koda koji se cesto ponavlja stoji if pin=x then call komunikacija.
buco-1
Napredujem
Napredujem
Posts: 105
Joined: 24-10-2010, 21:22

Re: Komunikacija PIC sa PIC-om

Post by buco-1 »

Ako nećeš mene, poslušaj @pedju.
SPI je brz no potrošiti će ti tri pina minimum. Pošto nevjerujem da ti je potreban prijenos velikih količina podataka između dva MCU-a jer sve memorije u njima su jako male, pa se i nema što puno prenositi.

HW-ski layer, a i SW-ski, USART protokola UVIJEK počinje start bitom koji je "0". Koristeći pullup otpornik na pinu, koji je vezan za prekidni vektor (aktivira ga promjena logičkog stanja na njemu), a njega kao I/O pin za emulaciju USART-a i znajući detalje HW-skog layera ( i SW-skog) možeš napraviti da po promjeni stanja iz "1" u "0" ide na prekidnu rutinu koja će biti emulirani USART.

Pošto u većini slučajeva USART mod završava stop bitom, najčešće jednim, stvar je još jednostavnija (mod 8N1). Ako pinove oba MCU-a držiš kao ulazne oni će uvijek biti u pripravnosti za prihvat prijenosa podataka u MCU. Za prijenos iz MCU-a mislim da je stvar više nego jasna u tom slučaju. Samo postaviš I/0 kao izlazni i startaš emuliranu rutinu.

U praksi često ni nemora biti emulirani USART na I/O pinu koji je dio prekidnog vektora (interrupt zone) već se samo testira ima li start bit na ulaznom pinu. Pošto računla rade sasvim solidnim brzinama teško da ćeš promašiti prijenos. Na kraju krajeva to se riješava tkzv. odzivom. Master čeka da mu se slave odazove i nastavlja pravi prijenos. Da ne tupino dalje. Mislim da na ovom boardu ima nekih primjera s guard byteom i odzivima. Naredbe koje se definiraju u prijenosu jesu drugi SW-ski layer, najčešće ga zovu protokolom kojem daju neko ime. Npr. protokol 8in1 kao i brojni komunikacioni protokoli pay-tv sustava (reciver-kartica) odrađeni u USART-u.
Today's scientists have substituted mathematics for experiments, and they wander off through equation after equation, and eventually build a structure which has no relation to reality.
- Nikola Tesla
User avatar
tesla2_IG
Posts: 18
Joined: 11-04-2011, 21:15
Contact:

Re: Komunikacija PIC sa PIC-om

Post by tesla2_IG »

nakon toliko svega nakraju koristim serijski i radi kako treba... imam par start slova koja govore glavnom picu da sporedni šalje podatke, pa koji su podaci, uglavnom radi !

Hvala na pomoći svima ;)
Vratio sam stari korisnički račun ! Koristim se ovim: http://www.elektronika.ba/forum/memberl ... ile&u=9139
User avatar
andrejevica
Pocetnik na forumu
Pocetnik na forumu
Posts: 35
Joined: 07-03-2011, 18:06

Re: Komunikacija PIC sa PIC-om

Post by andrejevica »

da li neko moze da mi pomogne.dakle rec je o komunikaciji izmedju 2 pic-a.treba jedan pic da mi cita iz drugog tj iz njegove unutrasnje memorije podatak.e sad zauzeti su mi tx irx pinovi.kako da uspostavim komunikaciju sa usart,stvarno ne znam kako.
User avatar
andrejevica
Pocetnik na forumu
Pocetnik na forumu
Posts: 35
Joined: 07-03-2011, 18:06

Re: Komunikacija PIC sa PIC-om

Post by andrejevica »

slobodan mi je rx na cipu sa kog treba da citam podatke tj iz njegove memorije.molim za pomoc oko usart-a.koje su naredbe i sta i kako
buco-1
Napredujem
Napredujem
Posts: 105
Joined: 24-10-2010, 21:22

Re: Komunikacija PIC sa PIC-om

Post by buco-1 »

andrejevica wrote:e sad zauzeti su mi tx irx pinovi.
Teško da su ti pinovi zauzeti baš cijelo vrijeme. Pošto ni u PIC16 seriji a ni u AVR/ATmega seriji HW-ski inplanatanti nisu na samo njima dodijeljenim portovima već su svi portovi MCU-a najprije portovi opće namjene, to znači ih (Rx Tx) možeš bez problema koristiti oba ili jedan (u emuliranim protokolima ti treba samo jedan pin za obostrani prijenos) ako ih definiraš kao standardne I/O pinove. Kad ti zatreba HW-ski inplantat vratiš, redefiniraš upotrebu pinova.

Pošto sam u zadnjem odgovoru opisao kako radi USART protokol i HW-ski i SW-ski layer mislim da ti nije teško skužit kako I/O pinovi (koje ti nazivaš Rx/Tx) mogu jednostavno biti povezani preko pullupa, koji ionako neće smetati HW-skom inplantatu kad ga ponovo pozoveš.
Kod usarta, kao i večine komunikacionih protokola, važna je logička "0" jedinica se riješava pullupom. Zato on i služi.
andrejevica wrote:molim za pomoc oko usart-a
Postavi u program emulirani protokol, dodaj rutine za čitanje internih memorija, ili čega već, i međusobnu komunikaciju ta dva računala. U gornjim postovima ti je sve rečeno. Sve je pojašnjeno.

Rečeno ti je kako protokol radi a, hvala bogu, ima i hrpa tehničke dokumentacije o USARTU (UARTU). Nadam se da si proučio tehničku dokumentaciju MCU-a za kojeg radiš program, to je elementarna stvar, tako da mi nije baš najjasnije oko čega tebi zapravo treba pomoć? U pisanju rutina? :shock:
Today's scientists have substituted mathematics for experiments, and they wander off through equation after equation, and eventually build a structure which has no relation to reality.
- Nikola Tesla
User avatar
andrejevica
Pocetnik na forumu
Pocetnik na forumu
Posts: 35
Joined: 07-03-2011, 18:06

Re: Komunikacija PIC sa PIC-om

Post by andrejevica »

napravio sam obrtaljku sa 18f2420 sa led.on smesta cifru(broj obrtaja)u svoj eeprom.sledeci cip 16f628(nije kupljen)treba da cita iz njegovog eeproma tu cifru iz...razloga.e sad kako da je ucita .....ne znam ni kako ni rutine da napisem
jazz
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 207
Joined: 21-10-2010, 21:18
Location: Hrvatska

Re: Komunikacija PIC sa PIC-om

Post by jazz »

Ne kužim šta je "obrtaljku sa 18f2420 sa led", ali šta god da je, "cifru(broj obrtaja)u svoj eeprom" 18f2420 ne mora stavljati, nego vrijednost može slati serijskom vezom direktno 16f628.
buco-1
Napredujem
Napredujem
Posts: 105
Joined: 24-10-2010, 21:22

Re: Komunikacija PIC sa PIC-om

Post by buco-1 »

Pošto je PIC18Fs serije "Pet puta moćniji" od bilo kojeg 16f626 mislim da je tvoj problem vezan uz ono, često na ovom boardu, ne želju da se uči već samo kopira. Nažalost!
Izgleda da je problem što ti driver za prikaznu jedinicu, koju koristiš, imaš za 16F628 ali ne i za pic18F serije i sad, pošto samo kopiraš ali ne zanima te učenje, jedino riješenje je prijenos podataka iz 18Fxxx u 16f628 a ne , nedaj bože, pisanje drivera, ili redefiniciju, za 18Fxxxx mcu.
Jesam li u pravu?
Pošalji nam izvorni kod programa za 18Fxxxx da se uvjerimo kako nisam u pravu.

Ako ikad poželiš bar nešto dobro napraviti i biti bar malo neovisan, od hrpe smiješnih primjera s neta, morati ćeš početi učiti. To je moj iskren savijet svima, ne samo tebi.
Svi se mi zaletimo misleći kako su drugi sve za nas riješili a mi samo trebamo da kliknemo na kopiranje u flash MCU-a. No tad, prije nego stisneš tipku, se sjeti da ništa što imalo valja nije besplatno. Najčešće su u pitanju edukacijaski programi za studente koji su nepotpuni. Služe za učenje ili zabavu. :wink:
Today's scientists have substituted mathematics for experiments, and they wander off through equation after equation, and eventually build a structure which has no relation to reality.
- Nikola Tesla
User avatar
andrejevica
Pocetnik na forumu
Pocetnik na forumu
Posts: 35
Joined: 07-03-2011, 18:06

Re: Komunikacija PIC sa PIC-om

Post by andrejevica »

nista ja ne kopiram
Post Reply