Wizchip_cris_enter() & _exti()?

안녕하십니까?
w5500으로 tcp/ip에 입문하는 사람입니다.
study중 wizchip_conf.c중에 wizchip_cris_enter()와 _exit()함수가 있는데
이 함수들의 필요성 및 왜 사용하는지 어떻게 사용하는지를 잘 모르겠네요…
한수 부탁합니다. mcu는 atmel xmega128a1사용중입니다.

안녕하세요.

상기 두 함수는 타이밍이 중요한 SPI interface를 이용하여 W5500으로 access할 때 interrupt 루틴으로 빠지지 않도록 하기 위한 callback function입니다.

즉 interrupt를 disable 시켰다 다시 enable 시키기 위한 함수 입니다.

사용하기 위해서는 사용중인 MCU에 맞는 interrupt enable/disable 함수를 wizchip_cris_enter()/_exit() 함수에 직접 등록하여 사용하시거나

void reg_wizchip_cris_cbfunc(void(*cris_en)(void), void(*cris_ex)(void)) { if(!cris_en || !cris_ex) { WIZCHIP.CRIS._enter = wizchip_cris_enter; WIZCHIP.CRIS._exit = wizchip_cris_exit; } else { WIZCHIP.CRIS._enter = cris_en; WIZCHIP.CRIS._exit = cris_ex; } }
이 함수를 이용하여 callback function을 등록하여 사용하시면 됩니다.

감사합니다.

감사합니다.
spi통신 동안에 오류가 생길까봐 시작할때 인터럽트를 죽였다가 끝나면 살려야 된다는 말씀이시죠?
제가 맞게 이해 했나요?
그럼 mcu의 글로벌 인터럽트를 enable, disable해야 하는거지요?
빠른 답변 감사합니다.
종종 부탁드립니다. :smiley:

네 맞게 이해하셨습니다.

글로벌 인터럽트를 시작할때 disable 시켰다가 끝날때 enable 시키면 됩니다.

감사합니다.