'-------------------------------------------------------------- ' Atmega168 and WIZ810MJ All you need to get a PING working '-------------------------------------------------------------- $regfile = "m168def.dat" $crystal = 8000000 $baud = 9600 $hwstack = 64 $swstack = 64 $framesize = 64 'Common registers Const W5100_mr = &H0000 'Gateway address registers Const W5100_gar0 = &H0001 Const W5100_gar1 = &H0002 Const W5100_gar2 = &H0003 Const W5100_gar3 = &H0004 'Subnet mask Address registers Const W5100_subr0 = &H0005 Const W5100_subr1 = &H0006 Const W5100_subr2 = &H0007 Const W5100_subr3 = &H0008 'Source Hardware Address registers Const W5100_shar0 = &H0009 Const W5100_shar1 = &H000A Const W5100_shar2 = &H000B Const W5100_shar3 = &H000C Const W5100_shar4 = &H000D Const W5100_shar5 = &H000E 'Source IP Address registers Const W5100_sipr0 = &H000F Const W5100_sipr1 = &H0010 Const W5100_sipr2 = &H0011 Const W5100_sipr3 = &H0012 Dim Value As Byte Dim Adres As Word Dim Adresl As Byte At Adres Overlay Dim Adresh As Byte At Adres + 1 Overlay ' 0 = long board ' 1 = sandwichboard Const Board = 1 'Used Wiz5100 ports and pins Wiz5100_cs Alias Portb.2 'Chipselect WIZ810MJ Print "Start.." #if Board 'sandwichboard Wiz5100_res Alias Portd.3 'reset of WIZ810MJ #elseif Wiz5100_res Alias Portc.0 'long board #endif 'Used ports and pins Config Wiz5100_cs = Output Config Wiz5100_res = Output 'Configuration of the SPI-bus Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 0 'Init the spi pins Spiinit 'Here we declare the used sub routines Declare Sub Wiz5100_init Declare Sub Wiz5100_readvalue(byval Reg As Word) Declare Sub Wiz5100_writevalue(byval Reg As Word , Byval Value As Byte) Declare Sub Wiz5100_reset Dim Wiz5100_opcode_read As Byte Wiz5100_opcode_read = 15 Dim Wiz5100_opcode_write As Byte Wiz5100_opcode_write = 240 Call Wiz5100_init 'We initialize the Wiz810MJ End Sub Wiz5100_init Call Wiz5100_reset 'Hardware reset 'Register reset Call Wiz5100_writevalue(w5100_mr , &H80) 'Set gateway IP adress Call Wiz5100_writevalue(w5100_gar0 , 192) Call Wiz5100_writevalue(w5100_gar1 , 168) Call Wiz5100_writevalue(w5100_gar2 , 0) Call Wiz5100_writevalue(w5100_gar3 , 254) 'Set Subnetmask Call Wiz5100_writevalue(w5100_subr0 , 255) Call Wiz5100_writevalue(w5100_subr1 , 255) Call Wiz5100_writevalue(w5100_subr2 , 255) Call Wiz5100_writevalue(w5100_subr3 , 0) 'Set MAC Call Wiz5100_writevalue(w5100_shar0 , &H00) Call Wiz5100_writevalue(w5100_shar1 , &H10) Call Wiz5100_writevalue(w5100_shar2 , &H20) Call Wiz5100_writevalue(w5100_shar3 , &H30) Call Wiz5100_writevalue(w5100_shar4 , &H40) Call Wiz5100_writevalue(w5100_shar5 , &H50) 'Set own IP adress Call Wiz5100_writevalue(w5100_sipr0 , 192) Call Wiz5100_writevalue(w5100_sipr1 , 168) Call Wiz5100_writevalue(w5100_sipr2 , 0) Call Wiz5100_writevalue(w5100_sipr3 , 50) End Sub Sub Wiz5100_readvalue(reg) Adres = Reg Reset Wiz5100_cs Spiout Wiz5100_opcode_read , 1 Spiout Adresh , 1 Spiout Adresl , 1 Spiin Value , 1 Set Wiz5100_cs End Sub Sub Wiz5100_writevalue(reg , Value ) Adres = Reg Reset Wiz5100_cs Spiout Wiz5100_opcode_write , 1 Spiout Adresh , 1 Spiout Adresl , 1 Spiout Value , 1 Set Wiz5100_cs End Sub Sub Wiz5100_reset Wiz5100_res = 1 Waitms 10 Wiz5100_res = 0 Waitms 30 Wiz5100_res = 1 End Sub