CURRENT ISSUE

Contests

bottom corner

Feature Article



Issue #208 November 2007
Analog Techniques
iEthernet Bootcamp
Get Started with the W5100

by Fred Eady

Start | WIZnet W5100 | Build A Development Board | WIZnet W5100 Garage Code| Congratulations! | Sources & PDF

BUILD A DEVELOPMENT BOARD

Listing 1—You won’t find this level of coding in the W5100 datasheet examples. Nothing will whizz about without these base register I/O routines.

char gwayipaddrc[4] = {192,168,0,1};
char svrmacaddrc[6];

#define make8(var,offset) ((unsigned int)var >> (offset * 8)) & 0x00FF
#define TO_WIZ		TRISF = 0x00
#define FROM_WIZ	TRISF = 0xFF

***************************************
void wr_wiz_addr(unsigned int addr)
{
	addr_hi = (make8(addr,1));
	addr_lo = addr & 0x00FF;
}
void wr_wiz_reg(char reg_data,unsigned int reg_addr)
{
	TO_WIZ;
	wr_wiz_addr(reg_addr);
	data_out = reg_data;
	clr_WR;
	NOP();
	set_WR;
	FROM_WIZ;
}
char rd_wiz_reg(unsigned int reg_addr)
{
	char data;
	wr_wiz_addr(reg_addr);
	clr_RD;
	NOP();			
	data = data_in;
	set_RD;
	return(data);
}
***************************************
clr_RSET;
msecs_timer2 = 0;
while(msecs_timer2 < 2);
set_RSET;
addri = GAR0;
for(i8=0;i8<4;++i8)
  wr_wz_reg(gwayipaddrc[i8],addri++);
addri = GAR0;
for(i8=0;i8<4;++i8)
  svrmacaddrc[i8] = rd_wz_reg(addri++);

 


bottom corner