اطلاعیه

Collapse
No announcement yet.

مشکل در ارتباط با enc28j60

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در ارتباط با enc28j60

    با سلام
    بنده مدار رو که در فایل ضمیمه قرار دادم رو درست کردم که ارتباط enc28j60 با atmega8 هست ولی وقتی مدارو وصل میکنم به کامپیوتر با کابل شبکه localarea connection فعال میشه ولی زیرش مینویسه unidentified network و تنظیمات ipv4 رو هم انجام دادم و ping که میکنم لحظه ای که کابل وصل میشه پیغام زیرو میده ولی بعدش time out mide کسی میدونه مشکل کجاست کمک کنه
    Reply from 10.0.0.25: Destination host unreachable.
    اینم کدش

    #include <avr/io.h>
    #include <string.h>
    #include "ip_arp_udp_tcp.h"
    #include "enc28j60.h"
    #include "timeout.h"
    #include "avr_compat.h"
    #include "net.h"

    // please modify the following two lines. mac and ip have to be unique
    // in your local area network. You can not have the same numbers in
    // two devices:
    static uint8_t mymac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};
    // how did I get the mac addr? Translate the first 3 numbers into ascii is: TUX
    static uint8_t myip[4] = {10,0,0,24};
    // listen port for www
    #define MYWWWPORT 80
    //// listen port for udp
    #define MYUDPPORT 1200
    //

    #define BUFFER_SIZE 450
    static uint8_t buf[BUFFER_SIZE+1];

    int main(void){
    uint16_t plen;
    uint16_t dat_p;
    uint8_t i=0;
    uint8_t payloadlen=0;

    // set the clock speed to 8MHz
    // set the clock prescaler. First write CLKPCE to enable setting of clock the
    // next four instructions.
    CLKPR=(1<<CLKPCE);
    CLKPR=0; // 8 MHZ
    _delay_loop_1(50); // 12ms

    // LED
    /* enable PB1, LED as output */
    DDRB|= (1<<DDB1);

    /* set output to Vcc, LED off */
    PORTB|= (1<<PORTB1);

    /*initialize enc28j60*/
    enc28j60Init(mymac);
    enc28j60clkout(2); // change clkout from 6.25MHz to 12.5MHz
    _delay_loop_1(50); // 12ms

    /* Magjack leds configuration, see enc28j60 datasheet, page 11 */
    // LEDB=yellow LEDA=green
    //
    // 0x476 is PHLCON LEDA=links status, LEDB=receive/transmit
    // enc28j60PhyWrite(PHLCON,0b0000 0100 0111 01 10);
    enc28j60PhyWrite(PHLCON,0x476);
    _delay_loop_1(50); // 12ms

    /* set output to GND, red LED on */
    PORTB &= ~(1<<PORTB1);
    i=1;

    //init the ethernet/ip layer:
    init_ip_arp_udp_tcp(mymac,myip,MYWWWPORT);

    while(1){
    // get the next new packet:
    plen = enc28j60PacketReceive(BUFFER_SIZE, buf);

    /*plen will ne unequal to zero if there is a valid
    * packet (without crc error) */
    if(plen==0){
    continue;
    }
    // arp is broadcast if unknown but a host may also
    // verify the mac address by sending it to
    // a unicast address.
    if(eth_type_is_arp_and_my_ip(buf,plen)){
    make_arp_answer_from_request(buf);
    continue;
    }
    // check if ip packets (icmp or udp) are for us:
    if(eth_type_is_ip_and_my_ip(buf,plen)==0){
    continue;
    }

    if (i){
    /* set output to Vcc, LED off */
    PORTB|= (1<<PORTB1);
    i=0;
    }else{
    /* set output to GND, LED on */
    PORTB &= ~(1<<PORTB1);
    i=1;
    }


    if(buf[IP_PROTO_P]==IP_PROTO_ICMP_V && buf[ICMP_TYPE_P]==ICMP_TYPE_ECHOREQUEST_V){
    // a ping packet, let's send pong
    make_echo_reply_from_request(buf,plen);
    continue;
    }
    // tcp port www start, compare only the lower byte
    if (buf[IP_PROTO_P]==IP_PROTO_TCP_V&&buf[TCP_DST_PORT_H_P]==0&&buf[TCP_DST_PORT_L_P]==MYWWWPORT){
    if (buf[TCP_FLAGS_P] & TCP_FLAGS_SYN_V){
    make_tcp_synack_from_syn(buf);
    // make_tcp_synack_from_syn does already send the syn,ack
    continue;
    }
    if (buf[TCP_FLAGS_P] & TCP_FLAGS_ACK_V){
    init_len_info(buf); // init some data structures
    // we can possibly have no data, just ack:
    dat_p=get_tcp_data_pointer();
    if (dat_p==0){
    if (buf[TCP_FLAGS_P] & TCP_FLAGS_FIN_V){
    // finack, answer with ack
    make_tcp_ack_from_any(buf);
    }
    // just an ack with no data, wait for next packet
    continue;
    }
    if (strncmp("GET ",(char *)&(buf[dat_p]),4)!=0){
    // head, post and other methods:
    //
    // for possible status codes see:
    // http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
    plen=fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>200 OK</h1>&quot);
    }else{
    // the "get" method
    plen=fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<p>OK, it works</p>&quot);
    }

    make_tcp_ack_from_any(buf); // send ack for http get
    make_tcp_ack_with_data(buf,plen); // send data
    continue;
    }

    }
    // udp interface:
    if (buf[IP_PROTO_P]==IP_PROTO_UDP_V){
    payloadlen=buf[UDP_LEN_L_P]-UDP_HEADER_LEN;
    // the received command has to start with t and be 4 char long
    // e.g "test\0"
    if (buf[UDP_DATA_P]=='t' && payloadlen==5){
    make_udp_reply_from_request(buf,"hello", 6,MYUDPPORT);
    }
    }
    }
    return (0);
    }

    #2
    پاسخ : مشکل در ارتباط با enc28j60

    حل شد . میزان خازن ها رو دقیق نزده بودم

    دیدگاه


      #3
      پاسخ : مشکل در ارتباط با enc28j60

      با سلام به تمام دوستان مشکله قبلی بنده حل شد ولی مشکل دیگه ای دستو پا گیر شده اونم اینه که مداره ساخته شده من روی یک کامپیوتر جواب میده روی لپ تاپ جواب نداد و اصلا انگار سیم وصل نمیشه و به hub هم که وصل میکنم اصلا باازم انگار سیم وصل نیست و اصلا کار نمیکنه ولی وقتی با همون کابلها به pc وصل میکنم به سرعت شناسایی میشه و network access میزنه و piing هم که میکنم جواب میده کسی میدونه مشکل کجاست؟

      دیدگاه


        #4
        پاسخ : مشکل در ارتباط با enc28j60

        کسی نیست جواب بده کمک کنه؟ اگر بخوام enc28j60 رو روی full duplex راه اندازی کنم چکار باید بکنم؟

        دیدگاه


          #5
          پاسخ : مشکل در ارتباط با enc28j60

          نوشته اصلی توسط hsoft_project
          حل شد . میزان خازن ها رو دقیق نزده بودم
          منظورتون کدوم خازن هاست؟
          Weakness of attitude becomes weakness of character
          Albert Einstein

          دیدگاه


            #6
            پاسخ : مشکل در ارتباط با enc28j60

            سلام منم این مشکلو دارم
            Reply from 10.0.0.25: Destination host unreachable.

            وصل میکنم به سیستم میشناسش سند دارم اما رسیو ندارم

            یه راهنمایی کنید لطفا

            دیدگاه

            لطفا صبر کنید...
            X