Avr초보질문

qw00wp의 이미지

switch_hit()

◦ 스위치가 눌려지는 순간에만 1을 반환하는 함수

uint8_t switch_hit(void)

{ static uint8_t prev_state = _BV(SW2); //여기서 스태틱 함수를 왜사용하는거죠..? 스태틱함수가 없으면 어떤일이일어나나요

uint8_t cur_state;

cur_state = PINE&_BV(SW2);
if(prev_state != cur_state)

{

prev_state = cur_state;

if(!cur_state) return 1;

else return 0;

} else return 0;
위함수에서 스우치누를때 바운싱현상 해결하려면
코드를 어떻게 바꾸어야하나요?

라스코니의 이미지

스태틱 함수가 아니라 스태틱 변수이고요, 함수가 맨 처음 실행될 때 단 한번 실행됩니다. 그래서 init() 함수를 안 사용해도 초기화가 가능하죠 (간단한 경우에는요).

bushi의 이미지

static 변수이고, 다른 함수에서 이 변수를 참조하지 못한다는 것을 제외하면 전역 변수와 동일합니다.

chocokeki의 이미지

바운싱이 채터링 말씀하시는 건가요?
MCU마다 다르겠습니다만 Atmel사의 MCU중 어떤 제품은 하드웨어적으로 이를 지원합니다
glitch filter 를 enable하면 PIO의 input에서 그런 문제를 없애주네요