Fórum témák
» Több friss téma |
Szia Nokia 3220 -hoz nem találtam, viszont ezt tudom küldeni.
Nagyon köszönöm.
Lehetséges i2c kommunikáció egy picf4523 és egy pic24fj64gaa02 ic között? Egyik 5 v-on, másik 3,25 v-on üzemel. Valami speciális szintáttevő kell vagy össze lehet őket kötni csak simán?
I2C busszal kapcsolatos elméleti kérdésem lenne. Mivan akkor, ha egy slave eszköznek küldünk valami parancsot I2C-n keresztül, az elkezdi azt csinálni, de valamiért viszonylag hosszú időbe telik, mire végez vele, de közben ismét megcímezzük az eszközt? Van ennek a jelzésére valami szabványos megoldás a master irányába (pl. mint a clock stretching, amikor a slave nem tud több adatot fogadni/nem kész még a küldeni való adat), hogy a slave még nem áll készen, vagy pedig ezt mindenki csinálja, ahogy akarja? Ahogy neten túrtam, az EEPROM-ok azt csinálják, hogy amíg nem végeznek az adat írásával, addig nem válaszolnak az újabb címzésre, ezért a master egy NACK-t fog látni a buszon, ebből fakadóan pedig később újra próbálkozik. De nekem az a gondom, hogy a kontroller mással van elfoglalva, megvan címezve írásra, kap egy bájtot, majd egy restart esemény jön a buszon, majd címzés olvasásra, és a master akar X számú bájtot olvasni. Előfordul, hogy a slave nem tudja lekezelni még a bájt fogadását, és a stop eseményt, amikor már befut az olvasásra a címzés, ezzel pedig egymásra futnak a dolgok, többé nem lehet megmondani, hogy mi volt előbb. Mivel a FIFO-ban még lenne hely, ezért az SCL vonalat nem tartja alacsonyan a slave hardverből, mert tud fogadni még adatot, tehát nem tudja megfogni a kommunikációt.
Tudom, szervezzem át a programokat, de sajnos nem csak rajtam múlik a dolog, ez egy kész modul RTOS-el, és úgy néz ki, hogy az RTOS dinamikus memóriakezelője néha elmolyol hosszabb ideig, és akkor jön a fenti egymásrafutás. Memóriakezelő tiltja a megszakításokat egy kódrészletnél, és engedélyezi utána, nagyon úgy néz ki, hogy ez a kódrészlet tart (néha) sokáig. Őszintén szólva én nem látok a problémára semmi megoldást. Az jutott eszembe, hogy belenyúlni a memóriakezelőbe, hogy ne az összes megszakítást tiltsa, hanem a legmagasabb prioritásút hagyja meg, és akkor az I2C megszakításkezelői le tudnak futni időben, de ez elég tákolásnak tűnik, bár lehet, hogy ez lesz a vége...
Szia!
Nézz utána, mert csak emlékezetből írom, de nekem úgy rémlik, hogy itt is lehet foglaltságjelzést adni ( ha jól emlékszem a CLK láb GND-re húzásával) , mivel érzékelni lehet a master részéről, hogy nem úgy alakulnak a lábai ahogy szeretné ( OC, OD lábak ) és akkor felfüggesztheti az adást!
Ezaz, hogy én erre vonatkozóan nem találtam semmit sem. És a chip adatlapja is említ olyat, hogy ha a transfer complete flag (ami ugye stop vagy restartkor billen be) még nincs lekezelve, amikor a címzés befejeződik, akkor ez bebillenti az overflow flaget, és innentől kezdve nem lehet tudni, hogy mi is történik pontosan a buszon. Ha az adatlap is ezt írja, akkor szerintem erre nincs megoldás az i2c szabványban
A Microchip AN734/735-ben nincs erre megoldás (ütközés lekezelés)?
Belenézek, de nem PIC a slave, hanem egy BlackFin. Mondjuk a Master az egy PIC32, de ez nem sokat számít jelen állás szerint...
Sziasztok!
2 PIC I2C kommunikációjával szórakozok egy ideje. Az már működik, hogy a master adatokat küld a slave-nek és az azokat értelmezi. Viszont visszafele, amikor a master akar olvasni befagy a program (a master-é és a slave-é is). Hol lehet a probléma? Mellékeltem az érintett kódrészleteket.
Sziasztok!
Életem első I2C slave-jével küzdök, értelemszerüen eredménytelenűl. Egy kis kezdő lökést szeretnék kérni. A dolog még nagyon az elején tart, de már elakadtam. Egyenlőre csak szimulátorban (proteus) próbálom de már így sem..... Az AN734 alapján csinálnám, de - a megszakításba bele sem fut - a slave (gyanitom ugyan ezért) nem válasol, még a cím byte-ra sem küldi ak ACK-t Amig ezek nem mennek, nem tudok tovább lépni. Az init
Gyakorlatilag az AN734 szerinti, csak az SSP van SSP1-ra állítva mert a 16F1828-el akarom megépíteni. A master biztos jó, mert az i2C buszon van egy DS1307 is, és azt jól kezeli, tehát a slave-ben van a hiba (vagy bennem). Az erősen hiányos (0) angoltudáson "kissé" hátráltat. Valakinek ötlete hogy merre keresgéljek tovább? A hozzászólás módosítva: Júl 7, 2018
Engem az futtatott meg I2C szimulálásakor, hogy sose érkezett meg az adatcsomag a szimulátorban. Ezután felhagytam a szimulálással és inkább az éles PIC-re akaszkodtam rá debug módban és láss csodát élből ment a hibakeresés!
Neked is ezt ajánlom, I2C szimulálás helyett töltsd rá a programod egy debugolható PIC-re és ott nézd mi történik (erre nagyszerű segítség egy logikai analizátor).
Na valami ilyesmi a jelenség, de mintha méda cím sem érkezne meg.
Pont ezt akartam elkerülni hogy össze kelljen állítani a deszkát. Nem igazán kötséghatékony. Alapvetően smd PIC-et használok, de így be kell szerezni (ha lehet) furatszereltet....... Nem hiszem hogy ennyire alap dolgot ne tudna a Proteus.
Én az MPLAB-X szimulátorát próbáltam. Kijelzőhöz írt I2C kommunikációt figyeltem volna, s a kommunikáció ACK parancsai nem jöttek vissza, így leállt a program és várt rá... Ezt a programot rátöltöttem egy PIC-re, debug mód és láss csodát, rendesen ment a kommunikáció (igaz zagyvaságok voltak a kijelzőn eleinte, de az már más lapra tartozik).
A szimulátornak azzal volt gondja, hogy a kommunikációs kísérletre mit feleljen, vagy éppenséggel, hogy ő maga adja a parancsokat. Sajnos ez a magyarázó videó tele van reklámmal, de talán hasznos lehet Proteushoz: Bővebben: Link
Hali!
Egy kicsit szívtam vele én is annak idején. Ha érted a BASIC-et, akkor a melléklet talán segít kicsit. Igaz 16F819-re írtam.
Átfutottam a bas kódot, de nem látok benne semmi rendkívülit. A konfig biteket még egyszer alaposan áttanulmányozom.
Vannak ugyan előrelepésék, de azt hiszem nagyon messze van még a megoldás. Jelenleg azzal küzdök ( még csak három napja ) hogy a mester nem hajlandó olvasni a slavről. A jelenlegi állapot: Kiküldöm a címet, az meg is jőn szépem kiküldöm a TX offsetet (egy tömd ahonnan olvasmia kéne x. byt.tól ) ez is megjön, be is állítja de itt jön a kufirc, mert hiába kérnék le bytokat a pufferből - ReadI2C - nem generélódik megszakítás. Hp41C: Nagyon ug néz ki hogy a AN437-et használom. Biztam benne hogy karbantartják, de rákeresek a C re hátha előrébb visz.
Aranyos. Imádom mikor egy pdf-ben van link de nem működik.
Maradt a bitzsonglörködés.
Javaslom mindenkinek aki i2c, SPI interface-t használ, hogy vegyen 1500 Ft-ért ebayről egy logikai analizátort, pl. Salae kompatibilisat. Nem kell szimulátorral vacakolni, egyből látod ami az adatvonalon van. Nekem többször nagyon jól jött.
Nem tudsz egy működö linket ahol a példaprogramokat nem csak emlegetik hanem le is tölthetőek?
Ezen az oldalon a pillanat szorító. Ezen kívül a Google a "pic i2c slave tutorial" kérdésre 70000 találatot, de nem tudom melyik működik.
Köszi, de eddig is ezekből próbálkoztam kevés szerencsével, amiket találtam hasonló, de azért köszi. Túrok tovább hátha egyszer szerencsém is lesz.
Én is ebben a cipőben járok.
Azt a "tudományos" megközelítést választottam hogy letöltöttem egy valag példaprogramok és próbálkoztam, összahasonlítgattam, és mikor végre elindult elkezdtem debugolni és átírni a programokat hogy azt csinálja amit szeretnék. Elértem ugyan arra a pontra hogy működik proteusban is, de még nem találtam meg a magyarázatot hogy MITŐL. Amíg ez nincs meg nem lépek tovább. Kitartás, és nagy szerencse. Előbb utóbb el fog indulni.... |
Bejelentkezés
Hirdetés |