اطلاعیه

Collapse
No announcement yet.

راه اندازی W5100 (مبدل usart <-> ethernet)

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

    راه اندازی W5100 (مبدل usart <-> ethernet)

    سلام
    چند وقتی بود میخواستم این بست رو بزنم .
    دیدم بحث زیادی رو محور اترنت بوده اما روی enc18j60 خیلی از دوستان مانور داشتن .
    راه اندازیش نسبتا سخته و من خودم جواب جالبی ازش نگرفتم و یک مشکل دیگش اینکه برنامش سنگینه رو هر میکرویی نمیشه ریخت و روی میکرویی که ریخته مشیه عملا اون میکرو کار دیگه ای نمیتونه بکنه و باید فقط برای کنترل سیستم اترنت ازش استفاده کرد . من تو تستی هم انجام دادم تو سرعت بالا هنگ داشت( البته ممکنه این از بی سوادیه من بوده باشه )
    اما ای سی w5100 با توجه این که بروتکل هارو داخل خودش به صورت سخت افزاری داره کار رو خیلی راحت میکنه و از لحاظ قیمتم زیاد تفاوتی ندارن (مخصوصا که w5100 با AT tiny هم حتی راه میوفته اما enc رو من رو مگا ۳۲ جواب گرفتم اونم نه خوب ! )
    رابط ای سی spi هست . مینومید شیلد w5100رو از هر جایی تهیه کنید خود فروشگاهم داره .
    ما اینجا راجب ارداینو و برنامه نویسیش حرف نمیزنیم
    این یه نمونه از برنامه :

    کد:
    #include &quot;w5100.h&quot;
    .
    .
    .
    void main(void)
    {  
      unsigned char datam;
      unsigned char data[100];
      RESET_PORT=0;
      usart_init(0,9600);
      delay_ms(1000);
      w_spi_init();
      RESET_PORT=1;
      w_c_init();
      socket0_init();
      socket0_open();
      socket0_listen();
      datam=W_read(C_MR); 
      putchr(datam);     
      delay_ms(__delay_val);     
      datam=W_read(C_SIPAR);
      putchr(datam);     
      delay_ms(__delay_val);
      putstring (&quot;START&quot;);
      while (1) 
      	{ 
      	datam=W_read(S0_IR);
      	putchr(datam);
      	if ((datam&amp;V_S0_IR_CLOSED)==V_S0_IR_CLOSED) 		//Disconnect
        	{
        	socket0_reset(); 
        	W_write(S0_IR,V_S0_IR_RESET);
        	}
        else if ((datam&amp;V_S0_IR_CON)==V_S0_IR_CON) 	    //CONNECTION 
        	{
        	s0_send(&quot;HI...&quot;);
        	W_write(S0_IR,V_S0_IR_CON); 	 	    //Erase The Flag
    		W_write(S0_IR,V_S0_IR_SEND_OK);  	    //Erase The Flag
        	}
        else if ((datam&amp;V_S0_IR_RECV)==V_S0_IR_RECV)  	//DATA RECV
        	{
         	s0_recv(data);				    //READ DATA
         	W_write(S0_IR,V_S0_IR_RECV);	 	    //Erase The Flag
         	putstring(&quot; data=&quot;);			    //SEND &quot; data=&quot; BY USART
         	putstring(data);			    //SEND data BY USART
         	s0_send(&quot;OK&quot;);				    //SEND BACK &quot;OK&quot; TO SERVER
    		W_write(S0_IR,V_S0_IR_SEND_OK);  	    //Erase The Flag
        	}
      	delay_ms(1000);   
      	}
    }
    تو این برنامه از هدر w5100.h استفاده شده که تو بست بعدی راجبش کامل توضیح میدم
    اما کلیت برنامه :
    اول از همه باید گفت ایسی w5100 یه ip میگیره و دارای ۴ تا سوکت هستش هر سوکت میتونه رو یه بورت تنطیم شه و \روتکل مخصوص خودش رو داره و این یعنی این ایسی ۴ تا کانکشن رو هندل میکنه و \روتکل های مختلف. قابلیت این رو هم داره که وسط کار بروتکل و یورتش عوض شه . اما من فعلا رو این هدر این قابلیت رو روش نزاشتم با یه دیفاین و کمی ور رفتن با کد این کار به راحتی قابل انجامه

    تو بر نامه بالا اتفاقاتی که افتاده :
    ۲ تا متغییر تعریف شده data برای دخیره اطلاعات که از شبکه میاد . datam برای دخیره و فرستادن وضعیت ایسی از طریق سریاله . ریست بورت هم خروجی هست که ریست ایسی رو کنترل میکنه
    کد:
    unsigned char datam;
      unsigned char data[100];
      RESET_PORT=0;
    دز خطوط بعدی سریال تنظیم شده . اون صفر یعنی اینترابت سریال خاموشه . بعدش یه وقفه 1 ثانیه . بعد spi تنظیم شده که بعدا راجبش که چجوری تنظیم شده صحبت میکنیم . خط بعد بایه ریست ۱ شده تا ایسی روشن شه و w_c_init ایسی w5100 رو تنظیم اولیه میکنه که بازم یعد راجبش صحبت میکنیم w_c_init مخفف w5100ـcontrolـinit هستش
    کد:
    usart_init(0,9600);
      delay_ms(1000);
      w_spi_init();
      RESET_PORT=1;
      w_c_init();
    همون طور که گفتم ایسی یه ip داره اما ۴ تا سوکت (socket 0 -3) که رو هر کدوم توش یه بورت باز میشه تو تابع w_c_init ما ip و subnet و ... رو تنطیم کردیم . حالا میاییم و socket 0 رو راه میندازیم نتظیماتی از قبیل اینکه اینکه سوکت الان رو چه بورتی هست و این که بروتکلش چیه و ...
    بعد انجام تنظیمات سوکت 0 میاییم و سوکت رو open میکنیم و بعدش با listen به سوکت گوش میدیم تا ببینیم کسی کانکت میشه یا نه :agree:
    کد:
      socket0_init();
      socket0_open();
      socket0_listen();
    بقیه کد تا قسمت while زیاد به کار نمیاد منم راجبش توضیح نمیدم :NO:
    اما قسمت while :
    کد:
    datam=W_read(S0_IR);
      	putchr(datam);
      	if ((datam&amp;V_S0_IR_CLOSED)==V_S0_IR_CLOSED) 		//Disconnect
        	{
        	socket0_reset(); 
        	W_write(S0_IR,V_S0_IR_RESET);
        	}
        else if ((datam&amp;V_S0_IR_CON)==V_S0_IR_CON) 	    //CONNECTION 
        	{
        	s0_send(&quot;HI...&quot;);
        	W_write(S0_IR,V_S0_IR_CON); 	 	    //Erase The Flag
    		W_write(S0_IR,V_S0_IR_SEND_OK);  	    //Erase The Flag
        	}
        else if ((datam&amp;V_S0_IR_RECV)==V_S0_IR_RECV)  	//DATA RECV
        	{
         	s0_recv(data);				    //READ DATA
         	W_write(S0_IR,V_S0_IR_RECV);	 	    //Erase The Flag
         	putstring(&quot; data=&quot;);			    //SEND &quot; data=&quot; BY USART
         	putstring(data);			    //SEND data BY USART
         	s0_send(&quot;OK&quot;);				    //SEND BACK &quot;OK&quot; TO SERVER
    		W_write(S0_IR,V_S0_IR_SEND_OK);  	    //Erase The Flag
        	}
      	delay_ms(1000);
    این ایسی داخلش دارای رجیستر هست . تابع w_read این ریجیستر هارو میخونه . S0_IR هم نام ریجیستر وقفه مربوط به سوکت 0 هست که نشون میده الان وضعیت سوکت 0 به چه شکله این که کسی بهش وصل شده یا نه و این که دیتا گرفتیم یا دیتامون ارسال شده و غیره . ما این ریجیستر رو میخونیم و دیتاشو میفرستیم با سریال به کامبیوتر (یا هر جا که سریال وصله !) یادتون باشه بعد خوندن هر بیت ریجیستر اونا باید به صورت دستی باک شن با توشتن ۱ داخلشون این کار قابل انجامه
    حالا یه چندتا حلقه If تعریف میکنم هر کدوم از این حلقه ها یه کاره خاصی انجام میدن :
    حلقه dicoonect :
    کد:
     	if ((datam&amp;V_S0_IR_CLOSED)==V_S0_IR_CLOSED) 		//Disconnect
        	{
        	socket0_reset(); 
        	W_write(S0_IR,V_S0_IR_RESET);
        	}
    اگر اطلاعات datam که همون ریجیستر s0_ir هست نشون بده که کانکشن از طرف کامبیوتر یا کلاینت close شده میایم و تابع سوکت ریست رو اجرا میکنیم این کار دوباره سوکت رو ریست و اماده میکنه یعنی دوباره open و listen رو واسش اجرا میکنه .یادتون باشه این ایسی بعد بسته شدن کانکشن از سمت کلاینت خودش دیسکانکت نمیشه و خودمون باید دستی این کارو بکنیم . تو خط بعدشم میاییم و برچمش رو باک میکنیم . به همین راحتی !!!! :biggrin:
    حلقه کانکت :
    تو این حلقه اتفاقات بررسی میشه که در صورت اتصال شخصی به ای بی ما اتفاق می افته :
    کد:
        else if ((datam&amp;V_S0_IR_CON)==V_S0_IR_CON) 	    //CONNECTION 
        	{
        	s0_send(&quot;HI...&quot;);
        	W_write(S0_IR,V_S0_IR_CON); 	 	    //Erase The Flag
    		W_write(S0_IR,V_S0_IR_SEND_OK);  	    //Erase The Flag
        	}
    این جا اگه یه کلاینت به ای بی ما وصل شه ما بهش یه سلام میدیم !! &quot;HI... &quot;به کلاینت سند میشه بعدش برچمهای مربوط به اتصال و سند باک میشه . یادتون باشه اگه برچمها باک نشن دوباره که بریم تو حلقه while میکرو فکر میکنه بازم کانکشن رخ داده ! و باز سلام میکنه !

    حلقه بعدی تایع دریافته :
    کد:
        else if ((datam&amp;V_S0_IR_RECV)==V_S0_IR_RECV)  	//DATA RECV
        	{
         	s0_recv(data);				    //READ DATA
         	W_write(S0_IR,V_S0_IR_RECV);	 	    //Erase The Flag
         	putstring(&quot; data=&quot;);			    //SEND &quot; data=&quot; BY USART
         	putstring(data);			    //SEND data BY USART
         	s0_send(&quot;OK&quot;);				    //SEND BACK &quot;OK&quot; TO SERVER
    		W_write(S0_IR,V_S0_IR_SEND_OK);  	    //Erase The Flag
        	}
    این جا اتفاقی که میوفته اینکه ما اطلاعاتی میگیریم اونارو داخل data میریم بعدش برچم دریافت رو خاموش و اطلاعات رو با سریال میدیم بش بره :mrgreen: بعدش که کارا انجام شد به کلاینت از طریق اترنت یه ok میدیم که بفهمه حله ! و بعدش چون یه ok دادیم خوب برچم send هم باس باک کنیم دیگه :angry:


    تو این برنامه ما اومدیم یه سرور ساختیم که وقتی بهش وصل میشیم hi میده , کد ارسالی رو میگیره با سریال از اونور میده و بعدش ok رو برمیگردونه به کلاینت .
    تمام توابع استفاده شده تو این بخش تو w5100.h هست که تو بست بعدی فردا در موردش حرف میزنم الان دستم خسته شد حوصلشم ندارم زیاده :mrgreen: :mrgreen: :mrgreen: :mrgreen:


    لینک دانلود :

    http://www.mediafire.com/download/nohax5o3qar0rlh/w5100.h
    اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
    هيتلر

    #2
    پاسخ : راه اندازی W5100 (مبدل usart &lt;-&gt; ethernet)

    سلام دوباره
    حالا میریم بررسی اینکه داخل کتابخونه چی هست !
    کتابخونه دو قسمت هست . اولی بخش define دومی بخش توابع . ااگر دیتا شیت رو بخونید احتمالا نیازی به خوندن این بست ندارید
    تو این بست ما دیفاین هرو کامل میگیم
    یه راه برای فهمیدن اینکه چه چیزی مقدار و چه چیزی ادرس اینکه : ادرسا ۱۶ بیتی و مقدارا ۸ بیتین
    دیفاینها چندتا حالت دارن تو این کتابخونه:
    ۱-اگه با v شروع بشن یعنی مقدارن و باید داخل ریجیستری ریخته بشت (v=value)
    ۲-اگه با c شروع بشن یعنی ادرسن و مشترکن مثل ip که کلن یدونست برای همه ۴ تا سوکت و کل ایسی . C=common
    ۳-اگه با s شروع بشن یعنی ادرسن و مال سوکت هستن . باید عدد بدیشون نگاه کنید . مثلا S0_IR یعنی سوکت 0 ـ اینترابت . s=socket
    ۴- یه چندتا ریجیستر کلی که با چیزه خاصی شروع نمیشن
    نام ریجیسترها و نام مقادیر با نامهای داخل دیتاشیت یکیه !! بس به راحتی میتونید چک کنید و در صورت لزوم دستکاری

    مثلا :
    C_MR = ادرس ریجیستر کنترل مد هستش . از توع مشترک . یعنی بین همه سوکتها مشترک هست و mr یعنی ریجیستر مد هست
    V_C_MR = مقدار هستش و باید این مقدار داخل C_MR که ادرسش هست ریخته بشه
    چجوری؟ تو بست بعد که راجبه توابع هست میگم !

    بخش اول :
    Common_registers:Main Defines
    ریجیسترهای مشترک . تعریف های کلی :
    کد:
    #define __delay_val 10
    ///////////////////////////////////
    #define WIZNET_WRITE_OPCODE 	0xF0    //Code to start Write
    #define WIZNET_READ_OPCODE 	0x0F	  //Code to start read
    ////////////////////////////////// 
    #define TX_BUF_MASK   	0x07FF   // Tx 2K Buffer Mask:
    #define RX_BUF_MASK   	0x07FF   // Rx 2K Buffer Mask:
    //////////////////////////////////
    #define TXBUFADDR 		0x4000   // W5100 Send Buffer Base Address
    #define RXBUFADDR 		0x6000   // W5100 Read Buffer Base Address
    خوب ۲ تا دیفاین اول کدهای استارت برای خواندن و نوشتن هستش (داخل دیتاشیت هست) این مدهارو قبل خوندن و نوشتن میفرستیم
    ۲تا کد دوم بافر ماسک ها هستن که بازم مقدارش تو دیتا شیت هست
    ۲ تا کد سوم نقاط شروع حافظه برای نوشتن و خوندن دیتای ورودی و خروجیه که بازم تو دیتاشیت هست ! :mrgreen: :mrgreen:

    بخش دوم :
    Common_registers:INTERNAL
    ریجیسترهای مشترک . داخلی ( این ریجیسترهای کنترلی)
    کد:
    #define C_MR   0x0000 	//Mode+0
    #define C_GAR   0x0001 	//Gate away adress_0x0004+3
    #define C_SUBR  0x0005 	//Subnet Mask_0x0008+3
    #define C_SHAR  0x0009 	//Source Hardware Address_0x000E+5
    #define C_SIPAR  0x000F 	//Source IP Address_0x0012+3
    #define C_IRR   0X0015 	//Interrupt+0///Refrenced To C_IRR_CON
    #define C_IRMR  0x0016 	//Interrupt Mask+0
    #define C_RTR   0x0017 	//Retry time_0x0018+1
    #define C_RCR   0x0019 	//Retry Count+0
    #define C_RxMSR  0x001A 	//RX Memory Size+0
    #define C_TxMSR  0x001B 	//TX Memory Size+0
    #define C_PATR  0x001C 	//Authentication Type in PPPoE+1
    #define C_PTIMER 0x0028 	//PPP LCP Request Timer+0
    #define C_PMAGIC 0x0029 	//PPP LCP Magic number+0
    #define C_UIPAR  0x002A 	//Unreachable IP Address+3
    #define C_UPORTR 0x002E 	//Unreachable Port
    اینا ادرسای ریجیسترای مشترکن . بهشون دست نباید زد مقدارا ثابته !
    این ادرسا از زوی دیتاشیت اومده و توضیح من بیخوده ! یه نمونه از سوکشم میزارم بعدش میرم سراغ اونایی که اولشون v داره که مقداراو بگم دیگه :mrgreen:
    اینم سوکتش:
    کد:
    //*******************************************************************
    //Socket_registers.Socket0:
    //*******************************************************************
    #define S0_MR   0x0400 	//Mode register+0
    #define S0_CR   0x0401 	//Socket 0 Command+0
    #define S0_IR   0x0402 	//Socket 0 Interrupt+0
    #define S0_SR   0x0403 	//Socket 0 Status+0
    #define S0_PORT  0x0404 	//Socket 0 Source Port+1
    #define S0_DHAR  0x0406 	//Socket 0 Destination Hardware Address+5
    #define S0_DIPR  0x040C 	//Socket 0 Destination IP Address+3
    #define S0_DPORT 0x0410 	//Socket 0 Destination Port+1 
    #define S0_MSSR0 0x0412 	//Socket 0 Maximum Segment Size+1
    #define S0_PROTO 0x0414 	//Socket 0 Protocol in IP Raw mode+0
    #define S0_TOS  0x0415 	//Socket 0 IP TOS+0
    #define S0_TTL  0x0416 	//Socket 0 IP TTL+0
    #define S0_TX_FSR 0x0420 	//Socket 0 TX Free Size+1
    #define S0_TX_RD 0x0422 	//Socket 0 TX Read Pointer+1
    #define S0_TX_WR 0x0424 	//Socket 0 TX Write Pointer+1
    #define S0_RX_RSR 0x0426 	//Socket 0 RX Received Size+1
    #define S0_RX_RD 0x0428 	//Socket 0 RX Read Pointer+1
    //////////////////////////////////Other registers Are Reserved By Chip
    خوب حالا میریم واسه مقادیر:
    در ادامه بیتهای که توضیح داده نشده دیتا شیت رو نگاه کنید یا خود کتابخونه اطلاعات زیادی داره که من اینجا نزدم حجم بالا نره
    اول اینه:
    کد:
    #define V_C_MR 0x80
    تو این جا ما اومدیم بیت اخر رو روشن کردیم یه بار ریست نرم افزاری شه
    خودش بعد ریست باک میکنه بیت رو
    بیت ۴ هم برای ping block حتما باید 0 باشه
    بقیه بیتها فعلا اارزشی ندارن برای اطلاعات بیشتر دیتا شیت رو نگاه کنید
    کد:
    ///Gate way Adress:
    #define V_C_GAR_0 192
    #define V_C_GAR_1 168
    #define V_C_GAR_2 1
    #define V_C_GAR_3 100
    خوب این ادرش گیت میتونید ادرس مودمتون رو بدید اگه ادرس مودم رو ندارید از برنامه advanced ip scaner استفاده کنید
    کد:
    ///Sub Net Mask:
    #define V_C_SUBR_0 255
    #define V_C_SUBR_1 255
    #define V_C_SUBR_2 255
    #define V_C_SUBR_3 0
    این جا ساب نت رو مشخص میکنید که اوصلا همینه (من تا حالا مورد دیگه ندیدم !)
    کد:
    ///Source IP Address:
    #define V_C_SIPAR0 192
    #define V_C_SIPAR1 168
    #define V_C_SIPAR2 1
    #define V_C_SIPAR3 13
    اینجام ای بی تونه . ای بی خود ای سی
    کد:
    #define V_C_IRMR 0xEF
    اینم اینترابتای کلی رو ماسک میکنه که همه روشنه به غیر از بیت ۷ . نیازی نست بیت ۷ . توضیح بیشتر تو دیتا شیت
    کد:
    #define V_C_RTR_0 0x07
    #define V_C_RTR_1 0xD0
    خوب این میزان زمان برای سعی دوبارست . اینکه مقدار از کجا اومده باز دیتا شیت
    کد:
    #define V_C_RCR 4
    اینجا هم میزان تعداد بارایی هست که اگر دیتا خطا بده یا یینگ نده مقصد دوباره سعی میکنه ایسی به صورت خودکار قبل از این که بخواد به شما اطلاع بده
    کد:
    #define V_C_RxMSR 0x55
    #define V_C_TxMSR 0x55
    //B0.1=Socket0
    //B2.3=Socket1
    //B4.5=Socket2
    //B6.7=Socket3
    //00=1kB___11=8KB
    //default:8KB/4
    اینجا شما تسیم بندی حافظه بین سوکتارو دارید اگه فقط از یه سوکت استفاده میکنید میتونید کل حافطه رو بدید به همون . اما چون دستکاری تو سایز بافرای بالا داره بهتر دست بهش نزنید
    حالا میریم سراغ سوکت ها :
    کد:
    //Mode register
    #define V_S0_MR 0b00100001
    //B7:Multicasting//1=Enable//UDP ONLY
    //B6:Reserved
    //B5:ND/MC//Use No Delayed ACK//It is applied only in case of TCP.//1=Enable
    //B4:Reserved
    //B3:Protocol*
    //B2:Protocol*
    //B1:Protocol*
    //B0:Protocol*
    //default:0b00100001//TCP 
    //*Protocol:TCP:0001//UDP:0010//Close:0000//REFER TO DATASHEET
    خو ب ما مد رو گداشتیم رو TCP و delay رو هم ورداشتیم با ۱ کردنش

    کد بعدی
    کد:
    #define V_S0_CR_OPEN   0x01
    #define V_S0_CR_LISTEN  0x02 //It is only used in TCP mode	//TCP CLIENT
    #define V_S0_CR_CONNECT  0x04 //It is only used in TCP mode	//TCP SERVER
    #define V_S0_CR_DISCON  0x08 //It is only used in TCP mode	//SERVER
    #define V_S0_CR_CLOSE   0x10 //It is used to close the socket
    #define V_S0_CR_SEND   0x20 //It transmits the data as much as the increased size of Socket n TX Write Pointer*
    #define V_S0_CR_MAC    0x21 //It is used in UDP mode	//The basic operation is same as SEND
    #define V_S0_CR_KEEP   0x22 //It is only used in TCP mode	//It checks the connection by sending 1byte data//PING
    #define V_S0_CR_RECV   0x40 //Receiving is processed with the value of Socket n RX Read Pointer Register
    اینا کدهایی هست که به سوکت میگن چی کار کنه ! وصل شه قطع شه بفرسته بگیره و .... فکر میکنم از اسم مشخصه هر کدوم چی هستن

    کد:
    #define V_S0_IR_SEND_OK  0x10 //SEND FLAG
    #define V_S0_IR_TIMEOUT  0x08	//TIME OUT FLAG
    #define V_S0_IR_RECV   0x04	//RECV FLAG
    #define V_S0_IR_DISCON  0x02 //DISCONNECT FLAG
    #define V_S0_IR_CON    0x01	//CONNECTION FLAG
    #define V_S0_IR_CLOSED  0x00	//CLOSED SOCKET FLAG
    #define V_S0_IR_RESET   0xFF //RESET SOCKET
    از اینا برای خوندن وقفه و باک کردنشون استفاده میشه باید با S0_IR چک شن . نمونه برنامش تو بست بالا هست
    کد:
    #define V_S0_PORT_0 	0x1F
    #define V_S0_PORT_1 	0x90
    این مهمه . شماره \ورتی که رو این سوکت هت رو مشخص میکنه . الان رو ۸۰۸۰ تنظیمه

    کد:
    //Socket 0 Destination IP Address+3 :
    #define V_S0_DIPR_0 	192  
    #define V_S0_DIPR_1 	168
    #define V_S0_DIPR_2 	1
    #define V_S0_DIPR_3 	50
    اینم ادرس سرور رو در خودش داره که اگه از این سوکت به عنوان کلاینت استفاده میشه یه کار میاد . البته من تا حالا ازش استفاده نکردم همیشه میکرو سرور بوده

    بسیار خوب اینم از این بست بعد ایشالا میریم واسه توابع
    اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
    هيتلر

    دیدگاه


      #3
      پاسخ : راه اندازی W5100 (مبدل usart &lt;-&gt; ethernet)




      &lt;&lt;&lt;&lt;&lt;&lt;&lt;رزرو&gt;&gt;&gt;&gt;&g t;&gt;&gt;
      اشکهايي که پس از هر شکست ميريزيم همان عرقيست که براي پيروزي نريخته ايم.
      هيتلر

      دیدگاه


        #4
        پاسخ : راه اندازی W5100 (مبدل usart &lt;-&gt; ethernet)

        خیلی ممنون اقا سعید از مطالبتون واقعا مفید هستن
        ما منتظر مابقی مطالبتون هستیم
        ممنون

        دیدگاه


          #5
          پاسخ : راه اندازی W5100 (مبدل usart &lt;-&gt; ethernet)

          سلام
          من شیلد مینی w5100 گرفتم (int نداره)
          خواستم با میکرو atmega32 راه اندازیش کنم و اطلاعات چند سنسور بر روی شبکه بفرستم
          یه برنامه نمونه دارید؟ اگه راهنمایی کنید ممنون میشم

          دیدگاه

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