Fórum témák
» Több friss téma |
Üdv!
A következő gondom a BANK0 regiszter csoport kiolvasásnál jött. Itt 2 gondom is van. Első körben az hogy úgy néz ki, hogy az első adatot duplán kapom meg ezért ennek a kiiktatására végzek egy "trash" olvasást, aminek a kapott értékét nem használom fel. Ezután olvasom be a 16 regisztert amiből 3 értéke nem egyezik meg az adatlapon szerepelt default(PoR) értékekkel. Ez mitől lehet? SB
Hali!
erratáját megnézted?
Ma beleolvastam, de nemigazán találtam meg a választ benne.
Egy ötletet viszont adott: nézzem meg a rev számát. Így kiolvastam a EREVID regisztert, ami 6-od ad vissza. Ezek alapján ez egy B7-es IC. Ha már ezt kiolvastam megnéztem egy másik IC-t is, ami szintén B7-es reviziós. Végül ennek is kiolvastam a BANK0 registereit amik szintén részben nem egyeztek az adatlappal, sőt a másik IC-ével sem! Ez hogy lehet?
Úgy néz ki megvan a hiba.
A hibát az okozta, hogy az adattömböknek nem adtam konkrét méretet.
Ezzel a változtatással már úgy néz ki,hogy működik:
SB
Üdv!
A tisztánlátás kedvéért azt szeretném megtudni, hogy a fileban szereplő ethernet frame felépítése stimmel e? A MAC frame data (Payload) része tartalmazza az IP csomagot, aminek a payload-ja tartalmazza a TCP csomagot, aminek az payload-jában van maga a HTTP utasítás (CMD). Az ENC28J60 adatlap szerint, a MAC frame payloadja minimum 46 byteos, ami az IP, TCP és HTTP adatokból épül fel. Az IP header-je min. 20 byte-os akár a TCP header-je. Ezek alapján a HTTP adat min 6 byteos-nak kell lennie, 20+20+6=46 byte, stimmel? Források: IPv4 TCP HTTP AN1120 - Ethernet Theory of Operation ENC28J60 Datasheet SB
Üdv!
A beállítások során egy nagy hibába ütköztem. Nem tudom az ECON1.RXEN bitet beállítani, a chip nem engedi. Akár hányszor is küldöm ki a parancsot: mindig RXEN =0 jön vissza. Minden mást simán tudok írni/olvasni. Hol lehet a baj? Mikor nem engedi a RXEN beállítását? SB
Hali!
fenti enc pdf-ben 9-es fejezet?
Üdv!
A 9 és 10. fejezetet még csak felületesen olvastam át. Ezekben nem találtam jelen esetben hasznos infot. A gond, hogy ha az ECON1 regiszterben az RXEN bitet akár a WCR(write control register) akár a BFS(bit field set) paranccsal logikai 1-re állítom, a regiszter kiolvasásakor mindig 0 marad. SB A hozzászólás módosítva: Aug 4, 2014
A 9.1, 9.2 elején írja hogy bizonyos feltételeknél rxen érvénytelen...
Nem vagyok spiller a témában, csak felületesen olvastam én is.
Erre a bekezdésre gondolsz?
Idézet: „ 9.2 Full-Duplex Operation The ENC28J60 operates in Full-Duplex mode when MACON3.FULDPX = 1 and PHCON1.PDPXMD = 1. If only one of these two bits is clear, the ENC28J60 will be in an indeterminate state and not function correctly. Since switching between Full and Half-Duplex modes may result in this indeterminate state, the host controller should not transmit any packets (maintain ECON1.TXRTS clear) and packet reception should be disabled (ECON1.RXEN and ESTAT.RXBUSY should be clear) during this period.” Ezt én úgy értettem, hogy a MACON3.FULDPX és a PHCON1.PDPXMD biteknek meg kell egyezniük, ha mindkettő 0 akkor Half-Duplex, ha mindkettő 1 akkor Full-Duplex módban van. Ha a két bit eltér, akkor a chip ide-oda vált a Full- és a Half-Duplex módok között, azaz instabil lesz. Az utolsó mondatban meg csak annyit ír, hogy ne küldjünk és ne fogadjunk adatot(várjuk meg az utolsó épp érkezőt ha van), ha át szeretnénk váltani az egyik módból a másikba. Vagy ezt rosszul értem? SB
A banks.txt-be lementettem HyperTerminalon keresztül a BANK0-3 értékeit inicializálás előtti és utáni értékeit.
Valakinek valami ötlete mit állíthatok be rosszul? SB
Tegnap valahogy sikerült bekapcsolnom az ECON1.RXEN bitet. Azóta gond nélkül megy a bit ki-és bekapcsolása. (hogyan sikerült azt nem tudom)
Most a gondom, hogy vagy nem kapok csomagot, vagy csak az interrupt nem küld jelet. A routerben a port1-ben, amire ez enc28j60-as csatlakozik, kikapcsoltam az auto-negotiate funkciót(mivel a chip ezt nem támogatja) és a 100Mb-es beállítást(mivel csak 10Mb-es), csak a Full-Duplexet hagytam bekapcsolva. A LEDA-t a RX jelzésére állítottam be a PHLCON-ban és az 1-2mp-ként fel is villan. Ezek szerint csomagot küld a router csak valamiért a chip nem fogadja? SB
Sziasztok!
Van olyan lehetőség a stackben, hogy nem rerquestre válaszol a pic, hanem mondjuk fut egy pc-n egy kis progi ami tcp 1000-es porton listenel, ha a picben bekövetkezik egy esemény mondjuk tmr0 interrupt, akkor automatikusan felkapcsolódik és elküld mondjuk egy byte-ot? Üdv, Matt
Szerintem nincs akadálya.(kezdőként gondolom)
Mivel az eszköz képes adatot fogadni és küldeni, így csak programot kell neki írni, hogy mikor is küldje a csomagot. Valahol a neten találtam egy ping-elős kódot, ahol a PIC kezdeményezte majd fogadta a pong választ. SB
Sziasztok!
Segítségre lenne szükségem! Az alábbi SPI_Ethernet demo-val nem boldogulok: Bővebben: Link A teljes forrás és kapcsolási rajz a link alján található. A kapcsolást megépítettem a mellékelt fotón látható módon. Az ENC28J60 áramköre helyett egy kész modult használtam, aminek a kivezetéseit, az áramkörben megadott módon kötöttem be. A 16F887 PIC-nek 8Mhz-es belső INTOSC oszcillátort állítottam be a fordítóban. A forrásban lévő IP címet a saját hálózatomnak megfelelően írtam át (10.0.0.201). A program fordítása és felírása gond nélkül ment, viszont a pc-ről hiába pingetem, vagy akarom böngészőben behozni a html oldalt, nem sikerül. És itt jön egy csavar a hibajelenségbe: A tegnapi sikertelen próbálkozások után, mindenféle módosítás nélkül, a mai napon azonnal működött az áramkör az első indításakor, majd miután kikapcsoltam és újra be, már ismételten "néma" maradt. Ezután több tíz próbálkozást követően ismételten lehett pingetni, majd ismételten nem. Amikkel eddig próbálkoztam: -Kábelcsere -PIC csere -Ethernet modul csere -Nyomógombok kikommentelése a forrásban, nehogy valami zajt szedjenek össze -Kisebb és nagyobb oszcillátor értékek megadása -Számítógépem és switch újraindítása, LAN kábel cseréje -Más számítógépről történő pingetés -Cross kábellel direktbe kötni a gépemmel a modult Kifogytam az ötletekből. Remélem valaki tud adni egy tippet, mi okozhatja a hibát.
Mekkora kvarcot? Mert azt nem írja a kapcsolás.
Amit már próbáltam, hogy a modul clkout-ját átkötöttem a PIC clkin-re, és 25mhz-es HS-re állítottam a fordítóban a frekvenciát. Persze ez sem jött be...
Szia!
Mennyire stabilizáltak a tápfeszültségek?
AMS1117-el van megoldva.
A PIC-nél működés közben 4.78V-ot mérek, az ENC78J60-nál 3.3V-ot. Közben műszerrel átvizsgáltam az összes kontaktot, nincs-e érintkezési probléma, de nem találtam hibát. A modul és a PIC közötti színes kábel hossza nem lehet probléma? kb 20cm-esek. A hozzászólás módosítva: Okt 1, 2014
A szintillesztes az ENC es a PIC kozott hogy van megvalositva? Tehat a 3.3 es az 5 voltos rendszer kozott illik egy szintillesztest csinalni.
74HCT245-öt használtam, ahogyan a mellékelt linken szereplő rajzban is ábrázolva van.
Nezd meg ezt a megoldast. Nalam ez a panel kivaloan mukodott 16F887-el.
Köszönöm!
Viszont az eredeti demo kapcsoláshoz már megvettem az alkatrészeket, újak beszerzése pedig napokat tolna a megvalósításon, ill érdekelne, is, hogy mi a fenéért nem működik ez. Most a 74HCT245-re keresek anyagokat, hogy nem hiányzik-e valami arról a rajzról. Pl a 19-es lába nincs bekötve, arra pedig azt írja a manualja, hogy "output enable input (active LOW)". Nem kellene ezt testre kötni? 74HCT245N-t tudtam beszerezni. Te hány Mhz-en használtad a 16F887-et?
Működik!
Hogy szakadna rá az ég aki hivatalos demoba, hibás kapcsolási rajzot tesz. A 74HCT245 19. lábát testre kell kötni.
Hali!
Ha már megtaláltad a hibát akkor ott a lap alján megírhatod nekeik a hibát...
Üdv!
Eljutottam odáig, hogy egy egyszerű szöveget megjelenítsek a böngészőben. Egy sorral ment is. Így kipróbáltam egy butított részletet a tervezett oldalból, amit meg szeretnék jeleníteni. Nem lett nagy ~1KB, így egy csomagban elfér. Na, de az elképzelés és a valóság nem egyezik meg. A gond, hogy az adat 90% elvész. Összesen 181byte-ot küld el. Csak ennyit küld el...
...ennyiből:
A TCP Checksum a WireShark-ban hibásként jelenik meg. Szerintem azért, mert a teljes oldalra generálódik a kód, de ezt nem teszteltem le. Ami gyanús, hogy a TCP Segment Length-et csupán 127byte hosszúnak jelzi. Hol keressem a hibát?
Meg van a hiba.
Eredetileg a második SPIWR()-ban csak 16 szerepelt, ami nem is volt gond, amíg csak 200KB alatti, pontosabban 255KB alatti, csomagokat küldtem. Mivel az ETXNDL regiszter 16 bites, így a high-byte nem módosult. Szóval csak a high-byte hozzáadása, a +(i>>8), hiányzott.
Sziasztok.
Ide is belinkelem a kérdésemet, hátha itt tudtok segíteni. Bővebben: Link Előre is köszönöm! |
Bejelentkezés
Hirdetés |