Wiznet 이니셜 꼭 해줘야 되는것인가요?

W5100에 TCP 서버 모드로 구동시킬려는데 안되서 질문드려요.
SPI 모드로 사용할려고 하는데 위에 인터럽트나 외부메모리 관련 설정을 하면 다른 동작들도 다 안되는데
저는 SPI 모드로 동작하니까

  1. 인터럽트 관련 설정들은 전부 사용안해도 되는것인지…
  2. 외부메모리 설정은 외부메모리를 사용하지 않았는데 해줘야 되는 것인지 궁금합니다.
    void InitWiznet(void)
    {
    // cli();
    #ifndef DEF_IINCHIP_INT
    EICRA=0x00;
    EICRB=0x00;
    EIMSK=0x00;
    EIFR=0x00;
    #else
    EICRA = 0x00; // External Interrupt Control Register A clear
    EICRB = 0x02; // External Interrupt Control Register B clear // edge
    EIMSK = (1 << INT4); // External Interrupt Mask Register : 0x10
    EIFR = 0xFF; // External Interrupt Flag Register all clear
    // DDRE &= ~(1 << INT4); // Set PE Direction
    // PORTE |= (1 << INT4); // Set PE Default value
    #endif

#if (ATMEGA128_NUM_WAIT == ATMEGA128_0WAIT)
MCUCR = 0x80;
XMCRA=0x40;
XMCRB = 0x00; // disable bus keeper, use PC0-PC7 as address
#elif (ATMEGA128_NUM_WAIT == ATMEGA128_1WAIT)
MCUCR = 0xc0; // MCU control regiseter : enable external ram
XMCRA=0x40; // External Memory Control Register A :
// Low sector : 0x1100 ~ 0x7FFF
// Upper sector : 0x8000 ~ 0xFFFF
XMCRB = 0x00; // disable bus keeper, use PC0-PC7 as address
#elif (ATMEGA128_NUM_WAIT == ATMEGA128_2WAIT )
MCUCR = 0x80;
XMCRA=0x42;
XMCRB = 0x00; // disable bus keeper, use PC0-PC7 as address
#elif (ATMEGA128_NUM_WAIT == ATMEGA128_3WAIT)
MCUCR = 0xc0;
XMCRA=0x42;
XMCRB = 0x00; // disable bus keeper, use PC0-PC7 as address
#else
#error “unknown atmega128 number wait type”
#endif

#if (__DEF_IINCHIP_BUS__ == __DEF_IINCHIP_SPI_MODE__)
//SPI Initialize

IINCHIP_SpiInit();

IINCHIP_CSInit();
IINCHIP_CSon();

#endif  

// sei(); // enable interrupts
}

안녕하세요 :slight_smile:

W5100을 사용하기 위해서는 SPI 설정만 하시면 됩니다. 물론 Interrupt를 사용하시고자 하면 Interrupt도 설정을 하셔야하구요

외부 메모리같은 경우에는 eeprom에서 mac주소를 읽어 W5100 register에 써주는 부분 같습니다. 즉 외부메모리를 사용하지 않으시면 직접 W5100 register에 mac주소를 써주시면 되고 해당부분은 삭제해도 됩니다.

다음부터는 라이브러리 버전과 사용하신 예제를 알려주시면 더 빠른 답변이 가능할 것 같습니다 ^^

감사합니다.

네 감사합니다!