سلام
چند روزیه دارم سر این ایسی کار میکنم . به نطر خیلی سر راست میاد ریجیسترها و برنامه اما من دیگه موندم . هر کاری میکنم جواب نمیده پینگش
شیلد 5100 ارداینو رو دارم با مگا 32 و اتمل استدیو مینویسم (برد ارداینو ندارم و نمیخوامم باهاش کار کنم اینم هیتر نداشتم شیلد گرفتم )
این برنامه خیلی سر راسته هر کاریش میکنم جواب نمیده میخواستم اساتید یه نگاه بهش بندازید . مرسی دوستان
یکم زیاد به نطر میاد اما بیشتر دیفاینه . مرسی . تو پروتئوس همه دیتا ها درست سند میشه با دیباگر نگاه کردم . mac رو همینجوری گذاشتم از رو مثال تو نت
ممنون میشم اگه کسی هم برنامه نمونه داره واسه پیمگ فقط بهم بده یا حداقل hex بده من تست کنمش
چند روزیه دارم سر این ایسی کار میکنم . به نطر خیلی سر راست میاد ریجیسترها و برنامه اما من دیگه موندم . هر کاری میکنم جواب نمیده پینگش
شیلد 5100 ارداینو رو دارم با مگا 32 و اتمل استدیو مینویسم (برد ارداینو ندارم و نمیخوامم باهاش کار کنم اینم هیتر نداشتم شیلد گرفتم )
این برنامه خیلی سر راسته هر کاریش میکنم جواب نمیده میخواستم اساتید یه نگاه بهش بندازید . مرسی دوستان
یکم زیاد به نطر میاد اما بیشتر دیفاینه . مرسی . تو پروتئوس همه دیتا ها درست سند میشه با دیباگر نگاه کردم . mac رو همینجوری گذاشتم از رو مثال تو نت
کد:
#include <avr/io.h> #define F_CPU 8000000 //FRIHZ #include <util/delay.h> //******************************************************************* ///Hardware PINS:EXTERNAL #define __delay_val 500 //******************************************************************* ///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 /////////////////////////////////Other registers Are Reserved By Chip //******************************************************************* //Common values: EXTERNAL //******************************************************************* ///MODE REG: #define V_C_MR 0x80 //B7:RST//If this bit is ‘1’, internal register will be initialized.cleared after reset //B6:Reserved //B5:Reserved //B4:Ping Block Mode//If the bit is set as ‘1’, there is no response to the ping request //B3:PPPoE Mode//0_Disable//use ADSL without router=Enable //B2:NA //B1:Address Auto-Increment //B0:IND //default:0b1000000 /////////////////////////// ///Gate way Adress: #define V_C_GAR_0 192 #define V_C_GAR_1 168 #define V_C_GAR_2 18 #define V_C_GAR_3 90 ///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 Hardware Address: #define V_C_SHAR_0 0x00 #define V_C_SHAR_1 0x16 #define V_C_SHAR_2 0x36 #define V_C_SHAR_3 0xde #define V_C_SHAR_4 0x58 #define V_C_SHAR_5 0xF6 ///Source IP Address: #define V_C_SIPAR0 192 #define V_C_SIPAR1 168 #define V_C_SIPAR2 18 #define V_C_SIPAR3 91 ///C_IRR= Read Only//SKIPPED_BITS Simular to Mask REG ///Interrupt Mask #define V_C_IRMR 0b01101110 //B7:IP Conflict Enable//when there is ARP request with same IP address as Source IP address//1=Enable //B6:UNREACH//Destination unreachable "USE ONLU IN UDP"//1=Enable //B5:PPPoE Connection Close//In the PPPoE Mode, if the PPPoE connection is closed, ‘1’ is set //B4:Reserved //B3:Occurrence of Socket 3 Socket Interrupt* //B2:Occurrence of Socket 2 Socket Interrupt* //B1:Occurrence of Socket 1 Socket Interrupt* //B0:Occurrence of Socket 0 Socket Interrupt* //default: 0b01101110 //*It is set in case that interrupt occurs at the socket - //For more detailed information of socket interrupt, refer to Socket x Interrupt Register - //This bit will be automatically cleared when Sx_IR is cleared to 0x00. /////////////////////////// ///Retry time: #define V_C_RTR_0 0x07 #define V_C_RTR_1 0xD0 //200Ms By def//1=1uS /////////////////////////// //Retry Count: #define V_C_RCR 4 //4 times by def /////////////////////////// //RX&TX Memory Size: #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:EQ to all /////////////////////////// //Authentication Type in PPPoE: #define V_C_PATR_0 #define V_C_PATR_1 //deafult:NA /////////////////////////// //PPP LCP Request Timer: #define V_C_PTIMER //deafult:NA /////////////////////////// //PPP LCP Magic number: #define V_C_PMAGIC //deafult:NA /////////////////////////// //Unreachable IP Address+3: #define V_C_UIPAR //deafult:NA /////////////////////////// //Unreachable Port: #define V_C_UPORTR //deafult:NA /////////////////////////// //******************************************************************* //Functions Start //******************************************************************* /////////////////////////////////////////////////////// //******************************************************************* //SPI Set //******************************************************************* void w_spi_init(void) { // Function: Bit7=Out Bit6=In Bit5=Out Bit4=Out Bit3=In Bit2=In Bit1=In Bit0=In DDRB=(1<<DDB7) | (0<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit7=0 Bit6=T Bit5=0 Bit4=0 Bit3=T Bit2=T Bit1=T Bit0=T PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // SPI initialization // SPI Type: Master // SPI Clock Rate: 62.500 kHz // SPI Clock Phase: Cycle Start // SPI Clock Polarity: Low // SPI Data Order: MSB First SPCR=(0<<SPIE) | (1<<SPE) | (0<<DORD) | (1<<MSTR) | (0<<CPOL) | (0<<CPHA) | (1<<SPR1) | (1<<SPR0); SPSR=(0<<SPI2X); } /////////////////////////////////////////////////////// //******************************************************************* //W5100 Write //******************************************************************* void W_write(int add,int data) { SPDR = (add & 0xFF00) >> 8; // Wait for transmission complete while(!(SPSR & (1<<SPIF))); // Start Wiznet W5100 Address Low Bytes transmission SPDR = add & 0x00FF; // Wait for transmission complete while(!(SPSR & (1<<SPIF))); // Start Data transmission SPDR = data; // Wait for transmission complete while(!(SPSR & (1<<SPIF))); } /////////////////////////////////////////////////////// //******************************************************************* //W5100 Common val set //******************************************************************* void w_c_init(void) { /////Mode W_write(C_MR,V_C_MR); _delay_ms(__delay_val); /////Gate away adress W_write(C_GAR , V_C_GAR_0); _delay_ms(__delay_val); W_write(C_GAR + 1 , V_C_GAR_1); _delay_ms(__delay_val); W_write(C_GAR + 2 , V_C_GAR_2); _delay_ms(__delay_val); W_write(C_GAR + 3 , V_C_GAR_3); //Subnet Mask W_write(C_SUBR , V_C_SUBR_0); _delay_ms(__delay_val); W_write(C_SUBR + 1 , V_C_SUBR_1); _delay_ms(__delay_val); W_write(C_SUBR + 2 , V_C_SUBR_2); _delay_ms(__delay_val); W_write(C_SUBR + 3 , V_C_SUBR_3); //Source Hardware Address W_write(C_SHAR , V_C_SHAR_0); _delay_ms(__delay_val); W_write(C_SHAR + 1 , V_C_SHAR_1); _delay_ms(__delay_val); W_write(C_SHAR + 2 , V_C_SHAR_2); _delay_ms(__delay_val); W_write(C_SHAR + 3 , V_C_SHAR_3); _delay_ms(__delay_val); W_write(C_SHAR + 4 , V_C_SHAR_4); _delay_ms(__delay_val); W_write(C_SHAR + 5 , V_C_SHAR_5); _delay_ms(__delay_val); /////Source IP Address W_write(C_SIPAR , V_C_SIPAR0); _delay_ms(__delay_val); W_write(C_SIPAR + 1 , V_C_SIPAR1); _delay_ms(__delay_val); W_write(C_SIPAR + 2 , V_C_SIPAR2); _delay_ms(__delay_val); W_write(C_SIPAR + 3 , V_C_SIPAR3); _delay_ms(__delay_val); /////Interrupt Mask+0 W_write(C_IRMR , V_C_IRMR); _delay_ms(__delay_val); /////Retry time W_write(C_RTR , V_C_RTR_0); _delay_ms(__delay_val); W_write(C_RTR + 1 , V_C_RTR_1); _delay_ms(__delay_val); ///////Retry Count W_write(C_RCR , V_C_RCR); _delay_ms(__delay_val); //////RX Memory Size W_write(C_RxMSR , V_C_RxMSR); _delay_ms(__delay_val); /////TX Memory Size W_write(C_TxMSR , V_C_TxMSR); _delay_ms(__delay_val); } int main(void) { _delay_ms(2000); w_spi_init(); w_c_init(); //s_c_init(); while (1) { } }
دیدگاه