Wizchip_cris_enter() & _exti()?


#1

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


#2

안녕하세요.

상기 두 함수는 타이밍이 중요한 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을 등록하여 사용하시면 됩니다.

감사합니다.


#3

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


#4

네 맞게 이해하셨습니다.

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

감사합니다.