ENC28J60 <-> PC Çalışma Kontrolü

Başlatan salihonur, 25 Ağustos 2013, 21:26:05

salihonur

Arkadaşlar,

PIC MCU + ENC28J60 bir devre tasarladım. Ancak PC de hiçbir ağ bağlantısı uyarısı almıyorum. Sorunun yazılımdan mı yoksa donanımdan mı, ethernet devresinden mi çözemedim.

Ethernet Tester cihazı, 1-8 e kadar bağlantı testini gösteriyor.

Sorum şu ki:

Sadece ENC28J60'lı ethernet devresine enerji versem PC'de hareketlilik gözlemlemem gerekir mi? Yoksa illaki PIC tarafındaki yazılım da doğru çalışmalı da "bağlantı var" diyecek?

Burak B

Wireshark kullanarak paketlerin sana ulaşıp ulaşmadığını kontrol et.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

Gökhan BEKEN

Devreniz nerde? Yazılımınız nerde? Hangi dil. Hangi pic, enc devreniz hazır mı siz mi yaptınız? Hiç bir veri olmadan bişey söylenemez.
Burda belki işenize yarayacak bilgiler vardır: http://gokhanbeken.com/?p=592
Özel mesaj okumuyorum, lütfen göndermeyin.

salihonur

Alıntı yapılan: meftun - 25 Ağustos 2013, 22:59:28
Devreniz nerde? Yazılımınız nerde? Hangi dil. Hangi pic, enc devreniz hazır mı siz mi yaptınız? Hiç bir veri olmadan bişey söylenemez.
Burda belki işenize yarayacak bilgiler vardır: http://gokhanbeken.com/?p=592

Wireshark da herhangi bir veri akışı yok. Zaten yerel ağ bağlantısı da görünmüyor.

Gökhan Beken'in sayfasından yardım alarak oluşturdum. Zaten Datasheet'te belirtilen aynısı. Sadece 50R yerine 56R direnç koydum.

Devre şeması aşağıdaki gibi.
[IMG]http://img27.imageshack.us/img27/6923/wx3x.png[/img]

Devreyi bakır plaket üzerine kayıpsız işledim. PCB dosyasında göreceğiniz gibi Rj45 ve PIC'i bakır plaketin mat yüzeyine konulacağından ters olarak yerleştirdim.
[IMG]http://img836.imageshack.us/img836/9694/0rv5.png[/img]

Yazılım olarak da bulabildiğim CCS ve C18 kodlarını editleyerek kullandım. (PIC18F2520 ve PIC18F25K22)

En son kullandığım CCS kodu: https://hotfile.com/dl/241605821/e5aef26/WebServer_v1.0.zip.html

Gökhan BEKEN

Mikroc deki yazılım çok kolay düzenlenebildiği için onu öneririm. En azından deneme aşamasında iyi olur.
51 yerine 56 ohm olmaz. Hatta 49,9 ohm %1 toleranslı bulursanız en iyisi o. ENC28j60 devresinin ledleri yanıp sönüyor mu? Eğer yanmıyorsa sorun var demektir. Kabloyu direkt modeme bağlıyorsanız kablonunun her iki ucuda aynı renk sıralamasında olacak, ancak kablonun bir ucunu devreye diğer ucunu bilgisayara bağlıyorsanız çapraz kablo kullanmanız gerekir.
RJ45 konnektörünüz trafolu değilse trafolu takın. Datasheetteki bağlantılarını mutlaka okuyun ona göre bağlayın. Piyasadaki her konnektörün pin numaraları farklı.
Nasıl test ettiğiniz de önemli. Komut satırına ping 192.168.1.xxx şeklinde bir ping atıp cevabını beklemeniz gerekir.
xxx kısmı yazılımınızda belirttiğiniz adres olması gerekir. Bu ip 192.168.1. şeklinde başlamalı son kısmı ise ağınızda fazla bilgisayar varsa kullanılmayan bir ip numarası verilmelidir. Örneğin 1 den 10 a kadar vermeyiniz çünkü büyük ihtimal dolu olabilir. Ben 222 veriyorum genelde.
Kısaca böyle. Bunları bir düşünün sorun devam ederse yardımcı olurum.
Elinizde hazır enc28j60 devresi olsa sorunu daha iyi tesbit edebilirdiniz.
Özel mesaj okumuyorum, lütfen göndermeyin.

salihonur

Alıntı yapılan: meftun - 26 Ağustos 2013, 00:04:58
Mikroc deki yazılım çok kolay düzenlenebildiği için onu öneririm. En azından deneme aşamasında iyi olur.
51 yerine 56 ohm olmaz. Hatta 49,9 ohm %1 toleranslı bulursanız en iyisi o. ENC28j60 devresinin ledleri yanıp sönüyor mu? Eğer yanmıyorsa sorun var demektir. Kabloyu direkt modeme bağlıyorsanız kablonunun her iki ucuda aynı renk sıralamasında olacak, ancak kablonun bir ucunu devreye diğer ucunu bilgisayara bağlıyorsanız çapraz kablo kullanmanız gerekir.
RJ45 konnektörünüz trafolu değilse trafolu takın. Datasheetteki bağlantılarını mutlaka okuyun ona göre bağlayın. Piyasadaki her konnektörün pin numaraları farklı.
Nasıl test ettiğiniz de önemli. Komut satırına ping 192.168.1.xxx şeklinde bir ping atıp cevabını beklemeniz gerekir.
xxx kısmı yazılımınızda belirttiğiniz adres olması gerekir. Bu ip 192.168.1. şeklinde başlamalı son kısmı ise ağınızda fazla bilgisayar varsa kullanılmayan bir ip numarası verilmelidir. Örneğin 1 den 10 a kadar vermeyiniz çünkü büyük ihtimal dolu olabilir. Ben 222 veriyorum genelde.
Kısaca böyle. Bunları bir düşünün sorun devam ederse yardımcı olurum.
Elinizde hazır enc28j60 devresi olsa sorunu daha iyi tesbit edebilirdiniz.

Teşekkür ederim. En iyisi dediğiniz gibi yarın hazır bir modül bulup en azından yazılımı test edeyim. Tersine mühendislikle sanırım çözerim.

Gökhan BEKEN

Bu arada eeprom takmazsanız c18 TCP/IP stack ile yapacağınız yazılım kesinlikle çalışmayacaktır. Ping'e bile cevap vermez. EEPROM için 25LC256 veya 25LC512, 25LC1024 takabilirsiniz.
Denemeler için tekrar mikroc öneririm, baktınız çalışıyor, c18 ile devam edersiniz.
Özel mesaj okumuyorum, lütfen göndermeyin.

salihonur

Alıntı yapılan: meftun - 27 Ağustos 2013, 14:33:12
Bu arada eeprom takmazsanız c18 TCP/IP stack ile yapacağınız yazılım kesinlikle çalışmayacaktır. Ping'e bile cevap vermez. EEPROM için 25LC256 veya 25LC512, 25LC1024 takabilirsiniz.
Denemeler için tekrar mikroc öneririm, baktınız çalışıyor, c18 ile devam edersiniz.



Harici eprom kullanmadan birkaç  CCS ve C18 koduyla 18F4550 + Hazır ENC28j60 denemesi yaptım. Ram ve program memory %50 civarında yer tuttu. IP ve Gateway'leri bile tanımlamama rağmen PC de "Tanımlanmayan Ağ" yanıtını aldım. Crossover, düz kablolarla ve switch'le bağlantılar yaptım.

Başta modülün VCC ve GND'sini ters bağlamışım. El yakacak sıcaklığa ulaştı. Hemen düzelttim. Sorun, belki ENC28J60 çipinin zarar görmüş olmasından kaynaklanıyordur. Yeni bir çip alıp yenisiyle değiştireceğim.

Bir de eprom kullanarak deneyeyim. Zaten kodlar 18F25K22 için derlenemiyor. Hafıza yetersiz uyarısı veriyor.

Gökhan BEKEN

Bence deneme için sadece mikroc kullanın diğerleri bir ton ayar felan gerektiriyor.
Mikroc de sadece ip adresini mac adresini yazıyorsunuz, enc28j60'ın cs ve reset pinini yazıyorsunuz, kodlar fazla tutmuyor.
Bu arada enc28j60'ın reset pinini pic'e bağlamanıza gerek yok ben direkt +3.3 volta bağlıyorum.
Siz devrenizin bağlantılarını yazarmısınız.
Bütün devreyi 3.3v ile çalıştırıyorsunuz değil mi?
Bu örnek bir şema: http://s9.postimg.cc/ro9nimdsv/erik.png
Ben buna ilaveten ;
enc28j60'ın int pinini pic'in int0 pinine
enc28j60'ın wol pinini pic'in int1 pinine
Bağlıyorum.
ENC28J60'ın rj45 soketindeki ledler yanıp sönüyor mu?
Devreyi modeme değil direkt PC ye bağlıyorsunuz galiba, çapraz kablo kullanmanız lazım. Eğer elinizdeki kablo çapraz değilse kabloyu direkt modeme takın.
Tekrar ve tekrar mikroc yi öneriyorum.
Özel mesaj okumuyorum, lütfen göndermeyin.

salihonur

Alıntı yapılan: meftun - 29 Ağustos 2013, 10:08:42
Bence deneme için sadece mikroc kullanın diğerleri bir ton ayar felan gerektiriyor.
Mikroc de sadece ip adresini mac adresini yazıyorsunuz, enc28j60'ın cs ve reset pinini yazıyorsunuz, kodlar fazla tutmuyor.
Bu arada enc28j60'ın reset pinini pic'e bağlamanıza gerek yok ben direkt +3.3 volta bağlıyorum.
Siz devrenizin bağlantılarını yazarmısınız.
Bütün devreyi 3.3v ile çalıştırıyorsunuz değil mi?
Bu örnek bir şema: http://s9.postimg.cc/ro9nimdsv/erik.png
Ben buna ilaveten ;
enc28j60'ın int pinini pic'in int0 pinine
enc28j60'ın wol pinini pic'in int1 pinine
Bağlıyorum.
ENC28J60'ın rj45 soketindeki ledler yanıp sönüyor mu?
Devreyi modeme değil direkt PC ye bağlıyorsunuz galiba, çapraz kablo kullanmanız lazım. Eğer elinizdeki kablo çapraz değilse kabloyu direkt modeme takın.
Tekrar ve tekrar mikroc yi öneriyorum.

PIC min 3.3 gerektiriyor. Ben de her iki tarafın da gönlünü yapıyorum 3.6-3.8V veriyorum.

MicroC sayfasından IDE indirdim, derlemeye çalıştığımda hata veriyor.

Şu videoların açıklamasında paylaşılan CCS kodları ile denemeler yaptım. Bağlantıları da adamlar nasıl çalıştırdı ise aynen bıraktım. Değişiklik yapmadım. Ben sadece ilgili pinleri birbirine bağlıyorum. Hem hex'i olduğu gibi yükleyerek denedim hem de IP, gate v.s. değiştirerek derledim. Aynı şekilde davranıyor.

Kod-1: PICWEB PIC18F4550 + ENC28J60
Kod-2: ENCENDER LED POR INTERNET - 18F4550 & ENC28J60

Kod-1 için bağlantı yapısı aşağıdaki gibidir.

#define PIN_ENC_MAC_SO  PIN_D7   // PIC <<<< ENC
#define PIN_ENC_MAC_SI  PIN_D6   // PIC >>>> ENC
#define PIN_ENC_MAC_CLK PIN_D5
#define PIN_ENC_MAC_CS  PIN_D4
#define PIN_ENC_MAC_RST PIN_D3
#define PIN_ENC_MAC_INT PIN_D2
#define PIN_ENC_MAC_WOL PIN_D1


C18 ile derlenmiş hexi doğrudan denedim. Onda da programı açıp derleme yaptığımda hata veriyor.

Hem çapraz hem standart kablo ile denedim. Zaten çapraz kablo ile hiç görmüyor bile.

Hem doğrudan bağladım, hem switch kullandım hem de belki DHCP'de sorun vardır diye modeme takarak denedim.

Soketteki ledler yanıp sönüyor. Bilgisayar da ağı tanımaya çalışıyor. Sanki IP alamıyor gibi geldi bana.

frederic

Derleme içerisine alınan hardware,h diye de bir dosya olması lazım, onun içinde de yine yukarıdaki tanımlamalar yapılmış ve enc28j60.c dosyasında ki pin tanımlamalarından farklı tanımlamaların olma olasılığı var. Kontrol etmenizde fayda görüyorum.

Gökhan BEKEN

#11
Valla o kadar tavsiyede bulundum ama bağlantıları ezbere yapmışsınız.

#define PIN_ENC_MAC_SO  PIN_D7   // PIC <<<< ENC
#define PIN_ENC_MAC_SI  PIN_D6   // PIC >>>> ENC
#define PIN_ENC_MAC_CLK PIN_D5
#define PIN_ENC_MAC_CS  PIN_D4
#define PIN_ENC_MAC_RST PIN_D3
#define PIN_ENC_MAC_INT PIN_D2
#define PIN_ENC_MAC_WOL PIN_D1

Alıntı yapılan: meftun - 29 Ağustos 2013, 10:08:42
Bu örnek bir şema: http://s9.postimg.cc/ro9nimdsv/erik.png
Ben buna ilaveten ;
enc28j60'ın int pinini pic'in int0 pinine
enc28j60'ın wol pinini pic'in int1 pinine
Bağlıyorum.
Şemaya bakılırsa
enc'nin SO pini pic'in SDI pinine
enc'nin SI pini pic'in SDO pinine
enc'nin SCK pini pic'in SCK pinine
bağlanmış
Enc'nin CS pinini programda belittiğiniz bir pine bağlayın, ben C1 pinine bağlıyorum.

18f4685 bulabilirseniz onu kullanın bulamazsanız 18f4620 tavsiye ederim. Kodlarınızı sığdıramayabilirsiniz.
Özel mesaj okumuyorum, lütfen göndermeyin.

salihonur

Alıntı yapılan: meftun - 29 Ağustos 2013, 20:56:02
Valla o kadar tavsiyede bulundum ama bağlantıları ezbere yapmışsınız.

#define PIN_ENC_MAC_SO  PIN_D7   // PIC <<<< ENC
#define PIN_ENC_MAC_SI  PIN_D6   // PIC >>>> ENC
#define PIN_ENC_MAC_CLK PIN_D5
#define PIN_ENC_MAC_CS  PIN_D4
#define PIN_ENC_MAC_RST PIN_D3
#define PIN_ENC_MAC_INT PIN_D2
#define PIN_ENC_MAC_WOL PIN_D1
Şemaya bakılırsa
enc'nin SO pini pic'in SDI pinine
enc'nin SI pini pic'in SDO pinine
enc'nin SCK pini pic'in SCK pinine
bağlanmış
Enc'nin CS pinini programda belittiğiniz bir pine bağlayın, ben C1 pinine bağlıyorum.

18f4685 bulabilirseniz onu kullanın bulamazsanız 18f4620 tavsiye ederim. Kodlarınızı sığdıramayabilirsiniz.

Şemadaki benim yaptığım bir tasarım. Donanımsal olarak sorunlu. Hazır modül ile deneme yaptığım 18F4550 ile board üzerinde bağlantılarını değiştirerek denedim. Hiç tepki vermiyor. Önce modüldeki sorunları gidereyim sonra benim devreme dönüp bakacağım.

Gökhan BEKEN

Özel mesaj okumuyorum, lütfen göndermeyin.

salihonur

Alıntı yapılan: meftun - 29 Ağustos 2013, 21:53:02
Şema derken bunu kasteddim:
(Resim gizlendi görmek için tıklayın.)

Hiç o açıdan düşünmedim. Siz söyleyene kadar da fark etmedim. Kodlarda bitbang yapılmıştır diye üzerinde durmamıştım. Önemli bir ayrıntı, teşekkür ederim.