Picproje Elektronik Sitesi

TEKNİK SERVİS => Genel Bilgi, Notlar, E-Kitap, İp uçları => Konuyu başlatan: Karamel - 26 Haziran 2015, 09:49:52

Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 26 Haziran 2015, 09:49:52
merhaba. suan cinden aldigim ethernet module unu test etmeye calisiyorum. modulun resmini asagiya ekledim. gerekli baglantilari yaptim ve mikroc example ini discovery deney pcb sine yukledim.

program calismaya baslayinca once yesil isik yaniyor ve yanik kaliyor. sari isik ara ara yanip yanip sonuyor. sanirim libarary ve baglantilarim dogru? ama herhangi bir tarayiciya 192.168.20.60 yazinca hicbirsey gelmiyor. suan elimde hicbir test aletim yok. ethernet led lerinden durumu anlayabilirmiyim? yada pc uzerinden enc nin varligini gozlemleyebilirmiyim? ag baglantilarim vs gibi yerlerden?

(http://www.halitalptekin.com/media/upload/enc28j60-arduino.JPG)

/*
* Project Name:
     HTTP_Demo (Ethernet Library demo for ENC24J600 mcu)
* Copyright:
     (c) Mikroelektronika, 2011.
* Revision History:
     20110105:
       - initial release;
*
* V1.0 : first release
* V1.1 : bad MIME type for / path request, changed to HTML instead of SCRIPT (thanks Srdjan !)
*
* description  :
*      this code shows how to use the SPI_Ethernet_24j600 mini library :
*              the board will reply to ARP & ICMP echo requests
*              the board will reply to UDP requests on any port :
*                      returns the request in upper char with a header made of remote host IP & port number
*              the board will reply to HTTP requests on port 80, GET method with pathnames :
*                      /               will return the HTML main page
*                      /s              will return board status as text string
*                      /t0 ... /t7     will toggle RE8 to RE15 bit and return HTML main page
*                      all other requests return also HTML main page
*
* target devices :
*      any MCU with integrated SPI and more than 4 Kb ROM memory
*      32 to 40 MHz clock is recommended to get from 8 to 10 Mhz SPI clock,
*      otherwise MCU should be clocked by ENC clock output due to ENC silicon bug in SPI hardware
*      if you try lower MCU clock speed, don't be surprised if the board hang or miss some requests !
*
* Test configuration:
     MCU:             STM32F107VC
                      http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00220364.pdf
     Dev.Board:       EasyMx v7 for STM32 ® ARM ®
                      http://www.mikroe.com/easymx-pro/stm32/
     Oscillator:      HSE-PLL, 72.000MHz
     ext. modules:    ac:Serial_Ethernet_Board
                      ac:SmartADAPT
     SW:              mikroC PRO for ARM
                      http://www.mikroe.com/mikroc/arm/
* NOTES:
     - Since the ENC28J60 doesn't support auto-negotiation, full-duplex mode is
       not compatible with most switches/routers.  If a dedicated network is used
       where the duplex of the remote node can be manually configured, you may
       change this configuration.  Otherwise, half duplex should always be used.
     - Use SmartADAPT board to connect Serial Ethernet 2 board to EasyMx v7 development system, on PORTB.
     - Pull-down PORTD/L at SW8, and put SW10.7 in VCC position (board specific)
     - Close pots PA3 at J8.
     - Turn ON PORTE/H LEDs at SW15.8.
     - External power supply should be used due to Serial Ethernet Board power consumption.

*/

#include "__EthEnc28j60.h"

// mE ehternet NIC pinout
sfr sbit SPI_Ethernet_Rst at GPIOB_ODR.B0;
sfr sbit SPI_Ethernet_CS at GPIOB_ODR.B1;


/************************************************************
* ROM constant strings
*/
const code unsigned char httpHeader[] = "HTTP/1.1 200 OKnContent-type: ";  // HTTP header
const code unsigned char httpMimeTypeHTML[] = "text/htmlnn";              // HTML MIME type
const code unsigned char httpMimeTypeScript[] = "text/plainnn";           // TEXT MIME type
unsigned char httpMethod[] = "GET /";
/*
* web page, splited into 2 parts :
* when coming short of ROM, fragmented data is handled more efficiently by linker
*
* this HTML page calls the boards to get its status, and builds itself with javascript
*/
const code   char    *indexPage =                   // Change the IP address of the page to be refreshed
"<meta http-equiv="refresh" content="3;url=http://192.168.20.60">
<HTML><HEAD></HEAD><BODY>
<h1>MCU   ENC24J600 Mini Web Server</h1>
<a href=/>Reload</a>
<script src=/s></script>
<table><tr><td valign=top><table border=1 style="font-size:20px ;font-family: terminal ;">
<tr><th colspan=2>ADC</th></tr>
<tr><td>AN3</td><td><script>document.write(AN3)</script></td></tr>
</table></td><td><table border=1 style="font-size:20px ;font-family: terminal ;">
<tr><th colspan=2>PORTD</th></tr>
<script>
var str,i;
str="";
for(i=0;i<8;i  )
{str ="<tr><td bgcolor=pink>BUTTON #" i "</td>";
if(PORTD&(1<<i)){str ="<td bgcolor=red>ON";}
else {str ="<td bgcolor=#cccccc>OFF";}
str ="</td></tr>";}
document.write(str) ;
</script>
" ;

const code   char    *indexPage2 =  "</table></td><td>
<table border=1 style="font-size:20px ;font-family: terminal ;">
<tr><th colspan=3>PORTE</th></tr>
<script>
var str,i;
str="";
for(i=0;i<8;i  )
{str ="<tr><td bgcolor=yellow>LED #" i "</td>";
if(PORTE&(1<<i)){str ="<td bgcolor=red>ON";}
else {str ="<td bgcolor=#cccccc>OFF";}
str ="</td><td><a href=/t" i ">Toggle</a></td></tr>";}
document.write(str) ;
</script>
</table></td></tr></table>
This is HTTP request #<script>document.write(REQ)</script></BODY></HTML>
" ;

/***********************************
* RAM variables
*/
unsigned char   myMacAddr[6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f};   // my MAC address
unsigned char   myIpAddr[4]  = {192, 168,  20, 60 };                   // my IP address
unsigned char   gwIpAddr[4]  = {192, 168,  20, 66 };                   // gateway (router) IP address
unsigned char   ipMask[4]    = {255, 255, 255,  0 };                   // network mask (for example : 255.255.255.0)
unsigned char   dnsIpAddr[4] = {192, 168,  20,  1 };                   // DNS server IP address

unsigned char   getRequest[15];                                        // HTTP request buffer
unsigned char   dyna[31] ;                                             // buffer for dynamic response
unsigned long   httpCounter = 0;                                       // counter of HTTP requests

/*******************************************
* functions
*/

/*
* put the constant string pointed to by s to the ENC transmit buffer.
*/
/*unsigned int    putConstString(const code char *s)
        {
        unsigned int ctr = 0;

        while(*s)
                {
                SPI_Ethernet_putByte(*s  );
                ctr  ;
                }
        return(ctr);
        }*/
/*
* it will be much faster to use library SPI_Ethernet_putConstString routine
* instead of putConstString routine above. However, the code will be a little
* bit bigger. User should choose between size and speed and pick the implementation that
* suites him best. If you choose to go with the putConstString definition above
* the #define line below should be commented out.
*
*/
#define putConstString  SPI_Ethernet_putConstString

/*
* put the string pointed to by s to the ENC transmit buffer
*/
/*unsigned int    putString(char *s)
        {
        unsigned int ctr = 0;

        while(*s)
                {
                SPI_Ethernet_putByte(*s  );

                ctr  ;
                }
        return(ctr);
        }*/
/*
* it will be much faster to use library SPI_Ethernet_putString routine
* instead of putString routine above. However, the code will be a little
* bit bigger. User should choose between size and speed and pick the implementation that
* suites him best. If you choose to go with the putString definition above
* the #define line below should be commented out.
*
*/
#define putString  SPI_Ethernet_putString

/*
* this function is called by the library
* the user accesses to the HTTP request by successive calls to SPI_Ethernet_getByte()
* the user puts data in the transmit buffer by successive calls to SPI_Ethernet_putByte()
* the function must return the length in bytes of the HTTP reply, or 0 if nothing to transmit
*
* if you don't need to reply to HTTP requests,
* just define this function with a return(0) as single statement
*
*/
unsigned int    SPI_Ethernet_UserTCP(unsigned char *remoteHost, unsigned int remotePort, unsigned int localPort, unsigned int reqLength, TEthPktFlags *flags)
        {
        unsigned int    len;            // my reply length

        // should we close tcp socket after response is sent?
        // library closes tcp socket by default if canCloseTCP flag is not reset here
        // flags->canCloseTCP = 0; // 0 - do not close socket
                                   // otherwise - close socket

        if(localPort != 80)                         // I listen only to web request on port 80
                {
                return(0);
                }

        // get 10 first bytes only of the request, the rest does not matter here
        for(len = 0; len < 10; len  )
        {
        getRequest[len] = SPI_Ethernet_getByte();
        }
        getRequest[len] = 0;
        len = 0;

        if(memcmp(getRequest, httpMethod, 5))       // only GET method is supported here
                {
                return(0);
                }

        httpCounter  ;                             // one more request done

        if(getRequest[5] == 's')                    // if request path name starts with s, store dynamic data in transmit buffer
                {
                // the text string replied by this request can be interpreted as javascript statements
                // by browsers

                len = putConstString(httpHeader);              // HTTP header
                len  = putConstString(httpMimeTypeScript);     // with text MIME type

                // add AN3 value to reply
                WordToStr(ADC1_Get_Sample(3), dyna) ;
                len  = putConstString("var AN3=") ;
                len  = putString(dyna) ;
                len  = putConstString(";") ;

                // add PORTD value (buttons) to reply
                len  = putConstString("var PORTD=");
                WordToStr(GPIOD_IDR, dyna);
                len  = putString(dyna);
                len  = putConstString(";");

                // add PORTE value (LEDs) to reply
                len  = putConstString("var PORTE=");
                WordToStr(GPIOE_ODR>>8, dyna);
                len  = putString(dyna);
                len  = putConstString(";");

                // add HTTP requests counter to reply
                WordToStr(httpCounter, dyna);
                len  = putConstString("var REQ=");
                len  = putString(dyna);
                len  = putConstString(";");
                }
        else if(getRequest[5] == 't')                           // if request path name starts with t, toggle PORTE (LED) bit number that comes after
                {
                unsigned long   bitMask = 0;                   // for bit mask

                if(isdigit(getRequest[6]))                      // if 0 <= bit number <= 9, bits 8 & 9 does not exist but does not matter
                        {
                        bitMask = getRequest[6] - '0';         // convert ASCII to integer
                        bitMask = 1 << (bitMask   8);                // create bit mask
                        GPIOE_ODR = GPIOE_ODR ^ bitMask;     // toggle PORTE with xor operator
                        }
                }

        if(len == 0)                                            // what do to by default
                {
                len =  putConstString(httpHeader);             // HTTP header
                len  = putConstString(httpMimeTypeHTML);       // with HTML MIME type
                len  = putConstString(indexPage);              // HTML page first part
                len  = putConstString(indexPage2);             // HTML page second part
                }

        return(len);                                           // return to the library with the number of bytes to transmit
        }

/*
* this function is called by the library
* the user accesses to the UDP request by successive calls to SPI_Ethernet_getByte()
* the user puts data in the transmit buffer by successive calls to SPI_Ethernet_putByte()
* the function must return the length in bytes of the UDP reply, or 0 if nothing to transmit
*
* if you don't need to reply to UDP requests,
* just define this function with a return(0) as single statement
*
*/
unsigned int    SPI_Ethernet_UserUDP(unsigned char *remoteHost, unsigned int remotePort, unsigned int destPort, unsigned int reqLength, TEthPktFlags *flags)
        {
        unsigned int    len;                           // my reply length

        // reply is made of the remote host IP address in human readable format
        ByteToStr(remoteHost[0], dyna);                // first IP address byte
        dyna[3] = '.';
        ByteToStr(remoteHost[1], dyna   4);            // second
        dyna[7] = '.';
        ByteToStr(remoteHost[2], dyna   8);            // third
        dyna[11] = '.';
        ByteToStr(remoteHost[3], dyna   12);           // fourth

        dyna[15] = ':';                                // add separator

        // then remote host port number
        WordToStr(remotePort, dyna   16);
        dyna[21] = '[';
        WordToStr(destPort, dyna   22);
        dyna[27] = ']';
        dyna[28] = 0;

        // the total length of the request is the length of the dynamic string plus the text of the request
        len = 28   reqLength;

        // puts the dynamic string into the transmit buffer
        SPI_Ethernet_putBytes(dyna, 28);

        // then puts the request string converted into upper char into the transmit buffer
        while(reqLength--)
                {
                SPI_Ethernet_putByte(toupper(SPI_Ethernet_getByte()));
                }

        return(len);           // back to the library with the length of the UDP reply
        }

/*
* main entry
*/
void main() {

        GPIO_Digital_Input(&GPIOD_BASE, _GPIO_PINMASK_ALL);
        GPIO_Digital_Output(&GPIOE_BASE, _GPIO_PINMASK_ALL);

        ADC1_Init();
        ADC_Set_Input_Channel(_ADC_CHANNEL_3);

        SPI3_Init_Advanced(_SPI_FPCLK_DIV16, _SPI_MASTER  | _SPI_8_BIT |
                     _SPI_CLK_IDLE_LOW | _SPI_FIRST_CLK_EDGE_TRANSITION |
                     _SPI_MSB_FIRST | _SPI_SS_DISABLE | _SPI_SSM_ENABLE | _SPI_SSI_1,
                     &_GPIO_MODULE_SPI3_PB345);
        //GPIO_Alternate_Function_Enable(&_GPIO_MODULE_SWJ_JTAGDISABLE);


        SPI_Ethernet_Init(myMacAddr, myIpAddr, SPI_Ethernet_FULLDUPLEX); // init ethernet board

        // dhcp will not be used here, so use preconfigured addresses
        SPI_Ethernet_confNetwork(ipMask, gwIpAddr, dnsIpAddr);



        while(1) {                           // do forever
                /*
                 * if necessary, test the return value to get error code
                 */
                SPI_Ethernet_doPacket();   // process incoming Ethernet packets

                /*
                 * add your stuff here if needed
                 * SPI_Ethernet_doPacket() must be called as often as possible
                 * otherwise packets could be lost
                 */
        }
}


mesaj birleştirme:: 26 Haziran 2015, 09:50:24

bu arada enc entegresini discovery pcb si uzerinden besledim. 3v ucundan.



mesaj birleştirme:: 26 Haziran 2015, 10:11:10

anladigim kadariyla asagidaki address leri kendi ag yapima gore degistirmem lazim.

unsigned char   myMacAddr[6] = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f};   // my MAC address
unsigned char   myIpAddr[4]  = {192, 168,  20, 60 };                   // my IP address
unsigned char   gwIpAddr[4]  = {192, 168,  20, 66 };                   // gateway (router) IP address
unsigned char   ipMask[4]    = {255, 255, 255,  0 };                   // network mask (for example : 255.255.255.0)
unsigned char   dnsIpAddr[4] = {192, 168,  20,  1 };                   // DNS server IP address


mesaj birleştirme:: 26 Haziran 2015, 10:13:18

bende bu rakamlar soyle

(http://i.hizliresim.com/YBGzgZ.png) (http://hizliresim.com/YBGzgZ)
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 26 Haziran 2015, 12:22:03
mac address ini modeme el ile calisti ::)

simdi aklimda bazi soru isaretleri olustu.


bu aletin ip address ini. mac address ini hep el ile girdim ama normal device lar boyle calismiyorlar. otomatik ip aliyorlar. mac i otomatik taniyorlar. ENC ile bunu yapmak mumkunmu?
Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: MrDarK - 26 Haziran 2015, 12:31:17
DHCP şekilde konfigure edeceksin cihazı ondan sonra otomatik alacak hepsini. Fakat bu söylediğim IP için geçerliydi. MAC adreslerini ne yazık ki kendin belirlemek zorundasın :)
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 26 Haziran 2015, 12:42:56
hocam bu konuyu favorite larima ekledim. birkac hafta kadar bu konu uzerine calisamayacagim. musait oldugumda. yukaridaki example code larini kendim yazmak istiyorum ::) sadece request olunca. ilgili requesti okuyan. karsilinda sadece web sayfasini gonderip. iletisimi kapatan birsey yapacagim. :)


mesaj birleştirme:: 26 Haziran 2015, 12:44:34

hocam bu arada bu kisa arada bu konu ile ilgili hangi kitabi onerirsiniz? ben ethhernet uzerine neredeyse hicbirsey bilmiyorum. sadece rs485 gibi calistigini biliyorum.

Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: iyildirim - 26 Haziran 2015, 12:48:14

MAC adresi genellikle chip ile gelir.
ENC28J60 MAC adresi içermez. Ama mesela ENC24J600, LPC1769  vs. Wiznetin bazı chip leri  legal MAC adresi içerir. 

Tek tek kopya, sallama MAC adresi vermek istemezseniz  legal MAC adresi içeren eepromlar kullanılabilir. 11AA02E48, 25AA02E48 gibi.
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 26 Haziran 2015, 12:58:32
hocam example da mikroe 0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f boyle vermis mac address ini. yani 0014A576193F seklinde. bu gecerli bir address mi? birde evde deney yapmak icin kafamdan asallasam ne olur ki?  :-\

mesaj birleştirme:: 26 Haziran 2015, 13:08:13

sanirim simdi anladim.

sadece evde değilde dunyaya acilan bir alet yaptigimi hayal ettim. birisi Ingilterede . birisi Turkiye de tabiki bunlar farkli ip kullaniyorlar ama mac address lerini ayni verirsem cakisacaklar değilmi? tezim dogrumu hocam?
Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: iyildirim - 26 Haziran 2015, 13:08:26
Hiç bir sorun olmaz. 
Dilediğin gibi kullanabilirsin. 
 
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 26 Haziran 2015, 13:12:41
hocam o zaman mac address i olan entegreler neden varlar?  :-\

mesaj birleştirme:: 26 Haziran 2015, 13:13:23

yani sorun olmuyorsa benim tezim dogru cikmiyor. mac address tam olarak ne ise yariyor?
Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: iyildirim - 26 Haziran 2015, 13:57:19
Aynı fiziksel ağda bir MAC adresinden birden fazla olamaz. 
Milyonlarca üretilen bir chip'in de nerede kullanılacağı ile ilgili bir kısıt olması sözkonusu değil. 

MAC adresleri yönetici kuruluşlar tarafından standartları belirlenmiş ve üretici firmalara belli sayıda rezerve edilmiş.
48 bit veya 64 bit olabilir. İlk 24 bit üretici firma kodudur.  Mesela örnek verdiğim chipler Microchip'in ve MAC adresleri 0x00-0x04-0xA3  ile başlar.

MAC adresinin elle verilebilir olması USB deki sallama VID, PID kullanımı gibi. 
MAC adres chipleri niye var ın cevabı, Legal olmak yada ürettiğiniz her karta ayrı program atmamak gibi nedenler olabilir. 

Yanlış hatırlamıyorsam @muhittin_kaplan ın bir konusu vardı. Aldıkları iki makinanın MAC leri çakışmış gibi bir konuydu.

Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 26 Haziran 2015, 14:03:48
hocam o konuyu okumustum ama anlamamistim. simdi hatirladim ve sanirim meseleyide az cok anladim. tesekkur ederim hocam ::)


bu arada. sanirim mikroe nin example i 3-5 dk sonra takiliyor. ethernet cable ini sokup yeniden takinca duzeliyor. 5 dk sonra yine cokuyor server. sorun bendede olabilir. bilemiyorum. oncelikle ethernet meselesini iyice kavrayip. sonra oturup. code lari tek tek yazmak lazim. suan nere ne oluyor. hic birsey anlayamiyorum....  :-\
Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: iyildirim - 26 Haziran 2015, 14:15:03
Fiziksel katman için ENC nin datasheet ine bakabilirsin. IP, ARP, TCP, UDP gibi konular içinde yine ENC serilerinin app.note larında güzel anlatılmış dökümanlar vardı. 
Okumayı seviyorsun zaten.

Ama kodarı tek tek yazmak yerine kütüphaneyi anlamaya çalışmak daha yerinde olur.

Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Recep METE - 26 Haziran 2015, 14:19:46
Bende enc modulunden sipariş verdim. Bu bilgiler önden çok faydalı oldu.
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: AsHeS - 26 Haziran 2015, 14:45:22
Ethernet işleri için wiznet in çipleri daha uygun stack arama/yazma derdi yok ama ona göre fiyatı yüksek 2-3 dolar.
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 26 Haziran 2015, 15:09:55
su library deki sever http://www.libstock.com/projects/view/107/network-ethernet-library (http://www.libstock.com/projects/view/107/network-ethernet-library) yarim saattir cokmedi. buyuk olasilikla sorun bendedir ama ustteki example dada sorun olabilir. linkini verdigim libraryde close socket gibi ozellikler var. ve anladigim kadariyla udp. tcp nin bir tik ustu gibi birsey. bildigimiz internet sayfasi geldi enc den...


Alıntı yapılan: iyildirim - 26 Haziran 2015, 14:15:03
Fiziksel katman için ENC nin datasheet ine bakabilirsin. IP, ARP, TCP, UDP gibi konular içinde yine ENC serilerinin app.note larında güzel anlatılmış dökümanlar vardı. 
Okumayı seviyorsun zaten.

Ama kodarı tek tek yazmak yerine kütüphaneyi anlamaya çalışmak daha yerinde olur.




hocam konu hakkinda biraz bilgi edineyim. kendi web serverimi yapmak istiyorum ::)

mesaj birleştirme:: 26 Haziran 2015, 16:05:37

az once. en son linkini verdigim example da ki server da coktu. ethernet cable ini sokup takinca duzeliyor. sanirim benim cable da sorun var.
Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: muhittin_kaplan - 26 Haziran 2015, 18:05:39
Alıntı yapılan: iyildirim - 26 Haziran 2015, 13:57:19
....
Yanlış hatırlamıyorsam @muhittin_kaplan ın bir konusu vardı. Aldıkları iki makinanın MAC leri çakışmış gibi bir konuydu.
aynen. firmaya yolladık macler değişti geldi.
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 04 Ağustos 2015, 14:31:08
merhaba. enc28j60 deneylerime yeniden basladim. power devremi bread board uma kurunca birsey farkettim. enc modul cok fazla energy harciyor? lm1117 cok isiniyor. birini bozarim diye iki module siparis vermistim. ikisindede isi ayni. module leri bread board tan cikarinca isi yok. yani enc ler fazla current cekiyorlar. datasheetinde bir kac mili ampere cekmesi gerektigini gordum? acaba yanlis birsey mi yapiyorum?

mesaj birleştirme:: 04 Ağustos 2015, 14:32:34

birde enc28j60 larda biraz isiniyor ama calisiyorlarda.
Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: aspcibertan - 04 Ağustos 2015, 14:46:36
enc 300 mA'ya yaklaşıyor çektiği akım olarak.
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 04 Ağustos 2015, 15:19:04
Hocam bu deger cok değilmi? Bildigim kadariyla mcp2200 da enc28j60 ta bir microcontroller? Neden bukadar cok current cekiyor?
Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: aspcibertan - 04 Ağustos 2015, 15:33:07
Mimari olarak biraz ince çalışılması gereken, hassas sayılabilecek bir entegre. Dediğin gibi çok bir değer ama katalogda da belirtiyorlar bunu kendileri. Mimariden kaynaklı. Hatırladığım kadarı ile 66j60 vardı dahili encli uC, onun akım değerleri bu kadar uç değildi diye aklımda kalmış.
Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: cehennem - 05 Ağustos 2015, 12:18:09
çökmeler fuses tanımlamalarından kaynaklanıyor olabilir. bende ccs de yapmış ve yaşamıştım öyle bi sıkıntı.



Alıntı yapılan: Karamel - 26 Haziran 2015, 15:09:55
su library deki sever http://www.libstock.com/projects/view/107/network-ethernet-library (http://www.libstock.com/projects/view/107/network-ethernet-library) yarim saattir cokmedi. buyuk olasilikla sorun bendedir ama ustteki example dada sorun olabilir. linkini verdigim libraryde close socket gibi ozellikler var. ve anladigim kadariyla udp. tcp nin bir tik ustu gibi birsey. bildigimiz internet sayfasi geldi enc den...




hocam konu hakkinda biraz bilgi edineyim. kendi web serverimi yapmak istiyorum ::)

mesaj birleştirme:: 27 Haziran 2015, 16:05:37

az once. en son linkini verdigim example da ki server da coktu. ethernet cable ini sokup takinca duzeliyor. sanirim benim cable da sorun var.


Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 06 Ağustos 2015, 20:39:27
simdi bir baska sorun var. yazin asinda bu modulleri calistirmistim. (nasil calistigini bilmeden yaptim) bu library i kullanmistim. ama simdi calistirmayi beceremiyorum  :-\

enc28j60 entegrelerinde hafif isi var. modulleri bozmus olabilirim ama ikisindede olmasi yani ikisinide bozmus olmam pek olasi gibi durmuyor.

library sanirim duzgunce calisiyor. microcontroller programme olduktan sonra. enc28j60 i resetliyor ve configure ediyor. bunu ethernet socketi uzerindeki ledlerden control edebiliyorum.

once yesil sonuyor. sonra yaniyor. bir sure yanik kaldiktan sonra sari biraz kiprasip sonuyor.

tarayici ile 192.168.1.43 e baglanmak isteyince sari bir sure kiprasmaya devam ediyor(buradan anladigim enc entegresi benim belirttigim degerlere configure olmus) ama internet sayfasi gozukmuyor. ben suradanda supheleniyorum.

const char myMacAddr[6]        = {0x00, 0x14, 0xA5, 0x76, 0x19, 0x3f};          // My MAC address
const char myIpAddr[4]         = {192, 168,  1, 43};                            // My IP address
const char gwIpAddr[4]         = {192, 168,  1, 1};                             // Gateway (router) IP address
const char ipMask[4]           = {255, 255, 255, 0};                            // Network mask
const char dnsIpAddr[4]        = {8, 8, 8, 8};                             // DNS server IP address

yaz basinda enc module leri calistirirken koyu kaptigim satirdaki ip degerlerini ne yaptim hatirlayamadim. bilgisayarim recovery oluncada bu degerler yok oldu. asagidaki degerleri denedim ama ise yaramadilar. DNS server IP address ne demek?

{192, 168,  1, 43};
{192, 168,  1, 1};
{255, 255, 255, 0};
{8, 8, 8, 8};   
{8, 8, 4, 4};   

mesaj birleştirme:: 06 Ağustos 2015, 20:42:06

simdi farkettim. tarayiciya 192.168.1.50 yazdim. sari led yine kiprasti. yani enc28j60 i configure edememis olma olasiligim dogdu simdi ama yukaridaki dns server ip address i sallayarak giriyorum. bence buyuk ihtimalle sorun burada.


mesaj birleştirme:: 06 Ağustos 2015, 20:45:48

simdi denedim. microcontroller memory sindeki program i sildim. tarayicidan baglanmak istedim. sari led yine yanip sondu. yani configure edememis olma ihtimalim biraz daha yukseldi.

mesaj birleştirme:: 06 Ağustos 2015, 21:00:41

simdi logic analyzer im ile baktim. spi2 calisiyor. eger calisiyorsa enc entegresi cofigure ediliyor olmasi gerekir.(onceden calistigi icin boyle dedim)
Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: cehennem - 06 Ağustos 2015, 22:43:44
ccs pic c nin 5 versiyonunda project wizard ile bir web server programı oluşturun devrenin çalışıp çalışmadığından emin olun önce bence.
kullandığınız donanımı proteusda kurup simüle etmeye çalışabilirsiniz.
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 06 Ağustos 2015, 22:56:27
hocam ben mikroc for arm ve stm32f103vet6 kullaniyorum. ccs pic i bilmiyorum  :-\

mesaj birleştirme:: 06 Ağustos 2015, 22:58:57

sorun su. ben bunlari yaz basinda calistirmistim ama enc entegrelerinin isinip isinmadiklarina bakmak aklima gelmemisti. stm32f407 discovery pcb si ile calistirmistim. simdi bread board ta deneyler yapiyorum. ayni calisan moduller. ayni example lar ama su ip degerleri ile cok debelenmistim hatirliyorum. modem i talan etmistim. degerler modemden aliniyordu. bilgisayarimi recovery yapinca. bu degerler gitti. meselenin ozunu kavrayabilmek icin once systemi bir calistirmam gerekli ama daha system i calistiramadim.  :-\
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: cehennem - 06 Ağustos 2015, 22:59:53
anladım bende stm bilmiyorum ne yazıkki. Ama modüllerin sağlam olduğunu bi şekilde deneyebilirsen ihtimalleri azaltırsın en azından bende picle yaptım bendede enc entegresi bi miktar ısınıyor.Enc entegresinin pin bağlantılarının doğruluğundan emin olup çalışan örnek şema ve kod araştırıp deneyerek bulabilirsin sanırım.
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 06 Ağustos 2015, 23:04:32
iste hocam bende modullerin saglam olup olmadigini denemeye calisiyorum.

ip miz bu: {192, 168,  1, 43};
modem ip miz bu: {192, 168,  1, 1};
bu network mask imiz: {255, 255, 255, 0};

mac address ini modem e bu {192, 168,  1, 43}; ip ilekaydettim.

DNS server IP address tam olarak nedir?


Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: cehennem - 06 Ağustos 2015, 23:08:33
dns server binim bildiğim internette domain adreslerini ip adresine çeviren serverlar oluyor onların ip si ama ona bi değer vermezsenizde çalışması lazım bence
otomatik ip mi aldırıyosun sabit iplimi kodunda kodun içine debug amaçlı çıkışlara led bağlayıp ayarları yapınca ledi yak ledi sürekli yak söndür falan gibi kontrol amaçlı eklemeler yap program nereye kadar geliyor onu anlamış olursun en azından.
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 06 Ağustos 2015, 23:19:16
peki hocam ethernet socketinin yesil isiginin surekli. sari isigininda ara sira yanip sonmesi. enc entegresinin dis dunya ile haberlesebildigi manasinami geliyor? yani eger boyleyse sorun microcontroller kisminda olmali.

mesaj birleştirme:: 06 Ağustos 2015, 23:19:45

hocam ip yi code ile aliyorduk. 192.168.1.43 seklinde?
Başlık: Ynt: Ynt: ENC28J60 calisma sorusu
Gönderen: cehennem - 06 Ağustos 2015, 23:24:50

kodun içine debug amaçlı çıkışlara led bağlayıp ayarları yapınca ledi yak ledi sürekli yak söndür falan gibi kontrol amaçlı eklemeler yap program nereye kadar geliyor onu anlamış olursun en azından. Ping atmayı deneyebilirsin o ip adresine benim bildiğim sadece modüle elektrik verdiğindede ışıkları yanıp sönme yapıyodu sanki


Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 06 Ağustos 2015, 23:29:42
hocam main icersine code umuzun takilip takilmadigini gormek icin. led blink code u yerlestirdim. led surekli blink oluyor. yani program takilmiyor.

        while(1) {                           // do forever
                /*
                 * if necessary, test the return value to get error code
                 */
                SPI_Ethernet_doPacket();   // process incoming Ethernet packets

                /*
                 * add your stuff here if needed
                 * SPI_Ethernet_doPacket() must be called as often as possible
                 * otherwise packets could be lost
                 */

                GPIOB_ODR.F8 = ~GPIOB_ODR.F8;  Delay_ms(100);
        }


mesaj birleştirme:: 06 Ağustos 2015, 23:31:13

hocam energy yi verince ledler yanmiyor. ethernet cable ini takinca. once yesil yaniyor. sonra biraz sari yanip sonuyor. daha sonra tarayicidan ip ile herhangi bir ip ye baglanmak isteyince sarip yanip sonuyor. tepkime veriyor yani ama bu iyiye isaretmi bilemedim.
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: cehennem - 06 Ağustos 2015, 23:32:27
anladım o zaman bağlantılar ile ilgili bi sorun olma ihtimali daha yüksek gibi sdı sdo pinlerini ters  bağlamış olabilirsin belki yada cs pini ile ilgili bi şeyle alakalı olabilir. devreyi direk modemem bağlıyosun yoksa bilgisayarın ethernet portunamı bide ethernet bağdaştırıcınında ip adresinin statik tanımlımı onlarlada alakalı bişey olabilir.
Başlık: Ynt: ENC28J60 calisma sorusu
Gönderen: Karamel - 06 Ağustos 2015, 23:46:29
hocam yukarida while li kisimi copy paste yapinca farkettim. SPI_Ethernet_doPacket();  bu function return olabiliyormus. return degerlerini help file dan okuyup asagiya yazdim.

0 - upon successful packet processing (zero packets received or received packet processed successfully).
1 - upon reception error or receive buffer corruption. ENC28J60 controller needs to be restarted.
2 - received packet was not sent to us (not our IP, nor IP broadcast address).
3 - received IP packet was not IPv4.
4 - received packet was of type unknown to the library.

sonra hemen cinlik yapip. main e a diye bir char atadim. bu  SPI_Ethernet_doPacket();  function i a dedigimiz degiskenin icersine aldim. yani soyle yaptim. a = SPI_Ethernet_doPacket(); hemen altinada sunlari yazdim.

if(a == 0) GPIOB_ODR.F8 = 1;
else {GPIOB_ODR.F8 = 0; delay_ms(1000);}

eger bir kere bile 0 dan farkli donse led te bunu gozlemleyebilirim ama hep 0 olarak donuyor. yani system programlama kisminda basarili gozukuyor?



mesaj birleştirme:: 06 Ağustos 2015, 23:53:57

simdi farkettim. reset ve cs pinlerini program dan degistirdim. ethernet module e bagli olmayan pinler sectim. bakalim ne donecek diye. yine 0 dondu. yani 0 donmesi basarili oldugunu gostermiyor.

mesaj birleştirme:: 07 Ağustos 2015, 00:28:09

hocam sorun cable imis. ethernet cable imda sorun vardi zaten ama ara sira bozukluk yapiyordu. simdi tamamen gitmis olacak ki. bu denli ugrastim. peh dedirtti.  :'(