Fórum témák
» Több friss téma |
Fórum » Két PIC közötti kommunikáció
Témaindító: JohnyBravo, idő: Márc 28, 2006
Témakörök:
Két pic közé kell és nem pic és pc közé.
Ha pic és pc közőtt akarok komunikálni akkor majd megy kevesebbel. Akkor ezek szerint a pic soros portja vinni fogja?
nem tudom...azt nem tudom...
azt viszont tudom, hogy ha két pic azonos frekin megy (ua.zal a kvarccal) akkor nincs hiba a komunikiációban. (persze csak ha azonos a komm. sebessége...) azok a hibák csak a sebesség eltérésből adódnak, mert a pc pl 9600-at használ a pic meg nem tud pl 4MHzes kvarccal pont 9600 al menni
Nekem lenne egy kérdésem. Ha két pic-et ugyanazzal a kvarcal akarom üzemeltetni akkor simán mindkettő pic-et hozzákötöm a kvarc két lábához? Vagy csak az egyikhez és az ő osc2-jét kötöm a másik osc1-éhez?
Azért érdekes, hogy emberek picekkel foglalkoznak, és alapvető elektronikai kérdésekkel nincsenek tisztában.
Fejből nemtudom melyik, de az adatlapon látható, hogy az osc1 és az osc2 közül az egyik kimenet, a másik bemenet. A kvarcot mondjuk az A pichez rakod, és a B pic oszcillátorbemenetét odakötöd az A pic oszcillátorkimenetéhez.
naja, de a kimenetét 4edeli a pic. Ezzel már én is szenvedtem.
És mégis hogy negyedelné, amikor meg kell hajtania a saját kvarcát? Valamit nagyon félrenéztél, mert HS, XT és LP (+PLL, ha épp olyan) módban kell egy kimenet és egy bemenetként viselkedő kapu a kvarc 1-1 oldalára. Tessék szépen megnézni az adatlapban, le van rajzolva, hogy mi micsoda, pl. 16F877A adatlapon Figure 14-1. Az ICD2-ben is így megy a két pic egy kvarcról. Annak a picnek, ami a kvarcot meghajtja, az osc2 lábát kell hozzákötni a másik pic osc1 lábához.
tényleg, szorri, én arra gondoltam, mikor belső oszcijáról jár a pic, na annak csak a negyedét lehet kiküldeni...
Üdv!
Kommunikációt szeretnék kialakítani PIC-ek között: egy master és három slave. Az alkalmazott mikrovezérlő: pic16f818 Bárki, akinek már sikerült i2c kommunikációt kialakítani bármilyen típusú picek között, azok tapasztalatait nagyon várom. A protokollt ismerem, nem elméleti beszámolót várok, hanem olyan "sorstársak" segítségét, akinek már sikerült ezt megvalósítani és hajlandó megosztani a leírást. Hangsúlyozni szeretném, hogy PIC-PIC kommunikációról van szó, és nem EPROM, LCD..stb-ről A hozzászólásokat előre is köszönöm!
kezdetnek tanulmanyozd at ezt:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nod...011798 (AN734 appnote) van hozza pelda is... ez meg egy kiegeszites hozza, hogy mely pontokon felrevezeto ez az appnote: http://www.astrosurf.com/soubie/pic_as_an_i2c_slave.htm
Sziasztok!
Két pic16f628 között szeretnék rs232 kommunikációt megvalósítani! Annyi sikerélményem már volt, hogy az egyik pic-et rákössem pc-re és amit a pic elküldött a pc-nek, azt láttam a monitoron, de a fordítottjára még nincs megoldás. Mármint nem tudok a pic-cel adatot fogadni! PIC C Compiler -t használok! Tud valaki segíteni?!
Mind a két PIC-ben az rs232 paramétereinek ugyanazt állítsd be.
Az adó PIC Tx kivezetését kösd a vevő Rx lábához. Az adóban használd a printf a vevőben a kbhit és a getc függvényeket. Nézd meg Topi "Vezetéknélküli kommunikáció..." c. cikkét. Jó alap az elinduláshoz. ( rádiómodul, manchester kódolás nem is kell. A vett adatot a PIC egy LCD-re írja így az eredményt láthatod)
Üdv,
összeraktam, amit mondtál és azt hiszem, hogy az egyik pic meg is kapja, amit a másik küldött neki, de a kapott adatot megszakításból figyelem és amikor adatot kap a másik pic, akkor felvillant egy ledet, majd visszaugrik a főprogramba, de az a baj, hogy amikor visszaugrik a főprogramba, akkor nem folytatódik a főprogram, hanem folyamatosan a megszakítás szubrutinjába ugrál oda-vissza! Tehát gondolom törölni kéne a megszakítást jelző flag bitet! De nem tudom, hogy hogyan kell! Az alábbit elvégeztem: #byte PIR1 = 0x0C majd a szubrutinban: bit_clear(PIR1,5); De a szubrutinból továbbra sem ugrik vissza a főprogramba, vagy pedig a főprogramból rögtön visszaugrik a szubrutinba és oda-vissza ugrál! Mit a megoldás? Van ötlet?
Hali!
A PIR1 ötödik bitje read-only, és akkor törlődik (magától), ha az RCREG regisztert olvasod ki. Nem vagyok C-s, asm-ben pl. ez kell: movf RCREG,W. Tehát a megszakítás rutinban olvasd ki az RCREG-et és jó lesz.
ÍÍÍÍÍígy van!!!
Ez volt a hiba!! Örök hála! Sajnálom, hogy nem tudok pontot adni! Köszönöm szépen a segítséget! Működik! Idézet: „Sajnálom, hogy nem tudok pontot adni” De én igen. :hehe: Megoldva.
Először is köszi Frankye a figyelmességet!
De itt a következő probléma: A két pic16f628 gyönyörűen kommunikál egymással az rs232 portjaikon keresztül! Összeraktam az egyik picet is és a másik picet is külön-külön próbapanelon és minkét próbapanel külön adapterről kapja az áramot, és a kommunikáció így nem működik, csak akkor, ha a két próbapanel gnd-jét összekötöm, vagy ha ugyanarról az adapterről működik mindkét pic. Ez miért van és hogyan kell kiküszöbölni?
Leírtad a választ: nincsenek összeföldelve, magyarul a küldött és a fogadott jel a két oldalon nincs azonos potenciálon. Három drót kell a kommunikációhoz: Rx, Tx, GND. Enélkül nem fog menni.
Üdv Mindenkinek!
Két pic között szeretnék adatot átvinni infrán keresztül. Valamilyen infrás ic-re gondoltam, amiből van adó és vevő változat is, és a pic-hez tudom kapcsolni. Tud valaki segíteni?
Lehet, egyszerűbb lenne a PIC-kel előállítani egy modulált kimeneti jelet, ami megy egy infra LED-re, a másik oldalon meg beépíteni egy TSOP1736-ot, vagy hasonlót és megoldani a vett jelek dekódolását.
Ez hardveresen roppant egyszerű, igaz, kicsit többet kell programozni vele
hali
szeretnék, egy olyan megoldást ami egyik helyen lévő 12 különböző kapcsolónak(érzékelőnek) az állapotát egy másik helyen ami kb. 20 méterre van az egyik helytől megjeleníteni. ez önmagában nem lenne túl bonyolult feladat, ha sok-sok vezetékem lenne a két hely között, de csak 4szál drótom van. ezért gondoltam arra, hogy valamilyen soros vonalon lehetne elküldeni az infót. a kapcsolóknak az állapotát, le tudom tenni TTL szintre és a vevő oldalon meg ledeket szeretnék meghajtani a kapcsolók állapotának megfelelően. probléma az is, hogy elektronikai szempontból meglehetősen zajos ez a környezet, tehát valami stabilan működő soros protokollra lenne szükség. azt hiszem az rs485? jó lenne erre. (ha jól gondolom) tud valaki erre esetleg egy már kész rajzot és programot vagy linket küldeni ? köszi zsolt
Attól nem kapsz több választ, hogy két helyre is beírod a kérdésed!
az lehet, de mintha ez a rovat jobban ráillene a problémára mint a másik.
szeretem a segítő hozzászólásokat, persze amelyek szorosan a felvetett problémára koncentrálnak.
A vételi oldalon van külön tápra lehetőség, illetőleg a kapcsolóknál? ezt azért kérdezem mert az rs485 az 3 vezetéket kér a kommunikációhoz... és még valahonnét megtáplálod , akkor az egyiknek át kell vinned a tápot...
Szerintem 20m-t rs 232-vel simán át lehet vinni... Két PIC 16F628 is elég a feladatra a progi szemtelenül egyszerü, ha még nem oldottad meg mindjárt írok egyet...
PIC 16f628A RA.0-RA.4 RB.0 RB.3-RB.7 ig összesen 12 bemenet negativra kapcsol pl. optocsatoló (kb817__4pin)
Kimenetként ugyanez a sorrend. Az Rs kommunikációban a RB.1 és RB.2 láb vesz részt... Portsebesség 2400, 50ms-onként küldi az adatokat A max232 illesztéséhez nézz egy példát ( most ennyi időm volt) ennyi az egész megoldás ... A pic-hez 4 mhz-es quartz kell 2x22pF-al... A Reset láb nincs kivezetve, ez is bemenet...
ha mindenképpen ragaszkodsz az rs 485-höz, akkor a 876A-t javaslom... A 628A- val is meg lehet csinálni, de nem bizok a quartz nélküli megoldásban (ugyanis fel kell használni ezen lábat is...)
A programon minimálisat kell csak módosítani mindkét esetben... illetve az illesztéshez a Max485 Ic_t kllhasználni...
jaj ne haragudj, hogy eddig semmi választ nem írtam, úgy elkavarodott a téma, hogy nem találtam meg...
nagyon köszönöm írásod, igen ez egy minden szempontnól segítő hozzászólás volt, ha most itt lehetne pontot is adnék érte. neki látok az általad adott információk alapján összeállítani ezt a cuccot, éppen most nincs 628-am csak 84-em de majd hétfőn beszerzek addig meg készítek egy próbapanelt hozzá köszi zsolt
Szia Zsotya!
Kérlek oszd meg velem (is), hogyan oldottad meg a 2 db 16F628A soros dumcsiját? Óra beállítás? (xtal, intosc), rutinok? Előre is köszi: fejesg
Szia Dcsabi!
Most látom ,hogy Te is foglalkozol a PIC-ek közötti soros kommunikációval. Modellvasúti mozdonyt szeretnék irányítani 2 (vagy 3) PIC segítségével. Ha az adó 16F628A lenne, akkor hozzá kellene kapcsolnom egy 12F683-at a sebesség-meghatározó potméterek miatt (ACD), illetve a vevő (mondjuk) 16F628A lenne. A vasúti pálya állandó feszültségű (egyik sínszál +12, másik sínszál GND), és a PIC jelét vmi kondenzátoros megoldással rá lehetne vezetni a +12V sínre. Az L293N IC-vel már megoldottam a menetirányváltást. illetve PWM jel segítségével a motor sebességét is tudom állítani. Csak sajnos nem tudok még adatokat küldeni egyik mikiről a másikra (impulzusszélesség értéke, amelyet AD átalakítóval szerzek a potméterektől). Előre is köszi a segítséget: fejesg
Köszi, hogy engem keresel:
Amit tudok mondani. hogy erre a feladatra át kellene nézned ezen a fórumon már ismertetett, a modell vasutak számára kidolgozott vezérlési eljárást... Nem tartom a témában annyira felkészültnek magam, hogy érdemben tudjak segíteni Egy_Vonat_topic
Sziasztok.
Én is szeretnék több PIC-et összekötni I2C - vel, vagy más hasonlóan kiválló megoldással , de a kérdésem az, hogy ha az egyik PIC örök bitmezőkre szenderül, akkor nem bénítja le teljesen a többi PIC kommunikációját, sőt nem teheti tönkre a többi PIC IO lábait? Az áramkörök kocsiba lesznek építve és első a biztonság. gyújtás, lámpák, műszerek, stb. |
Bejelentkezés
Hirdetés |