CURRENT ISSUE
Contests
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++);
|