اطلاعیه

Collapse
No announcement yet.

کمک در مورد انتقال داده با ethernet

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

    کمک در مورد انتقال داده با ethernet

    با عرض سلام خدمت اساتید محترم ، من یک مدار انتقال داده با Ethernet بسته ام اما با کامپیوتر نمی تواند ارتباط برقرار کند ،من این مدار را از روی کتاب 11 پروژه با AVR بسته ام ، من تمام اتصالات را چند بار چک کردم و درست بود

    #2
    پاسخ : کمک در مورد انتقال داده با ethernet

    من هم یک مدار با ATmega32 بستم که برای ارتباط از سریال استفاده میکرد. اما همونقدر که شما از مدار من اطلاع داری من هم از مدار شما و نحوه رفع اشکالتون اطلاع پیدا کردم!
    این که شد یه خبر. مشکلتون چیه؟ مدارت چیه؟ برنامه اش کجاست. شماتیکی ... سورس کدی.... چه کابلی استفاده کردین؟ cross یا معمولی؟ اینا همه اش مهمه.

    دیدگاه


      #3
      پاسخ : کمک در مورد انتقال داده با ethernet

      از کابل cross استفاده کردم و چون به کانکتور rj-45 که نویسنده پیشنهاد کرده بود دسترسی نداشتم به جای فیلتر پایین گذری که داخل آن تعبیه شده از آی سی 20F001NG استفاده کردم ، برای کنترلر ethernet نیز از ENC28J60 استفاده کردم،میکرو ATmega32 و بافر HD74HC125P نیز در مدار استفاده کردم .این هم شکل مدار

      کد:
      //--------------------------------------------------------------------------
      // Project       : Transferring Data via Ethernet
      // Author        : Habibollah Abdollahypoor
      // Chip type      : ATmega32
      // Program type     : Application
      // Clock frequency   : 6.250000 MHz
      // Memory model     : Small
      // Data Stack size   : 512
      //--------------------------------------------------------------------------
      #include <mega32.h>
      #include <stdio.h>
      #include <string.h>
      #include <delay.h>
      //--------------------------------------
      #asm              // LCD Module
        .equ __lcd_port=0x15     ;PORTC
      #endasm
      #include <lcd.h>
      //--------------------------------------
      #define ENC28J60_SPI_PORT    PORTB
      #define ENC28J60_SPI_DDR    DDRB
      #define ENC28J60_SPI_MISO    6
      #define ENC28J60_SPI_MOSI    5
      #define ENC28J60_SPI_SCK    7
      #define ENC28J60_SPI_CS     4
      // ethernet buffer size
      #define BUFFER_SIZE       1024
      #include "ethernet.h"
      //--------------------------------------
      #define LCD_BL_ON        PORTC.3 = 1
      #define LCD_BL_OFF       PORTC.3 = 0
      #define DIPSWITCH        (PIND>>4)
      #define PUSHBUTTON1       (!PINA.0)
      #define PUSHBUTTON2       (!PINA.1)
      //--------------------------------------
      unsigned char  mymac[6] = {0x11,0x22,0x33,0x44,0x55,0x66};   // MAC
      unsigned char  myip[4] = {192,168,1,10};            // IP
      unsigned char  time_cs = 0;      // 1/100 second counter
      unsigned int  time_s = 0;       // seconds counter
      unsigned int  counter1 = 0;      // button 1 clicks
      unsigned int  counter2 = 0;      // button 2 clicks
      //--------------------------------------
      interrupt [TIM1_OVF] void timer1_ovf_isr(void) // Timer 1 overflow ISR
      {
          static bit old_btn1 = 0, old_btn2 = 0;
          if (++time_cs==100)       // one second elapsed
          {
              time_cs = 0;
              time_s ++;
          }
          if (PUSHBUTTON1)
          {
              if (!old_btn1)
                  counter1 ++;
              old_btn1 = 1;
          }
          else
              old_btn1 = 0;
          if (PUSHBUTTON2)
          {
              if (!old_btn2)
                  counter2 ++;
              old_btn2 = 1;
          }
          else
              old_btn2 = 0;
      }
      //--------------------------------------
      void main(void)
      {
          uint8_t str[20]="";   // buffer to
          // Watchdog Timer Enabled with Prescaler: OSC/512k
          WDTCR=0x0D;
          // All I/O pins are pulled up
          PORTA=0xFF;
          DDRA=0x00;
          PORTB=0xFF;
          DDRB=0x00;
          PORTC=0x00;
          DDRC=0x04;
          PORTD=0xFF;
          DDRD=0x00;
          // Timer 1 interrupts every 10 ms
          TCCR1A=0x02;
          TCCR1B=0x19;
          ICR1H=0xF4;
          ICR1L=0x23;
          // Timer(s) Interrupt(s) initialization
          TIMSK=0x04;
          // Analog Comparator: Off
          ACSR=0x80;
          // LCD module initialization
          lcd_init(16);
          LCD_BL_ON;
          #asm("wdr");
          // setting MAC & IP using dip-switch state
          mymac[0] += DIPSWITCH;
          myip[3] += DIPSWITCH;
          // initialize ethernet
          ethernet_init(mymac, myip, 80, 1200);
          // start up display
          lcd_gotoxy(0,0);
          lcd_putsf("   MAC    ");
          lcd_gotoxy(0,1);
          sprintf(str, " %02x%02x-%02x%02x-%02x%02x ",
              mymac[0], mymac[1], mymac[2], mymac[3], mymac[4], mymac[5]);
          lcd_puts(str);
          delay_ms(2000);
          lcd_gotoxy(0,0);
          lcd_putsf("    IP    ");
          lcd_gotoxy(0,1);
          sprintf(str, "%03u.%03u.%03u.%03u",
              myip[0], myip[1], myip[2], myip[3]);
          lcd_puts(str);
          delay_ms(3000);
          lcd_clear();
          // Global enable interrupts
          #asm("sei")
          while (1)
          {
              #asm("wdr");
              sprintf(str, "T=%u,P=%u,%u ", time_s, counter1, counter2 );
              lcd_gotoxy(0,0);
              lcd_puts(str);
              // process ethernet transactions
              ethernet_process();
          }
      }
      //--------------------------------------
      unsigned char ethernet_udp(unsigned char* data, unsigned char data_len)
      {
          unsigned char str[20];
          lcd_gotoxy(0,1);
          lcd_putsf("UDP:      ");
          strncpy(str, data, 11);
          lcd_gotoxy(4,1);
          lcd_puts(str);
          // response the request
          sprintf(str, "T=%u,P=%u,%u\n", time_s, counter1, counter2 );
          data_len = concatstr(data, 0, str);
          time_cs = 0;
          time_s = 0;
          return data_len;
      }
      //--------------------------------------
      unsigned int ethernet_tcp(unsigned char* request, unsigned char* response)
      {
          unsigned int len;
          unsigned char str[20];
          if (strncmpf(request, "GET /", 5)!=0)
              return 0;
          lcd_gotoxy(0,1);
          lcd_putsf("TCP:      ");
          strncpy(str, request+5, 11);
          lcd_gotoxy(4,1);
          lcd_puts(str);
          // response the request
          len = concatstrf(response, 0, "HTTP/1.0 200 OK\r\n");
          len = concatstrf(response, len, "Content-Type: text/html\r\n");
          len = concatstrf(response, len, "Pragma: no-cache\r\n\r\n");
          len = concatstrf(response, len,
              "<HTML><TITLE>11 AVR Projects</TITLE><BODY><CENTER>");
          len = concatstrf(response, len,
              "<P>Transferring Data via Ethernet</P>\n<HR>");
          len = concatstrf(response, len,
              "<P>Time = <FONT COLOR=#00FF00> ");
          sprintf(str, "%u", time_s);
          len = concatstr(response, len, str);
          len = concatstrf(response, len, "</FONT></P>\n");
          len = concatstrf(response, len,
              "<P>Counter_1 = <FONT COLOR=#0000FF> ");
          sprintf(str, "%u", counter1);
          len = concatstr(response, len, str);
          len = concatstrf(response, len, "</FONT></P>\n");
          len = concatstrf(response, len,
              "<P>Counter_2 = <FONT COLOR=#FF0000> ");
          sprintf(str, "%u", counter2);
          len = concatstr(response, len, str);
          len = concatstrf(response, len, "</FONT></P>\n");
          len = concatstrf(response, len,
              "<P><A HREF=\".\">refresh</A><P></CENTER><HR>\n");
          time_cs = 0;
          time_s = 0;
          return len;
      }

      دیدگاه


        #4
        پاسخ : کمک در مورد انتقال داده با ethernet

        این مدار ارتباط بین میکرو و ENC28j60 را انجام داد اما از ENC28j60 به 20F001NG مشکل دارد.این مدار را توسط cross cable به کامپیوتر وصل می کنیم و باید دفعات فشرده شدن کلید را در کامپیوتر نشان دهد.در مدار من روی lcd اطلاعات را نشان می دهد و این به معنی ارتباط درست بین میکرو و ENC28j60 است

        دیدگاه


          #5
          پاسخ : کمک در مورد انتقال داده با ethernet

          شماتیک مدار هم می گذارم

          دیدگاه


            #6
            پاسخ : کمک در مورد انتقال داده با ethernet

            سلام ببخشید واسه من string.h رو نمیشناسه باید چیکار کنم ؟ من خیلی مبتدی ام تو این زمینه

            دیدگاه

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