Fórum témák

» Több friss téma
Fórum » ENC28J60 ETHERNET vezérlő használata
Lapozás: OK   16 / 17
(#) Sick-Bastard hozzászólása Jún 24, 2014 /
 
Ü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
(#) pipi válasza Sick-Bastard hozzászólására (») Jún 24, 2014 /
 
Hali!
erratáját megnézted?
(#) Sick-Bastard válasza pipi hozzászólására (») Jún 24, 2014 /
 
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?
(#) Sick-Bastard válasza Sick-Bastard hozzászólására (») Jún 25, 2014 /
 
Úgy néz ki megvan a hiba.

A hibát az okozta, hogy az adattömböknek nem adtam konkrét méretet.
  1. unsigned char i, data, data0[] = {}, data1[] = {}, data2[] = {}, data3[16] = {0b11111010,0b00000101,0,0,0,0,0,0,0b11111010,0b00000101,255,0b00011111, 0b11111010,0b00000101,0,0};

Ezzel a változtatással már úgy néz ki,hogy működik:
  1. unsigned char i, data, data0[16] = {}, data1[16] = {}, data2[16] = {}, data3[16] = {0b11111010,0b00000101,0,0,0,0,0,0,0b11111010,0b00000101,255,0b00011111, 0b11111010,0b00000101,0,0};


SB
(#) Sick-Bastard hozzászólása Aug 1, 2014 /
 
Ü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

mac frame.txt
    
(#) Sick-Bastard hozzászólása Aug 4, 2014 /
 
Ü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:
  1. ....
  2. ENC28J60_CS();
  3. SPIWR(BFS|ECON1);
  4. SPIWR(RXEN);
  5. ENC28J60_DS();
  6. ...


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
(#) pipi válasza Sick-Bastard hozzászólására (») Aug 4, 2014 /
 
Hali!
fenti enc pdf-ben 9-es fejezet?
(#) Sick-Bastard válasza pipi hozzászólására (») Aug 4, 2014 /
 
Ü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
(#) pipi válasza Sick-Bastard hozzászólására (») 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.
(#) Sick-Bastard válasza pipi hozzászólására (») Aug 5, 2014 /
 
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
(#) Sick-Bastard hozzászólása Aug 5, 2014 /
 
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

banks.TXT
    
(#) Sick-Bastard hozzászólása Aug 7, 2014 /
 
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
(#) Matt hozzászólása Aug 11, 2014 /
 
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
(#) Sick-Bastard válasza Matt hozzászólására (») Aug 12, 2014 /
 
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
(#) progee hozzászólása Okt 1, 2014 /
 
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.
(#) GPeti1977 válasza progee hozzászólására (») Okt 1, 2014 /
 
Használj kvacot órajelnek.
(#) progee válasza GPeti1977 hozzászólására (») Okt 1, 2014 /
 
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...
(#) kadarist válasza progee hozzászólására (») Okt 1, 2014 /
 
Szia!
Mennyire stabilizáltak a tápfeszültségek?
(#) progee válasza kadarist hozzászólására (») Okt 1, 2014 /
 
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
(#) vilmosd válasza progee hozzászólására (») Okt 2, 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.
(#) progee válasza vilmosd hozzászólására (») Okt 2, 2014 /
 
74HCT245-öt használtam, ahogyan a mellékelt linken szereplő rajzban is ábrázolva van.
(#) vilmosd válasza progee hozzászólására (») Okt 2, 2014 /
 
Nezd meg ezt a megoldast. Nalam ez a panel kivaloan mukodott 16F887-el.
(#) progee válasza vilmosd hozzászólására (») Okt 2, 2014 /
 
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?
(#) progee válasza vilmosd hozzászólására (») Okt 2, 2014 /
 
Na még a végén az a 19-es láb lesz tényleg a hibás.
Bővebben: Link
Alig várom, hogy kipróbálhassam.
(#) progee válasza progee hozzászólására (») Okt 2, 2014 /
 
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.
(#) pipi válasza progee hozzászólására (») Okt 3, 2014 /
 
Hali!
Ha már megtaláltad a hibát akkor ott a lap alján megírhatod nekeik a hibát...
(#) progee válasza pipi hozzászólására (») Okt 3, 2014 /
 
Megírtam nekik.
(#) Sick-Bastard hozzászólása Okt 31, 2014 /
 
Ü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...
  1. <html><head><style></style></head><body><form action="avr.php" me

...ennyiből:
  1. <html><head><style></style></head><body><form action="avr.php" method="POST"><table id="relay">
  2. <tr><td>Relay 1</td><td><button type='Submit' name='r[1]' value='1'>OFF</button></td></tr><tr><td>Relay 2</td><td><button type='Submit' name='r[2]' value='1'>OFF</button></td></tr><tr><td>Relay 3</td><td><button type='Submit' name='r[3]' value='1'>OFF</button></td></tr><tr><td>Relay 4</td><td><button type='Submit' name='r[4]' value='1'>OFF</button></td></tr><tr><td>Relay 5</td><td><button type='Submit' name='r[5]' value='1'>OFF</button></td></tr><tr><td>Relay 6</td><td><button type='Submit' name='r[6]' value='1'>OFF</button></td></tr><tr><td>Relay 7</td><td><button type='Submit' name='r[7]' value='1'>OFF</button></td></tr><tr><td>Relay 8</td><td><button type='Submit' name='r[8]' value='1'>OFF</button></td></tr></table></form> </body> </html>


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?
(#) Sick-Bastard válasza Sick-Bastard hozzászólására (») Nov 8, 2014 /
 
Meg van a hiba.

  1. // i az a csomag mérete integerben megadva
  2. ENC28J60_CS();
  3. ENC28J60_CMD(WCR,ETXNDL);
  4. SPIWR(i);
  5. SPIWR(16+(i>>8));
  6. ENC28J60_DS();


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.
(#) Panhard hozzászólása Nov 9, 2014 /
 
Sziasztok.
Ide is belinkelem a kérdésemet, hátha itt tudtok segíteni.
Bővebben: Link
Előre is köszönöm!
Következő: »»   16 / 17
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem