[Codevision]OK-128 kit 스위치 상승펄스 캣치

[Codevision]OK-128 kit 타이머0를 이용해 입력 채터링 방지 방법 위 링크의 소스를 토대로 작성됨. 만약 아래와 같은 코드를 사용해 어떤 값을 증가시킨다면 엄청난 속도로 값이 증가될 것이다. if(TIMER_KEY3>=KEYTIME){adr++;} 키가 한번 눌리면 1회만 증가시킬 필요가 있는데 아래 소스를 참고해보자.

 

[Codevision]OK-128 kit 타이머0를 이용해 입력 채터링 방지 방법

스위치로 입력받아 사용하면  물리접촉에 의한 필연적 구조 때문에”chattering”이 발생한다. 이 채터링을 “debouncing” 해야 한다는 말은 많이들 들었을 것이다.   흔한 debouncing 기법은 delay함수를 통해 약 20ms내외로 지연시키는 방법이 일반적이다. 이번 예제는 타이머 인터럽트를 통해 사용하는 소개한다. delay 함수를 쓰지 않으니 효율적인 프로그래밍이 가능하다. 1. 10ms마다 타이머0 오버플로우 인터럽트 루틴에 진입한다. 2. 스위치마다 타이머 변수가 있고 키가 …

Continue reading ‘[Codevision]OK-128 kit 타이머0를 이용해 입력 채터링 방지 방법’ »

[Codevision] printf 함수 usart0, 1, 2, 3 으로 임의 변경해서 쓰기.

printf() 함수는 디버깅에 아주 유용하게 쓰이고 있다.  하지만 기존설정은 USART0에 고정되어 있어 제약이 생겨 이를 변경할 경우가 생기는데 이 때 유용한 방법이다. “CodeVisionAVR User Manual”에 해당내용이 있어 발췌해 왔다. #define _ALTERNATE_PUTCHAR_ #define _ALTERNATE_GETCHAR_ 기존 printf에서 사용하는 putchar(),getchar()함수 기능을 교체하는것이 핵심이다. 따라서. putchar(),getchar() 함수를 다시 지정하여 USARTx에 사용 가능하도록 하는 것이다. USART1에 사용하도록 설정한 예제니 참고하기 바란다. …

Continue reading ‘[Codevision] printf 함수 usart0, 1, 2, 3 으로 임의 변경해서 쓰기.’ »